Dotaz k programu v jazyce C

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
danny7
Nováček
Nováček
Registrován: 02. pro 2007

Dotaz k programu v jazyce C

Příspěvek od danny7 »

Zdravím místní programátory, dostal jsem za úkol udělat prográmek podle tohoto zadání

Sestavte funkci, která zjistí počet písmen, číslic, tabelátorů a nových řádků ve znakovém souboru. Funkci použijte v programu, který bude číst soubor z vnějšího zařízení

Program už víceméně mám (až na tabelátory a nové řádky) ale chtělo by to odladit, program mi počítá pouze první písmena ve slovech a nedaří se mi to upravit, nemam talent na programování a kdybych nemusel ani se ho neučim ale bohužel musím to přetrpět, proto prosím nějakou hodnou duši aby mi poradila v čem je problém, co upravit. Byl bych vám neskutečně vděčný, zde je zdroják



#include <stdio.h>
#include <conio.h>
#include <math.h>
FILE *f;
int main ()
{
int pocet[256],j,hodnota,pismen,slov;
f=fopen("text.txt","r");
if (f==NULL){printf("soubor se neotevrel\n"); getchar();}

j=0;slov=0;
do {
pocet[j]=0;
j++;
} while (j<256);

while ((hodnota!=EOF)&&((hodnota=getc(f))!=EOF)){
pocet[hodnota]++;
if ((hodnota>='a')&&(hodnota<='z')) {
pismen=1;
while (((hodnota=getc(f))!=EOF)&&((hodnota>='a')&&(hodnota<='z'))) {
pismen++;
}
if (pismen>=2) slov++;

}

}

printf ("\n");
printf ("Pocet jednotlivych cislic:\n");
j=0; do { /* vypis cisel */
printf (" %d(%d)",j,pocet[j+'0']);
j++;
} while (j<10); printf ("\n");

printf ("\n");
printf ("Pocet jednotlivych malych pismen:\n");
j=0; do { /* vypis malych pismen */
printf (" %c(%d)",(char)(j+'a'),pocet[j+'a']);
j++;
} while (j<26); printf ("\n");

printf ("\n");
printf ("Slov %d",slov);
getchar();
getchar();
}
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

Jelikoz z toho zadani neni jasne, zda je pozadovan pocet konkretnich jednotlivych pismen (samostatne pocet a, b, c...), nebo zda se chce celkovy pocet pismen, zvolil bych druhou, jednodussi moznost. Program by pak vypadal asi takhle:

Kód: Vybrat vše

int pismena = 0, cisla = 0, taby = 0, radky = 0;
FILE * InFile = fopen("soubor.txt", "r");
char pismeno;
while((pismeno = fgetc(InFile)) != EOF)
{
 if(isalpha(pismeno)) pismena++;
 elseif(isdigit(pismeno)) cisla++;
 elseif(pismeno == '\t') taby++;
 elseif(pismeno == '\n') radky++;
}
fclose(InFile);
Pokud bys to chtel vylozene jako funkci, tak to muzes prepsat a dat za parametr treba nazev souboru...

(psal jsem to rovnou bez vyzkouseni, takze tam mozna bude nejaka chybicka)
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Odpovědět

Zpět na „Programování a web“