Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ignorowanie przecinków i innych znaków

Ostatnio zmodyfikowano 2019-01-16 23:34
Autor Wiadomość
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
P-173594
pekfos
» 2019-01-15 16:49:23
P-173595
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ć.
P-173609
« 1 »
  Strona 1 z 1