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();
}
Dotaz k programu v jazyce C
- danny7
- Nováček

-
- Registrován: 02. pro 2007
- €agle
- Středně pokročilý

- Registrován: 13. lis 2003
- Bydliště: Vlastní 3D svět :)
- Kontaktovat uživatele:
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:
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)
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);(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
Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ