• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak opuścić pętle po podaniu prawidłowej odpowiedzi?

Object Storage Arubacloud
0 głosów
177 wizyt
pytanie zadane 7 listopada 2019 w C i C++ przez danielo665 Obywatel (1,040 p.)

Witam ,

Próbowałem wpisać brak i resume ale jedno i drugie gryzie się z else.

Chciałbym skończyć pętle po podaniu prawidłowej odpowiedzi .

#include <stdio.h>

int main(void) {
  int wewnetrzna,zewnetrzna;
  wewnetrzna=5;//liczba wesciowa
  zewnetrzna=5;//liczba wyjsciowa
  printf("Witaj w grze Zgadnij sekretna liczbe.\nMasz 10 szans aby odganąc sekretna liczbe.\nJezwli wpiszesz liczbe dostaniesz informacje czy liczba jest za duza czy za mala\nJezeli zgadniesz liczba pojawi na ekanie DOBRZE w przciwnym wyrazie czy liczba jest wyzsza czy nizsza.\nPOWODZENIA!\n");
 for(wewnetrzna=1;wewnetrzna<11;wewnetrzna++){
   printf("Podaj liczbe? (od 1 do 50)\n");
   scanf("%d",&zewnetrzna);
   
    if(wewnetrzna==zewnetrzna) printf("Dobrze!\n");
  
    else{
    if(wewnetrzna>zewnetrzna)printf("%d twoja liczba jest za mała\n",wewnetrzna<zewnetrzna);
    if(wewnetrzna<zewnetrzna)printf("%d twoja liczba jest za duza\n",wewnetrzna>zewnetrzna);

    }
 }

 

3 odpowiedzi

+1 głos
odpowiedź 7 listopada 2019 przez Tpk Nałogowiec (40,100 p.)

Robisz zwykłe break; ale to nie zadziała bo masz tam jakoś lekko przekombinowany else, if'a można skrócić do jednej linii jeżeli wykonuje tylko jedno polecenie i wtedy kończy się średnikiem w przeciwnym razie (tak jak u cb z else musisz użyć klamry), po drugie można użyć else...if.

Zasada prosta albo klamry w obu albo skrócone w obu:

http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Instrukcja-warunkowa-if-else/16

komentarz 7 listopada 2019 przez danielo665 Obywatel (1,040 p.)
dobra dzięki!
0 głosów
odpowiedź 7 listopada 2019 przez mmarszik Mądrala (7,390 p.)

Proszę, trzeba podac w przedziale <MINV,MAXV>, to pętla się przerwie:

https://github.com/mmarszik/eduValidLoop/blob/master/main.cpp

 

/**
 * Program wykonuje pętle, do póki użytkownik nie poda
 * poprawnej wartości [n] z przedziału obustronnie domkniętego <MINV,MAXV>
 */

#include <iostream>

const static int MINV = 10;
const static int MAXV = 20;

static int getN(const bool repeat) {
    if( repeat ) {
        std::cout << "Błąd, podaj jeszcze raz";
    } else {
        std::cout << "Podaj";
    }
    std::cout << "wartosc z przedzialu <" << MINV << "," << MAXV << ">" << std::endl;
    int n;
    std::cin >> n;
    std::cout << std::endl;
    return n;
}

int main(int argc, char *argv[])
{
    int n = getN(false);
    while( n > MAXV || n < MINV ) {
        n = getN(true);
    }
    std::cout << "Podales wartosc " << n << std::endl;
    return 0;
}

 

0 głosów
odpowiedź 7 listopada 2019 przez KumberTwo Dyskutant (8,270 p.)

A tak trochę od tematu, spróbuj pisać bardziej przyjazny dla oka kod. np. zamiast

for(wewnetrzna=1;wewnetrzna<11;wewnetrzna++)

zrób

for(wewnetrzna = 1; wewnetrzna < 11; wewnetrzna++)

Dobrze jest wstawiać spacje między niektórymi operatorami (+, - , >, <, *, /, % itd.). Mi trochę pomogło w szukaniu błędów i po prostu jakoś tak lepiej to wtedy wygląda. yes

Podobne pytania

0 głosów
1 odpowiedź 480 wizyt
0 głosów
0 odpowiedzi 167 wizyt
pytanie zadane 14 grudnia 2017 w C# przez Norbert Błaszczyk Nowicjusz (220 p.)
0 głosów
3 odpowiedzi 301 wizyt
pytanie zadane 13 czerwca 2018 w JavaScript przez Kiszony Użytkownik (630 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...