W ramach projektu WEGA naukowcom udało się odczytać sygnały radiowe pochodzące
z przestrzeni kosmicznej. Po wstępnej obróbce zapisali je do pliku sygnaly.txt.
W pliku sygnaly.txt znajduje się 1000 wierszy. Każdy wiersz zawiera jedno niepuste
słowo złożone z wielkich liter alfabetu angielskiego. Długość jednego słowa nie przekracza 100
znaków.
Napisz program(y), który(e) da(dzą) odpowiedzi do poniższych zadań. Odpowiedzi zapisz
w pliku wyniki4.txt, a każdą odpowiedź poprzedź numerem oznaczającym odpowiednie
zadanie.
Uwaga: Plik przyklad.txt zawiera dane przykładowe spełniające warunki zadania.
Odpowiedzi dla danych z pliku przyklad.txt są podane pod pytaniami.
A teraz zadanie 4.3
W tym zadaniu rozważmy odległość liter w alfabecie – np. litery A i B są od siebie oddalone
o 1, A i E o 4, F i D o 2, a każda litera od siebie samej jest oddalona o 0. Wypisz wszystkie
słowa, w których każde dwie litery oddalone są od siebie w alfabecie co najwyżej o 10. Słowa
wypisz w kolejności występowania w pliku sygnaly.txt, po jednym w wierszu.
Na przykład CGECF jest takim słowem, ale ABEZA nie jest (odległość A – Z wynosi 25).
I pytanie - dlaczego mój kod nie działa?
#include <iostream>
#include <fstream>
using namespace std;
int main()
{ ifstream wejscie;
ofstream wyjscie;
string t[1000];
wejscie.open("sygnaly.txt");
for (int i=0; i<1000; i++)
{
wejscie >> t[i];
}
wejscie.close();
for (int z=0; z<1000; z++) //przeszukiwanie słów
{
for(int x=0; x<(t[z].length()-1)*2; x++)
for(int k=t[z].length(); k>=0; k--)
if(t[z][x]-t[z][ k ]<11 or t[z][x]-t[z][k] >-11 )
{
cout<<t[z];
}
}
system("pause");
}
I tak, wiem że kod nie jest optymalny, bo optymalne porównanie nie porównuje dwa razy tych samych danych w tablicy tylko w odwróconej kolejności. Ale to nie działa w ogóle jak powinno.