• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Odszyfrowanie słów o nieparzystej ilości liter

Object Storage Arubacloud
0 głosów
410 wizyt
pytanie zadane 11 grudnia 2022 w C i C++ przez polandonion Mądrala (7,040 p.)
zamknięte 11 grudnia 2022 przez polandonion

Witam, mam problem z odszyfrowaniem słów. Mój kod zdaje się nie posiadać defektów, a mimo to nie przechodzi 100% testów. Z wyników wynika, że mój algorytm nie odszyfrowuje bezbłędnie słów o nieparzystej ilości liter. Dziwi mnie to, gdyż mój program działa dobrze dla moich testów (również tych, w których występują słowa o nieparzystej ilości liter). Byłbym wdzięczny za wskazanie błędu w kodzie, który odpowiada za niepoprawną analizę słów o nieparzystej ilości liter. Dziękuję z góry za komentarze, odpowiedzi :D.

Zadanie: link

Wyniki:

Kod:

#include <bits/stdc++.h>

using namespace std;

char arr[5][5]; //tablica liter
int row[200], col[200]; //tablica przechowuje rzad i kolumne znaku

bool let(char c) {
	return (c >= 'A' and c <= 'Z'); //zwraca 1 (true), gdy znak jest duza litera
}

int main() {
	string alp; //alfabet 25-literowy o duzych literach alfabetu lacinskiego (bez 'X')
	cin >> alp;
	for (int i = 0; i < 5; i ++) {
		for (int j = 0; j < 5; j ++) {
			arr[i][j] = alp[i * 5 + j]; //wczytanie liter do dwuwymiarowej tablicy arr
			col[arr[i][j]] = j; //zapisanie kolumny litery
			row[arr[i][j]] = i; //oraz wiersza
		}
	}

	string str;
	getline(cin, str); //pozbycie sie buforu z cin'a
	getline(cin, str);
	
	for (int i = 0; i < str.size() - 1; i ++) {
		char x, y; //zmienne pomocnicze (x i y) zajmuja mniej miejsca w kodzie (zwiekszenie czytelnosci)
		x = str[i];
		y = str[i + 1];
		if (!let(x) or !let(y)) //jesli x lub y nie jest litera (czyli jesli wystapila spacja)
			continue;
		if (row[x] == row[y]) {
			str[i] = arr[row[x]][(col[x] + 4) % 5]; //przesuniecie o jeden w lewo czyli o cztery do przodu
			str[i + 1] = arr[row[y]][(col[y] + 4) % 5];
		} else if (col[x] == col[y]) {
			str[i] = arr[(row[x] + 4) % 5][col[x]];
			str[i + 1] = arr[(row[y] + 4) % 5][col[y]];
		} else {
			str[i] = arr[row[x]][col[y]];
			str[i + 1] = arr[row[y]][col[x]];
		}
		i ++; //gdy poprawnie odszyfrowalem dwie litery przesuwam sie do przodu o jeden (petla for przesunie mi jeszcze o jeden czyli lacznie o dwa)
	}
	cout << str;
}

 

komentarz zamknięcia: watek zakonczony

1 odpowiedź

0 głosów
odpowiedź 11 grudnia 2022 przez polandonion Mądrala (7,040 p.)

https://ideone.com/tlyDDP
Juz dziala; nie przeczytalem ze zrozumieniem tresci. Najpierw trzeba bylo pozbyc sie spacji, potem odszyfrowac a na koniec przywrocic spacje.

Podobne pytania

0 głosów
1 odpowiedź 756 wizyt
0 głosów
1 odpowiedź 223 wizyt
pytanie zadane 6 grudnia 2022 w Bezpieczeństwo, hacking przez icihao Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 385 wizyt

92,568 zapytań

141,424 odpowiedzi

319,634 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...