C - práce se souborem

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

Odpovědět
Uživatelský avatar
Iron
Level 2
Level 2
Příspěvky: 185
Registrován: 21 pro 2007 19:16
Bydliště: Kobeřice

C - práce se souborem

Příspěvek od Iron »

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.
Uživatelský avatar
Sender
Level 3.5
Level 3.5
Příspěvky: 700
Registrován: 04 led 2007 19:19
Bydliště: Vysočina

Re: C - práce se souborem

Příspěvek od Sender »

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: 21 pro 2007 19:16
Bydliště: Kobeřice

Re: C - práce se souborem

Příspěvek od Iron »

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;

}
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek

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