NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Tisknuti vysledku operace do souboru

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Petr
Neregistrovaný
Avatar
Petr:17.5.2011 18:36

Ahoj, můžete mi poradit s tím jak v jazyce C vytisknout do souboru výsledek operace?

Například pokud mám for cyklus, jak ho vytisknu do souboru pomocí operace fprintf(fw)? Pokud to jde.

Díky za odpovědi.

 
Odpovědět
17.5.2011 18:36
Avatar
sczdavos
Vlastník
Avatar
Odpovídá na
sczdavos:17.5.2011 20:31

Ahoj,
podívej se třeba na následující příklad kde do souboru zapisuji text z cyklu:
http://www.itnetwork.cz/index.php?…
Používám tam klasické fopen("nazev_sou­boru", "metoda (r/w)").

Nahoru Odpovědět
17.5.2011 20:31
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Petr
Neregistrovaný
Avatar
Petr:17.5.2011 21:02

Ahoj a díky za odkaz. Jde mi o to, že výsledek je větší. Vypíše se na více řádků. I tak tato metoda funguje?
Díky za odpověď, jsem začátečník.

 
Nahoru Odpovědět
17.5.2011 21:02
Avatar
sczdavos
Vlastník
Avatar
Odpovídá na
sczdavos:17.5.2011 21:52

Ahoj,
tak prostě necháš vypsat více textu ne? S tím by neměl být problém pokud ti něco nepůjde postni sem zdroják já se na to mrknu ;)

Nahoru Odpovědět
17.5.2011 21:52
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Petr
Neregistrovaný
Avatar
Petr:17.5.2011 22:35

Před pár dny jsem sem psal. Bylo to ohledně přepisu kódu na rozpis utkání. Moc jsi mi pomohl. Posílám celý kód, který jsem už trochu upravil.
Snad dobře.

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

int je_liche(int cislo)
{
    if(cislo % 2 == 0)
        return 0;
    else
        return 1;
}

int main()
{
    int pocet_tymu, pocet_zapasu, odehraje, jedno_kolo, celkem_kol;
    int n = 0, k = 0, s = 0, i = 0, j = 0, tym_a = 0, tym_b = 0;
    FILE *fw;

    printf("Vitejte v programu, ktery Vam vygeneruje rozpis utkani.");
    printf("Zadejte pocet tymu: ");
    scanf("%d", &pocet_tymu);
    while (getchar() != ''); /*Vycisteni bufferu*/
    pocet_zapasu = pocet_tymu * (pocet_tymu - 1)/2;
    odehraje = pocet_tymu - 1;
    jedno_kolo = pocet_tymu / 2;
    celkem_kol = pocet_zapasu / jedno_kolo;
    printf("Zakladni informace o sezone:");
    printf("Celkovy pocet zapasu pri tomto poctu tymu bude %d.", pocet_zapasu);
    printf("Kazdy tym odehraje %d zapasu.", odehraje);
    printf("Pocet zapasu v jednom kole bude %d.", jedno_kolo);
    printf("Celkem se odehraje %d kol.", celkem_kol);
    if(je_liche(pocet_tymu))
        n = pocet_tymu + 1;
    else
        n = pocet_tymu;

    k = n - 1;// počet kol
    s = n / 2;// počet zápasů na kolo

    for(i = 1; i <= k; i++)
    {
        printf("Kolo: %d", i);
        if(!je_liche(pocet_tymu))
        {
            printf("tym %d - tym %d", i, n);
        }
        for(j = 1; j < s; j++)
        {
            tym_a = ((n - j + i - 2) % k) + 1;
            tym_b = ((i + j - 1) % k) + 1;
            printf("tym %d - tym %d", tym_a, tym_b);
        }

    }
    fw = fopen("ROZPIS UTKANI.TXT", "w");
    fprintf(fw, "Vitejte v programu, ktery Vam vygeneruje rozpis utkani.");
    fprintf(fw, "Zakladni informace o sezone:");
    fprintf(fw, "Celkovy pocet zapasu pri tomto poctu tymu bude %d.", pocet_zapasu);
    fprintf(fw, "Kazdy tym odehraje %d zapasu.", odehraje);
    fprintf(fw, "Pocet zapasu v jednom kole bude %d.", jedno_kolo);
    fprintf(fw, "Celkem se odehraje %d kol.", celkem_kol);

    fclose(fw);
    getchar();
    return 0;
}
 
Nahoru Odpovědět
17.5.2011 22:35
Avatar
sczdavos
Vlastník
Avatar
Odpovídá na
sczdavos:17.5.2011 23:06

Ahoj,
jo celkem dobrý, ale podle mě jsi to chtěl spíše nějak takhle:

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

int je_liche(int cislo)
{
    if(cislo % 2 == 0)
        return 0;
    else
        return 1;
}

int main()
{
    int pocet_tymu = 0, pocet_zapasu = 0, odehraje = 0, jedno_kolo = 0, celkem_kol = 0;
    int n = 0, k = 0, s = 0, i = 0, j = 0, tym_a = 0, tym_b = 0;
    FILE *fw;

        fw = fopen("ROZPIS UTKANI.TXT", "w");

    printf("Vitejte v programu, ktery Vam vygeneruje rozpis utkani.Zadejte pocet tymu:");
    scanf("%d", &pocet_tymu);
    pocet_zapasu = pocet_tymu * (pocet_tymu - 1)/2;
    odehraje = pocet_tymu - 1;
    jedno_kolo = pocet_tymu / 2;
    celkem_kol = pocet_zapasu / jedno_kolo;

    if(je_liche(pocet_tymu))
        n = pocet_tymu + 1;
    else
        n = pocet_tymu;

    k = n - 1;// počet kol
    s = n / 2;// počet zápasů na kolo

    fprintf(fw, "Vitejte v programu, ktery Vam vygeneruje rozpis utkani.Zakladni informace o sezone:Celkovy pocet zapasu pri tomto poctu tymu bude %d.Kazdy tym odehraje %d zapasu.Pocet zapasu v jednom kole bude %d.Celkem se odehraje %d kol.", pocet_zapasu, odehraje, jedno_kolo, celkem_kol);

    for(i = 1; i <= k; i++)
    {
        fprintf(fw, "Kolo: %d", i);
        if(!je_liche(pocet_tymu))
        {
            fprintf(fw, "tym %d - tym %d", i, n);
        }
        for(j = 1; j < s; j++)
        {
            tym_a = ((n - j + i - 2) % k) + 1;
            tym_b = ((i + j - 1) % k) + 1;
            fprintf(fw, "tym %d - tym %d", tym_a, tym_b);
        }

    }

    fclose(fw);
}

Jinak docela si komplikuješ život tím že máš půlku kódu zbytečnýho a některé proměnné se ti tam opakují. Se mi nechce přemýšlet jak to ve fotbale je takže proměnný neřešim. Kód sem přepsal.

Nahoru Odpovědět
17.5.2011 23:06
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Petr
Neregistrovaný
Avatar
Odpovídá na David Jančík
Petr:18.5.2011 19:04

Ještě jednou moc díky! Strašně jsi mi pomohl!

 
Nahoru Odpovědět
18.5.2011 19:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.