Minulla on tehtävä josta en pääse millään yli. Eli pitäisi tehdä ohjelma joka tarkastaa onko annettu luku alkuluku ja tarkastuksen jälkeen kysyy halutaanko jatkaa vai lopettaa. Jotain tuossa menee vikaan ja veikkaisin että \n jää muistiin, mutta en ole varma. En ole myöskään varma käytänkö getcharia oikein.
#include <stdio.h> int main() { int number, n=2; char cont='y'; printf("Tämä ohjelma tarkistaa, onko luku >1 alkuluku."); do { while(number < 2 ){ printf("Anna luku >1: "); scanf("%d", &number); } while(number%n!=0){ n++;} if(n<number){ printf("%d on pienin nimittäjä luvulle %d.\n \n",n, number); } else if(n=number){ printf("%d on alkuluku.\n", number); } printf("Paina y jos haluat jatkaa: "); cont = getchar(); while (getchar() != '\n'); } while(cont!='n'); return 0; }
Tarkistapa ainakin n-muuttujan käsittely. Jälkimmäisessä if-ehdossa asetat sen, vaikka pitäisi verrata. Unohdat myös alustaa sen silmukan toisella kierroksella.
Niin se siis toimii niin kauan oikein, kun tulee printf("Paina y jos haluat jatkaa: ");cont = getchar();while (getchar() != '\n');. Ohjelma pysähtyy siihen.
Lisäys:
Korjasin sen nyt näin. Y:llä pitäisi jatkaa, mutta ei jatka.
#include <stdio.h> int main() { int n=2; char cont='y'; printf("Tämä ohjelma tarkistaa, onko luku >1 alkuluku."); do { int number=0; while(number < 2 ){ printf("Anna luku >1: "); scanf("%d", &number); } while(number%n!=0){ n++;} if(n<number){ printf("%d on pienin nimittäjä luvulle %d.\n \n",n, number); } else if(n=number){ printf("%d on alkuluku.\n", number); } printf("Paina y jos haluat jatkaa: "); cont = getchar(); while (getchar() != '\n'); } while(cont=='y'); return 0; }
Tuo kohta toimii esim. näin:
printf("Type Y if you wish to continue: "); getchar(); } while(getchar()=='y');
Seuraavaksi sitten törmäät tuohon n-ongelmaan, josta jo mainitsin.
Joo eli else if(n==number). Nyt ohjelma toimii jotakuinkin niin kun pitää. Kiitos!
Kuvittelin että jotenkin näin:
cont = getchar(); while (cont != '\n');
Koska tuo aiempi koodis kysy näppäintä 2 kertaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.