Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Do-while-ongelma

kuutso [21.10.2009 12:00:21]

#

semmonen ois etten saa tätä näkyviin.

while(b < pelaajan_1_nro || b > pelaajan_1_nro);
                  printf("correct, pelaaja_2");
#include <stdio.h>
int main(void)
{
    int a, b, pelaajan_1_nro, pelaajan_2_nro;

    printf("Only numbers between 1-100 is allowed. GL & HF.");

    printf("\n");

    printf("pelaajan_1_nro: ");

    scanf("%i", &pelaajan_1_nro);

    system("cls");

    printf("pelaajan_2_nro: ");

    scanf("%i", &pelaajan_2_nro);

    system("cls");

    do {

    printf("\n");

    printf("Peli alkaa! \nPelaaja_2, arvaa pelaajan_1_nro.");

    printf("\n");

    scanf("%i", &b);

    printf("\n");

    if(b < pelaajan_1_nro)

                 printf("too low, pelaaja_2");

    if(b > pelaajan_1_nro)

                 printf("too high, pelaaja_2");

                 printf("\n");


    printf("Pelaaja_1, arvaa pelaajan_2_nro.");

    printf("\n");

    scanf("%i", &a);

    printf("\n");

    if(a <  pelaajan_2_nro)

                 printf("too low, pelaaja_1");

    if(a >  pelaajan_2_nro)

                 printf("too high, pelaaja_1");

                 printf("\n");
                 printf("______________________________________________________");
                 printf("\n");

                 }while(a < pelaajan_2_nro || a > pelaajan_2_nro);

                  printf("correct, pelaaja_1");

                  printf("\n");

                  while(b < pelaajan_1_nro || b > pelaajan_1_nro);
                  printf("correct, pelaaja_2");


                  printf("\n");

      getch();


}

Mod. lisäsi kooditagit

Grez [21.10.2009 12:11:03]

#

Sullahan ei ole mitään do {} lohkoa tuossa while:n edessä.

Ja kooditagit on muuten kans kivat.

kuutso [21.10.2009 12:20:24]

#

Grez kirjoitti:

Sullahan ei ole mitään do {} lohkoa tuossa while:n edessä.

Ja kooditagit on muuten kans kivat.

Niin että jos tosta sais jotenki sen näkyvii koska oon koittanu survoo sitä do{ }while siihe ja ei ole auttanu.

Ja saattaa olla etten osaa laittaa sitä oikein.

Grez [21.10.2009 12:24:29]

#

No siis sulla on yksi do-while looppi, josta poistutaan jos pelaaja 1 arvaa oikein. Siis vaikka pelaaja 2 arvais oikein, niin siitä loopista ei poistuta.

Eli tee siis ekan loopin while lauseeseen tarkistus, jossa tarkistetaan molempien pelaajien arvaukset ja sitten vaikka if:llä tulostat onnittelut sille tai niille, joka/jotka arvasi oikein.

kuutso [21.10.2009 12:43:33]

#

Erotanko mä sitten pilkulla ne molemmat lauseet esim.

while(b < pelaajan_1_nro || b > pelaajan_1_nro , a < pelaajan_2_nro || a > pelaajan_2_nro);

Grez [21.10.2009 12:53:12]

#

Ehkä ennemmin && joka siis palauttaa tosi, jos molemmat ehdot täyttyvät.

while (b != pelaajan_1_nro && a != pelaajan_2_nro)

Itse tekisin varmaan koko roskan seuraavasti:

#include <stdio.h>
int main(void)
{

    int vastaus[2];
	int arvattava[2];
	int i;

    printf("Vain numeroita 1-100 kiitos. OP & KV.");
    printf("\n");

	for (i=0; i<2; i++)
	{
	    printf("Pelaajan %d nro: ",i+1);
		scanf("%d", &arvattava[i]);
		system("cls");
	}

	printf("Peli alkaa!\n");

	int go = 1;

    do
	{
		for (i=0; i<2; i++)
		{
			printf("\n");
			printf("Pelaaja %d, arvaa pelaajan %d nro.\n", 2-i, i+1);
			scanf("%d", &vastaus[i]);
			printf("\n");
			if(vastaus[i] < arvattava[i])
                 printf("Alle meni, pelaaja %d\n", 2-i);
			if(vastaus[i] > arvattava[i])
                 printf("Yli meni, pelaaja %d\n", 2-i);
			if(vastaus[i] == arvattava[i])
			{
				printf("Oikein, pelaaja %d\n", 2-i);
				go = 0;  //stop after this round
			}
		}
		printf("\n______________________________________________________\n");

	} while (go);
}

kuutso [21.10.2009 12:55:56]

#

Kiitoksia!

Vastaus

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

Tietoa sivustosta