C - práce se souborem Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
Iron
Level 2
Level 2
Příspěvky: 185
Registrován: prosinec 07
Bydliště: Kobeřice
Pohlaví: Muž
Stav:
Offline
Kontakt:

C - práce se souborem

Příspěvekod Iron » 04 kvě 2009 15:31

Zdravím,

Mám vytvořit program, který má se souborem provést následující činnosti:
1. Celkový počet znaků v souboru
2. Celková počet řádek
3. Průměrný počet znaků na řádek
4. Nejdelší řádka
5. Nejkratší řádka

První dvě úlohy mám již vyřešené, třetí částečně (potřeboval bych výsledek v desetinných číslech), 4 a 5 neumím vyřešit. Pokud někdo víte jak na to, prosím poraďte.

Díky

#include <stdio.h>
#include <stdlib.h>

FILE *f;

int main(void)
{
int znaky, radky = 1, nejdelsi = 0, nejkratsi, celkem = 0;
float prumer;
f = fopen("soubor.txt", "r");


while((znaky = getc(f))!= EOF)
{
celkem++;
if (znaky == '\n')
{
radky++;
}

}




printf("pocet znaku %d\n",celkem);
printf("pocet radku je %d\n",radky);
prumer = celkem / radky;
printf("prumerny pocet znaku na radku je %4.5f",prumer);
system("PAUSE");

fclose(f);

return 0;

}
Naposledy upravil(a) Iron dne 04 kvě 2009 17:28, celkem upraveno 1 x.

Reklama
Uživatelský avatar
Sender
Level 3.5
Level 3.5
Příspěvky: 700
Registrován: leden 07
Bydliště: Vysočina
Pohlaví: Muž
Stav:
Offline

Re: C - práce se souborem

Příspěvekod Sender » 04 kvě 2009 16:55

Body 3 a 4 bych řešil tak,že bych četl soubor po znacích a hledal oddělovače řádků.Při nalezení by se to vyhodnotilo (jedna proměnná by byla min a druhámax) a vynuloval by se counter.

Uživatelský avatar
Iron
Level 2
Level 2
Příspěvky: 185
Registrován: prosinec 07
Bydliště: Kobeřice
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: C - práce se souborem  Vyřešeno

Příspěvekod Iron » 04 kvě 2009 17:45

EDIT: Tak už to počítá vše, nejdelší i nejkratší řádek. Díky Senderovi za snahu, byť jsem již věděl, to co řekl, spíše jsem potřeboval vidět hotový kód. Kód zobrazený v tomto příspěvku je správný.
Aktualizovaný kód:
#include <stdio.h>
#include <stdlib.h>

FILE *f;

int main(void)
{
int znaky, akrada = 1, akpocet = 0, nejdelsi = 0, nejkratsi;
float prumer, celkem = 0, radky = 1;
f = fopen("soubor.txt", "r");


while((znaky = getc(f))!= EOF)
{
celkem++;
akpocet++;

if (znaky == '\n')
{
radky++;
if (nejdelsi < akpocet)
{
nejdelsi = akpocet;
}
if (nejkratsi > akpocet)
{
nejkratsi = akpocet;
}
akpocet = 0;
}



}

printf("pocet znaku %4.0f\n",celkem);
printf("pocet radku je %4.0f\n",radky);
prumer = celkem / radky;
printf("prumerny pocet znaku na radku je %4.5f\n",prumer);
printf("nekratsi radka ma znaku %d\n",nejkratsi);
printf("nejdelsi radka ma znaku %d\n",nejdelsi);
system("PAUSE");

fclose(f);

return 0;

}


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti