Znajdowanie liter w tekscie (Jezyk C)
Mam taki problem:
musze napisac w C taki programik co:
1. Pobiera text z pliku i wyswietla go na ekran.
2. Pyta się o ile ma przesunąć kaźdą literke do przodu i przesunać ją np jeśli o 1 to a zmienia sie na b itd.
3. Wyswietlic tak zmieniony text.
(To mam zrobione,teraz to na czym utknałem:)
4 Znalezc w tekscie (tym z pliku) literką a i wypisac ile razy wystepuje w calym tym tekscie,znalezc b i to samo i tak przez caly alfabet az po z.
Potrafie zrobic aby znajdowalo poszczegolna literę a LUB b LUB c itd ale chcialbym bez powtarzania 26 razy tej samej funkcji to napisac.
Na dole przedstawiam to jak u mnie wyglada, i proszę o jakas sugestie zmian jak to zrobic.(Plik z textem to "txt.txt") Z góry dzieki.
#define maxtab 1000
#include
#include
main()
{
int i,h,dlugosc,a=0,j,t;
char text[maxtab];
char zakodowany[maxtab];
char alf[26];
char tab[26];
FILE *plik;
plik=fopen ("txt.txt", "r");
clrscr();
if (plik!=NULL) printf("Plik istnieje tekst z pliku: ");
fgets(text,maxtab,plik);
printf("%s ", text);
printf ("O ile przesunac?");
scanf ("%i", &h);
printf ("Pzesuniecie o %i ",h);
dlugosc=strlen(text);
/*
for (i='a';i
{
alf[26]=i;
printf ("%c ",alf[26]);
}
*/
for (i=0;i
{
if (text[i]=='a') /* Tutaj zamiast a moze byc b,c,d,...,z*/
a++;
}
for (j='a';j
{
printf ("Liczba wystapienia litery %c = %d ",j,a);
}
for (i=0;i
{
zakodowany[i]=text[i]+h;
if (zakodowany[i]>'z')
zakodowany[i]=zakodowany[i]–'z'+'a'–1;
}
printf ("%s",zakodowany);
fclose(plik);
getch();
return 0;
}
musze napisac w C taki programik co:
1. Pobiera text z pliku i wyswietla go na ekran.
2. Pyta się o ile ma przesunąć kaźdą literke do przodu i przesunać ją np jeśli o 1 to a zmienia sie na b itd.
3. Wyswietlic tak zmieniony text.
(To mam zrobione,teraz to na czym utknałem:)
4 Znalezc w tekscie (tym z pliku) literką a i wypisac ile razy wystepuje w calym tym tekscie,znalezc b i to samo i tak przez caly alfabet az po z.
Potrafie zrobic aby znajdowalo poszczegolna literę a LUB b LUB c itd ale chcialbym bez powtarzania 26 razy tej samej funkcji to napisac.
Na dole przedstawiam to jak u mnie wyglada, i proszę o jakas sugestie zmian jak to zrobic.(Plik z textem to "txt.txt") Z góry dzieki.
#define maxtab 1000
#include
#include
main()
{
int i,h,dlugosc,a=0,j,t;
char text[maxtab];
char zakodowany[maxtab];
char alf[26];
char tab[26];
FILE *plik;
plik=fopen ("txt.txt", "r");
clrscr();
if (plik!=NULL) printf("Plik istnieje tekst z pliku: ");
fgets(text,maxtab,plik);
printf("%s ", text);
printf ("O ile przesunac?");
scanf ("%i", &h);
printf ("Pzesuniecie o %i ",h);
dlugosc=strlen(text);
/*
for (i='a';i
{
alf[26]=i;
printf ("%c ",alf[26]);
}
*/
for (i=0;i
{
if (text[i]=='a') /* Tutaj zamiast a moze byc b,c,d,...,z*/
a++;
}
for (j='a';j
{
printf ("Liczba wystapienia litery %c = %d ",j,a);
}
for (i=0;i
{
zakodowany[i]=text[i]+h;
if (zakodowany[i]>'z')
zakodowany[i]=zakodowany[i]–'z'+'a'–1;
}
printf ("%s",zakodowany);
fclose(plik);
getch();
return 0;
}
Odpowiedzi: 1
robisz tablicę char[26] albo lepiej UINT[26] bo plik moźe mieć 4G liter 'a' i co wtedy? (?? chyba tyle liter ma alfabet), zerujesz ją, seek'ujesz w pliku na początek, czytasz bajt z pliku do schar dopuki nie będzie eof'u, zmieniasz literę na UCASE (wielkie litery), odejmujesz od wyniku 65
i teraz if (wynik >=0 | wynik
pierwsza pozycja w tabeli będzie oznaczała ilość liter 'a' itd...
i teraz if (wynik >=0 | wynik
pierwsza pozycja w tabeli będzie oznaczała ilość liter 'a' itd...
Strona 1 / 1