Diskuze: Tisknuti vysledku operace do souboru

C++ C a C++ Tisknuti vysledku operace do souboru

Avatar
Petr
Neregistrovaný
Avatar
Petr:

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
Šéf
Avatar
Odpovídá na Petr
sczdavos:

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
Čím více času dostaneš, tím méně ho máš.
Avatar
Petr
Neregistrovaný
Avatar
Petr:

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
Šéf
Avatar
Odpovídá na Petr
sczdavos:

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
Čím více času dostaneš, tím méně ho máš.
Avatar
Petr
Neregistrovaný
Avatar
Petr:

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
Šéf
Avatar
Odpovídá na Petr
sczdavos:

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
Čím více času dostaneš, tím méně ho máš.
Avatar
Petr
Neregistrovaný
Avatar
Odpovídá na David Jančík [sczdavos]
Petr:

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.