Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: rozvrh v C

Aktivity
Avatar
Head
Člen
Avatar
Head:6.11.2014 21:19

Potreboval by som poradiť ... na vstupe je poradove cislo dna a hodiny a skratka predmetu ... ta skratka sa ma ulozit na index v dvojrozmernom poly scanf("%s", rozvrh[den][ho­dina]) ....zadavanie v cykle ... na vystupe kompletny rozvrh

Editováno 6.11.2014 21:22
 
Odpovědět
6.11.2014 21:19
Avatar
MrPabloz
Člen
Avatar
Odpovídá na Head
MrPabloz:6.11.2014 22:54

proč ne něco ve stylu:

int den; int hodina; string zkratka;
scanf("%d %d %s",&den,&hodina,&zkratka);

nebo si načti celý řádek do stringu a ten rozparsuj

string line;
fgets(line,max_delka,stdin);
for(int i = 0; line[i]!='\0'; i++)
**{
    //parsování!
}**
//nebo
int den; int hodina; string zkratka;
sscanf(line,"%d %d %s",&den,&hodina,&zkratka);
Nahoru Odpovědět
6.11.2014 22:54
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Head
Člen
Avatar
Odpovídá na MrPabloz
Head:7.11.2014 9:27

skúšal som to tým prvým spôsobom.. nefunguje .. a do toho druheho sa nechcem púšťať kvôli mojim vedomostiam ... skôr by som chcel vedieť či sa da toto upraviť tak nejako aby to fungovalo a s tym stringom ma ešte napadlo že či by to fungovalo aj keď nevyplním všetky predmety.

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

int main()
{

    char  odpoved='a',rozvrh[6][8],dni[6][12] = {"pondelok","utorok","streda","stvrtok","piatok"};
     int i,j,den,hodina;

    do
    {
    printf("Zadaj poradove cislo dna:");
    scanf("%d", &den);
    printf("\nZadaj poradove cislo hodiny:");
    scanf("%d", &hodina);
    printf("\nZadaj skratku predmetu:");
    scanf("%s", rozvrh[den][hodina]);
    printf("\nChces zadat dalsi predmet?[a/n]");
    scanf("%c", &odpoved);
    }
    while (odpoved!='n');

    for (i=0;i<5;i++)
        {
        printf("%s", dni[i]);
        for (j=0;j<8;j++)
            {
            printf("%s", rozvrh[den][hodina]);
            }
        }
    return 0;
}
Editováno 7.11.2014 9:28
 
Nahoru Odpovědět
7.11.2014 9:27
Avatar
Odpovídá na Head
Libor Šimo (libcosenior):10.11.2014 13:02

Musíš použiť trojrozmerné pole, pretože aj skratka môže mať viac znakov ako jeden.
Napr.:

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

int main(void)
{
    char odpoved = 'a', rozvrh[5][8][5], dni[6][12] = {"pondelok","utorok","streda","stvrtok","piatok"};
    int i, j, den, hodina;

    for (i = 0; i < 5; i++) {
        for (j = 0; j < 8; j++) {
            rozvrh[i][j][0] = '\0';
        }
    }

    /* Zadavanie, ale nie je to osetrene proti preteceniu */
    do {
        printf("Zadaj poradove cislo dna:");
        scanf("%d", &den);
        printf("\nZadaj poradove cislo hodiny:");
        scanf("%d", &hodina);
        printf("\nZadaj skratku predmetu:");
        scanf("%s", rozvrh[den - 1][hodina - 1]);
        printf("\nChces zadat dalsi predmet?[a/n]");
        while (getchar() != '\n') ;
        scanf("%c", &odpoved);
    } while (odpoved!='n');

    /* vypis */
    for (i = 0; i < 5; i++) {
        printf("%s\n", dni[i]);
        for (j = 0; j < 8; j++) {
            printf("%d. hodina -> %s\n", j + 1, rozvrh[i][j]);
        }
    }
    return 0;
}
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
10.11.2014 13:02
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Libor Šimo (libcosenior):10.11.2014 13:11

Varianta, keď sú skratky len jedno písmeno (znak), vtedy to môže byť dvojrozmerné pole.

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

 int main(void)
 {
    char odpoved = 'a', rozvrh[5][8], dni[6][12] = {"pondelok","utorok","streda","stvrtok","piatok"};
    int i, j, den, hodina;

    for (i = 0; i < 5; i++) {
        for (j = 0; j < 8; j++) {
            rozvrh[i][j] = '\0';
        }
    }

    /* Zadavanie, ale nie je to osetrene proti preteceniu */
    do {
        printf("Zadaj poradove cislo dna:");
        scanf("%d", &den);
        printf("\nZadaj poradove cislo hodiny:");
        scanf("%d", &hodina);
        while (getchar() != '\n') ;
        printf("\nZadaj skratku predmetu:");
        scanf("%c", &rozvrh[den - 1][hodina - 1]);
        printf("\nChces zadat dalsi predmet?[a/n]");
        while (getchar() != '\n') ;
        scanf("%c", &odpoved);
    } while (odpoved!='n');

    /* vypis */
    for (i = 0; i < 5; i++) {
        printf("%s\n", dni[i]);
        for (j = 0; j < 8; j++) {
            printf("%d. hodina -> %c\n", j + 1, rozvrh[i][j]);
        }
    }
    return 0;
}
Nahoru Odpovědět
10.11.2014 13:11
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Head
Člen
Avatar
Head:11.11.2014 12:39

Ďakujem za pomoc ... ten prvý priklad po menšej uprave funguje tak ako ma :)

 
Nahoru Odpovědět
11.11.2014 12:39
Avatar
Jakub uhr
Člen
Avatar
Jakub uhr:21.12.2015 12:31

Ahoj, nemas k tomuto aj vyvojový diagram?

 
Nahoru Odpovědět
21.12.2015 12:31
Avatar
Jakub uhr
Člen
Avatar
Jakub uhr:21.12.2015 12:33

Vedel by niekto vytvoriť vyvojový diagram? :) dakujem moc za pomoc

 
Nahoru Odpovědět
21.12.2015 12:33
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 8 zpráv z 8.