Taulukko-ongelma

Moro

Tehtävänä on tehdä ohjelma, johon syötetään ensin joka päivälle 5 lukua ja tämä tehdään 7 kertaa. Annetut luvut pitäisi sitten saada tulostettua taulukkoon (8x6) siten, että pysty ja vaakarivit lasketaan yhteen ja tulostetaan taulukkoon viimeiseksi riveille ja sarakkeisiin. Olen todellakin aivan "nyyppä"ohjelmoija, enkä useamman päivän yrittämisellä ole saanut oikein mitään aikaan. Suurimpana ongelmana tuntuu olevan tuo yhteenlaskeminen ja sen tulostaminen samaan taulukkoon. Osaisiko kukaan hiukan jelppiä ettei tässä jouluun asti menisi.
10502
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat

http//www.joutsi.com

Katsotaan löytätkö apua.

Äänestä

Niin jäi mainitsematta että ohjelmoin perus C:llä. Näyttäis olevan C painotteista tuo info tuossa linkissä, mutta kiitos siitäkin

Äänestä
  • #include
    #include

    int main()
    {
       int Luvut[8][6]={0};

       int x=0, y=0;

       while(y < 5)
       {
          while(x < 7)
          {
             system("CLS");
             printf("(%i,%i): ", x, y);
             scanf("%i", &Luvut[x][y]);
             
             x++;
          }
          y++;
          x=0;
       }

       x=0;
       y=0;

       while(y < 5)
       {
          while(x < 7)
          {
             Luvut[7][y]+=Luvut[x][y];
             Luvut[x][5]+=Luvut[x][y];
             x++;
          }
          y++;
          x=0;
       }

       x=0;
       y=0;

       while(y < 5)
       {
          Luvut[7][5]+=Luvut[7][y];
          y++;
       }

       x=0;
       y=0;


       while(y < 6)
       {
          printf("\n|");

          while(x < 8)
          {
             printf("%i|", Luvut[x][y]);

             x++;
          }
          y++;
          x=0;
       }

       printf("\n\n");

       system("pause");

       return 0;
    }

    Äänestä

  • UPDATE_7348388 kirjoitti:

    #include
    #include

    int main()
    {
       int Luvut[8][6]={0};

       int x=0, y=0;

       while(y < 5)
       {
          while(x < 7)
          {
             system("CLS");
             printf("(%i,%i): ", x, y);
             scanf("%i", &Luvut[x][y]);
             
             x++;
          }
          y++;
          x=0;
       }

       x=0;
       y=0;

       while(y < 5)
       {
          while(x < 7)
          {
             Luvut[7][y]+=Luvut[x][y];
             Luvut[x][5]+=Luvut[x][y];
             x++;
          }
          y++;
          x=0;
       }

       x=0;
       y=0;

       while(y < 5)
       {
          Luvut[7][5]+=Luvut[7][y];
          y++;
       }

       x=0;
       y=0;


       while(y < 6)
       {
          printf("\n|");

          while(x < 8)
          {
             printf("%i|", Luvut[x][y]);

             x++;
          }
          y++;
          x=0;
       }

       printf("\n\n");

       system("pause");

       return 0;
    }

    Kiitos avusta, ihan hyvin rullaa vaikkakin pientä hienosäätöä vaatii kun pitää vielä aakkostarkistus rakentaa, eli ettei tilttaa kun syöttää aakkosen..
    Lisäksi yritän koodata otsikot noihin riveihin ja sarakkeisiin, mutta sen ei luulisi iso homma olevan, danke!

    Äänestä

  • EiOsaa kirjoitti:

    Kiitos avusta, ihan hyvin rullaa vaikkakin pientä hienosäätöä vaatii kun pitää vielä aakkostarkistus rakentaa, eli ettei tilttaa kun syöttää aakkosen..
    Lisäksi yritän koodata otsikot noihin riveihin ja sarakkeisiin, mutta sen ei luulisi iso homma olevan, danke!

    se johtuu tuosta scanf("%i", &Luvut[x][y]); koska se hyväksyy vain lukuja

    sen voi kiertää näin

    laita alkuun: char buf[128];

    ja siitten tuon scanf("%i", &Luvut[x][y]); korvaat tällä:
    gets(buf);
    Luvut[x][y]=atoi(buf);

    tällöin akkoset käsitellään nollina

    Äänestä

  • UPDATE_7348388 kirjoitti:

    se johtuu tuosta scanf("%i", &Luvut[x][y]); koska se hyväksyy vain lukuja

    sen voi kiertää näin

    laita alkuun: char buf[128];

    ja siitten tuon scanf("%i", &Luvut[x][y]); korvaat tällä:
    gets(buf);
    Luvut[x][y]=atoi(buf);

    tällöin akkoset käsitellään nollina

    Kiitos, mutta eikös tuossa nyt käy sit sillai että kun syöttää aakkosen niin se tallentuu nollaksi taulukkoon. Tarkoitus olisi, että jos syöttää akkosen niin ohjelma ei hyväksy sitä vaan kysyy uudestaan numeroa. On tää ohjelmointi hankalaa, ainakin näin aluksi..

    Äänestä

  • EiOsaa kirjoitti:

    Kiitos, mutta eikös tuossa nyt käy sit sillai että kun syöttää aakkosen niin se tallentuu nollaksi taulukkoon. Tarkoitus olisi, että jos syöttää akkosen niin ohjelma ei hyväksy sitä vaan kysyy uudestaan numeroa. On tää ohjelmointi hankalaa, ainakin näin aluksi..

    lisää ton: Luvut[x][y]=atoi(buf);
    jälkeen tämmöinen:
    if(Luvut[x][y]==0 && buf[0] != '0'){ continue; }

    tässäkin on se heikkous jos syöttää vaikka "0A" niin se päästää sen nollana läpi

    Äänestä

  • UPDATE_7348388 kirjoitti:

    lisää ton: Luvut[x][y]=atoi(buf);
    jälkeen tämmöinen:
    if(Luvut[x][y]==0 && buf[0] != '0'){ continue; }

    tässäkin on se heikkous jos syöttää vaikka "0A" niin se päästää sen nollana läpi

    Kiitos taas.. Hyvin toimii tuo aakkossuodatus, varsinkin kun lisäsin hiukan pelivaraa siihen buffiin! Viimeisenä ongelmana onkin se, että taulukkoon tulisi saada otsikot sekä pysty että vaaka-akseleille. Miten tämä voisi onnistua, voiko esim. taulukon alustusvaiheessa antaa ensimmäisille arvoille esim. asetusarvon 1.Pelaaja tms.. ja sitten muuttaa ohjelmaa niin että täyttäminen alkaa seuraavasta kohdasta, vai miten tämän voisi tehdä helpoiten?

    Äänestä

  • EiOsaa kirjoitti:

    Kiitos taas.. Hyvin toimii tuo aakkossuodatus, varsinkin kun lisäsin hiukan pelivaraa siihen buffiin! Viimeisenä ongelmana onkin se, että taulukkoon tulisi saada otsikot sekä pysty että vaaka-akseleille. Miten tämä voisi onnistua, voiko esim. taulukon alustusvaiheessa antaa ensimmäisille arvoille esim. asetusarvon 1.Pelaaja tms.. ja sitten muuttaa ohjelmaa niin että täyttäminen alkaa seuraavasta kohdasta, vai miten tämän voisi tehdä helpoiten?

    Nuo vaakaakselesiden otsikot on ihan helppo toteuttaa, mutta noita pysty akseleiden otsikoiden piirtäminen on hieman vaikea toteuttaa tuossa konsolissa.

    jos mahdollista niin joku taulukko laskenta ohjelma olisi viisaampi tapa toteuttaa tämmöiset jutut

    tässä on nyt jonkin sortin systeemi noita vaaka otsikoita varten.


    #include
    #include
    #include

    int main()
    {
       int Luvut[8][6]={0};

       char buf[128];

       char Yotsikot[6][128]={'\0'};
       int pituudet[6]={0};
       int pisin=0;


       int x=0, y=0;

       while(y < 6)
       {
          system("CLS");
          printf("Yotsikko[%i]:", y);
          gets(Yotsikot[y]);
          while(Yotsikot[y][pituudet[y]]!='\0' && pituudet[y] < 128){ pituudet[y]++; }
          if(pituudet[y]>pisin){ pisin = pituudet[y]; }
          y++;
       }

       x=0;
       y=0;
       while(y < 5)
       {
          while(x < 7)
          {
             system("CLS");
             printf("(%i,%i): ", x, y);
             gets(buf);
             Luvut[x][y]=atoi(buf);
             if(Luvut[x][y]==0 && buf[0] != '0'){ continue; }
             
             x++;
          }
          y++;
          x=0;
       }

       x=0;
       y=0;

       while(y < 5)
       {
          while(x < 7)
          {
             Luvut[7][y]+=Luvut[x][y];
             Luvut[x][5]+=Luvut[x][y];
             x++;
          }
          y++;
          x=0;
       }

       x=0;
       y=0;

       while(y < 5)
       {
          Luvut[7][5]+=Luvut[7][y];
          y++;
       }

       x=0;
       y=0;


       while(y < 6)
       {
          printf("\n%s", Yotsikot[y]);
          while(pituudet[y]

    Äänestä

mikä siis on ongelmana? olet saanut tallennettua käyttäjän syötteen johonkini [7][5] -kokoseen taulukkoon, vai?
mitä tarkoitat että luvut pitäisi saada tulostettua taulukkoon, siis meinaatko että pitäisi näytölle "piirtää" joku taulu ja siihen sitten lukuja vai mitä häh?

tässä pieni esimerkki jolla voi laskea koko taulukon yhteen, soveltamalla tuota saat tehtyä halumasi jutut. (tai sitten et)

int summa = 0;

for(int a = 0; a < 7; a )
{
for(int b = 0; b < 5; b )
{
summa = taulukko[a][b];
}
}

Äänestä

Kommentoi aloitusta


EiOsaa kirjoitti:

Moro

Tehtävänä on tehdä ohjelma, johon syötetään ensin joka päivälle 5 lukua ja tämä tehdään 7 kertaa. Annetut luvut pitäisi sitten saada tulostettua taulukkoon (8x6) siten, että pysty ja vaakarivit lasketaan yhteen ja tulostetaan taulukkoon viimeiseksi riveille ja sarakkeisiin. Olen todellakin aivan "nyyppä"ohjelmoija, enkä useamman päivän yrittämisellä ole saanut oikein mitään aikaan. Suurimpana ongelmana tuntuu olevan tuo yhteenlaskeminen ja sen tulostaminen samaan taulukkoon. Osaisiko kukaan hiukan jelppiä ettei tässä jouluun asti menisi.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu