Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: kertotaulua

kippis [29.11.2005 10:35:11]

#

tehtävänä on kysyä kertotaulu, jonka käyttäjä haluaa nähdä, ohjelmassa olisi tarkistus, että jos luku ei ole välillä 0-100 niin se kysyisi lukua uudestaan. Tämä tarkistus tuottaa itselleni ongelmia.
Jos joku jaksaisi jeesata, en oo oikeen keksinyt ratkaisua.

esim. koodi

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

int main(void)
{
     int kerrottava; //pyydetään kerrottava
     int kertoja=1; //kertoja alkuarvo 1
     int tulo; //kertolaskun tulos

     for (tulo = 1; tulo <= 10; tulo++);

     while (kertoja <= 100)
     {
     printf ("Anna luku, jonka kertotaulun haluat: ");
     scanf ("%d",&kerrottava);

     if (kerrottava <0 || kerrottava > 100)
     {
     printf("Luku on virheellinen\n Syota uusi luku: \n");
     scanf("%d",&kerrottava);
     }

     tulo = kertoja * kerrottava;
     kertoja++;

     }
     printf ("%3d * %3d = %3d\n", kerrottava,kertoja,tulo);
}

FooBat [29.11.2005 12:13:55]

#

Lisää yksi silmukka luvun kyselemisen ympärille.

do {
  kerrottava = -1;
  printf ("Anna luku, jonka kertotaulun haluat: ");
  scanf ("%d",&kerrottava);

  if (kerrottava < 0 || kerrottava > 100)
    printf("Luku on virheellinen\n");

}while(kerrottava < 0 || kerrottava > 100);

Jäynis [29.11.2005 12:30:57]

#

Käyttäisit kooditageja, selventää huomattavasti.

En oikeen hoksannut ohjelmasi ideaa tosta koodista,
joten voisin kertoa oman tapani sinun koodisi kommentoimisen sijaan.
Valmista koodia et ainakaa multa saa :) opit paremmin ite tekemällä.

Tekisin näin:

1:Kysytään käyttäjältä luku ("Anna luku, jonka kertotaulun haluat: ")

2:Jos luku >100 tai <=0 niin kysytään uudestaan
tekstillä ("Luku on virheellinen\n Syota uusi luku: \n")
ja jos luku vieläkin virheellinen toistetaan vaihe 2, vinkki:käytä jotain silmukkaa esim. while

3:Silmukka jossa käydään läpi numerot 1-10 ja
tulostetaan ("kertoja x kerrottava=" & kertoja*kerrottava & ,"\n")

kippis [29.11.2005 12:34:21]

#

joo o, en valmista koodia haluakkaan, itteäni varten teen näitä. kiitos vastauksista, yritän päästä eteenpäin nuiden avulla.

kippis [29.11.2005 14:13:47]

#

Tällä koodilla toimii, en tiedä yhtään onko rakenne kauhean hyvä, jos jollakin tulee mieleen jotakin mitä voisi tehdä toisin, niin mieluusti otan opikseni.


#include <stdio.h>
#include <conio.h>

int main(void)
{
     int luku;
     int kertoja=1;
     int tulo;


     printf ("Anna luku, jonka kertotaulun haluat: ");
     do
     {
         scanf ("%d",&luku);
         if (luku <= 0 || luku >100)
         {
                  printf ("Luku on virheellinen\nAnna uusi luku:\n");
         }
     }
     while (luku <= 0 || luku > 100);


     while (kertoja <= 10)
     {
         tulo = kertoja * luku;
         printf ("%3d * %3d = %3d\n", luku,kertoja,tulo);
         kertoja++;
     }
}

Metabolix [29.11.2005 15:28:01]

#

Conio.h on turha.

Ehkä tyylikkäämpää on laittaa tulostus for-silmukalla, ja tuloa ei tarvitse muutenkaan välttämättä laskea valmiiksi:

for (kertoja = 1; kertoja <= 10; kertoja++)
{
    printf("%3d * %3d = %3d\n", luku, kertoja, kertoja * luku);
}

Mutta kukin tavallaan. Hyvältä näyttää!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta