Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Apuja koodin kanssa

mykle [15.03.2012 16:40:23]

#

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;
}

Chiman [15.03.2012 17:18:53]

#

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.

mykle [15.03.2012 19:45:38]

#

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;
}

Chiman [15.03.2012 20:16:48]

#

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.

mykle [16.03.2012 01:57:44]

#

Joo eli else if(n==number). Nyt ohjelma toimii jotakuinkin niin kun pitää. Kiitos!

User137 [16.03.2012 14:11:18]

#

Kuvittelin että jotenkin näin:

  cont = getchar();
while (cont != '\n');

Koska tuo aiempi koodis kysy näppäintä 2 kertaa.

Vastaus

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

Tietoa sivustosta