Avatar
Head
Člen
Avatar
Head:

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:

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:

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):

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í
+1 bodů
Řešení problému
Nahoru Odpovědět  +2 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):

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:

Ď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:

Ahoj, nemas k tomuto aj vyvojový diagram?

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

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.