Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
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
Tým ITnetwork
Avatar
Odpovídá na Petr
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
Čím více času dostaneš, tím méně ho máš.
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
Tým ITnetwork
Avatar
Odpovídá na Petr
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
Čím více času dostaneš, tím méně ho máš.
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
Tým ITnetwork
Avatar
Odpovídá na Petr
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
Čím více času dostaneš, tím méně ho máš.
Avatar
Petr
Neregistrovaný
Avatar
Odpovídá na David Jančík [sczdavos]
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.