mikä olisi nopanheitossa while lauseen ehto kun pitäis saada kaksi samaa lukua perätysten, kun luvut arvotaan randomilla.
Tarvii neuvoa nopeasti Kiitos!!!
Tarvii neuvoa nopeasti Kiitos!!!
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 11
Vanhimmat
miksi siinä whileä pitäisi käyttää? tai sitten en ymmärtänyt jotain
int numero1 = ota randomilla tähän eka luku
int numero2 = ota randomilla tähän toinen luku
if(numero1 == numero2)
{
printf("tuli sama");
}
else
{
printf("ei tullut samaa");
}
Kannattaisi pyörittää whilen sijasta for-silmukkaa. Tulee vähän fiksumpaa koodia.
Pistä sinne tulostavan silmukan sisään if-lause.
if(numerot[i]==numerot[i-1])
break;
Eli hyppää loopista ulos, kun kaksi samaa lukua tulee peräkkäin.
miten toi käytännös menee toi for ja break? toi if lause varmaankin toimii !!
miksi pitäisi käyttää for-silmukkaa silloin, kun ei tiedetä lopullista heittojen määrää?
Foria yleensä ottaen käytetään aina, kun tiedetään kuinka monta kertaa silmukka pitää toistaa. Tässähän voi heittoja tulla teoriassa ääretön määrä, ennen kuin tulee kaks kertaa sama luku peräkkäin.
Siis forilla ja whilellä on vain se ero, että for on nopeampi kirjoittaa ja selvemmän näköinen kuin while. Forin voi aina korvata whilellä, mutta foria ei kannata käyttää, jos sen kaikkia 'kohtia'( int i; i < p; i ) ei tarvita ja tällöin tulee käyttää whileä. Kuitenkaan ei ole mitään tuollaista nyrkkisääntöä: "Foria yleensä ottaen käytetään aina, kun tiedetään kuinka monta kertaa silmukka pitää toistaa.", vaan foria voi ihan hyvin käyttää, vaikka toistojen määrä ei ole ohjelmoitaessa tiedossa, kunhan forin kaikille 'kohdille' on käyttöä.
Sellaisesta for-silmukasta, minkä kaikille "kohdilla" on käyttöä, mutta josta ei tiedetä etukäteen kuinka monesti sitä pitää toistaa.
int main() {
int luku = 0;
for( int i = 0; ! (cin >> luku ); i ) {
if( i == 11 ) {
cout
kuinka monesti ehto maksimissaan pitää suorittaa (ok, sitä "Maksimissaan" ei ääneen sanottu, mutta sitä tarkoitettiin).
En tiedä muista, mutta minusta tuo koodi on vähän nurinkurisen näköistä. Se ei myöskään toimi oikein. Esim. syötteet 9flkj ja 9e-12 antavat luku:lle arvon 9, joka on kyllä väärin. Syöte f9 tulostaa virheilmoituksen JA lopettaa ohjelman EXIT_SUCCESS:lla.
Eli ei kelpaa. (asia on kuten piru sen ilmaisi, toki molempia voi käyttää ristiin, mutta yleensä on järkevää käyttää niitä kuten 99% ohjelmoijista tekee).
No niin no joo. Kyllähän se niin on, että jos on kyseessä looppi, joka voi jatkua loputtomiin( kuten nopanheitto esimerkissä ), niin on järkevämpää käyttää while, kuin for, mutta se ei kuitenkaan ole sama kuin looppi, jonka pyörähdysten määrää ei tiedetä koodaus vaiheessa. Eli käsitin, että tarkoitit juuri tuollaista foria, jonka suoritus loppuu ennen kuin forin ehto täytyy. Mutta tässä on tuo esimerkkikoodini vähän fiksummin. Tässä tuota foriakaan ei ole raiskattu, kuten aiemmin. :-)
#include
#include
#include
#include
using namespace std;
int main() {
cout turhaa ) ) {
break;
}
cout
"mutta se ei kuitenkaan ole sama kuin looppi, jonka pyörähdysten määrää ei tiedetä koodaus vaiheessa."
Se on sama asia kuin luuppi, jonka pyörähdysten määrää ei tiedetä ajovaiheessa. Toki for voi päättyä ennen kuin lopetusehto tulee voimaan, mutta niin se voi whilekin. (Joskin break:ia käytetään yleensä virhetilanteissa. Kun silmukan ehtona on for:n tapauksessa suoritusten määrä ja while:n tapauksessa suoritusehto, niin break indikoi yleensä (käytännössä aina) jotain hätää suorituksessa.)
"Eli käsitin, että tarkoitit juuri tuollaista foria, jonka suoritus loppuu ennen kuin forin ehto täytyy."
Ok, en tarkoittanut sitä vaan tapausta, jossa ajovaiheessa ei tiedetä suoritusten lukumäärää. Tällöin while on paikallaan.
Sitäkö, että montako kertaa tulee kahta noppaa heittää jotta tulee kaksi samanlaista?
Ts. haet vastausta MONTAKO KERTAA vaiko ylipäätään haluat kaksi samanlaista?
Jälkimmäinen olisi 'helppo' jo siksi, että siinähän ei ole mitään järkeä?