Ignorowanie przecinków i innych znaków
Ostatnio zmodyfikowano 2019-01-16 23:34
artblow Temat założony przez niniejszego użytkownika |
Ignorowanie przecinków i innych znaków » 2019-01-15 16:46:56 Witam, poszukuje funkcji, która potrafi ignorować znaki z kodu ASCII od 33 do 48, 58-64 i tak dalej. Wszystko co jest różne od spacji,liter i liczb tak właściwie. Pisanie tego w funkcji if chyba nie jest zbyt powalające. Program dostaje linie tekstu z błędami i musi ją poprawić tak aby nie zawierała znaczków nie potrzebnych. Dziękuję serdecznie za pomoc |
|
pekfos |
» 2019-01-15 16:49:23 |
|
tirurir |
» 2019-01-16 23:34:33 Spodobał mi się ten przykład, zacząłem pisać swój kod i wydaje mi się, że jestem na dobrym tropie ale pozerkam na niego jeszcze za dnia żeby doprowadzić otrzymywany wynik do porządku. Aktualnie kod tak się prezentuje: #include <iostream> #include <cstdlib> #include <cstring> using namespace std;
int main(){ char tekst[]="Zielony 23'&# ziemniak"; //tekst do poprawy int licznik; //przechowuje dlugosc tekstu ktory pozniej otrzymamy int i = 0; //licznik indeksu dla starego tekstu
for( i = 0; i<strlen(tekst);i++ )//petla zliczajaca dlugosc tekstu ktory pozniej otrzymamy { if( !(tekst[i] > 33 && tekst[i] < 48 ) && !( tekst[i] > 58 && tekst[i] < 64 ) )//warunek porownawczy { licznik++; } }
char *nowy; //wskaznik potrzebny do alokacji nowy = (char*)malloc(licznik * sizeof(char)); //alokacja stringa 'nowy' do umieszczenia w nim poprawionego tekstu
int j = 0; //dodatkowy licznik indeksu dla nowego tekstu for( i = 0; i<licznik; i++)//petla przepisujaca tekst z pominieciem zbednych znakow { if( !(tekst[i] > 33 && tekst[i] < 48 ) && !( tekst[i] > 58 && tekst[i] < 64 ) )//juz nam znany warunek { nowy[j]=tekst[i]; j++; } }
nowy[strlen(nowy) - 1 ] = '\0'; //upewnia sie ze 'nowy' ma zakonczenie cout<<nowy<<endl; //wypisz wynik
system("pause"); return 0; }
Po doprowadzeniu wyniku do porządku upewniłbym się tylko czy tekst nie jest o 1 znak za krótki. Wtedy wystarczy go lekko zmienić. Możliwe, że 1 znak będzie ucięty przez EOF ale nie miałem już o tej porze siły nad tym myśleć. |
|
« 1 » |