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); }
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);
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")
joo o, en valmista koodia haluakkaan, itteäni varten teen näitä. kiitos vastauksista, yritän päästä eteenpäin nuiden avulla.
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++; } }
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ää!
Aihe on jo aika vanha, joten et voi enää vastata siihen.