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

Jak wyjsc z petli?

Object Storage Arubacloud
0 głosów
1,156 wizyt
pytanie zadane 17 września 2015 w C i C++ przez stooczu Początkujący (480 p.)
edycja 17 września 2015 przez stooczu

Oto tresc zadania: Napisz program, który prosi użytkownika o podanie liczby całkowitej dodatniej. Następnie sprawdza, czy liczba ta ma 10 cyfr. Dla liczb, które mają 10 cyfr program ma wypisać na konsoli komunikat: OK!. Dla liczb większych lub mniejszych program ma wypisać na konsoli komunikat: NOT OK!.
 

    Dla przykładowych liczb:
    NOT OK!     123456789
    OK!         1234567890
    NOT OK!     12345678901
    ...

Problem polega na tym ze po wpisaniu liczby wiekszej od zalozmy 333 333 333 3 komunikat zapetla sie w nieskonczonosc. Warunek petli while celowo jest zrobiony zeby sie nie konczyla. Probowalem kompilowac w dev c++ i code bloksie.

Oto mój kod :
#include <iostream>
using namespace std;

int main()
{
    int i = 1;
    unsigned long int liczba = 0;

        while (i > 0)
            {
            cout << "Podaj liczbe: ";
            cin >> liczba;
            cout << endl;


                if ((liczba < 1000000000) || (liczba >= 10000000000) 
                {
                    cout << " NOT OK!" << endl;
                    continue;
                }
                else if ((liczba >= 1000000000) && (liczba < 10000000000)
                {
                    cout << " OK !" << endl;
                    continue;
                }
            }
        return 0;
}



Dopiero zaczynam swoja przygode i z tego co sie do tej pory nauczylem kod wyglada ok. Pozdrawiam.

3 odpowiedzi

+3 głosów
odpowiedź 17 września 2015 przez TurboSpencer Początkujący (260 p.)
Po pierwsze użyj stringa zamiast unsigned long int bo niepomieścisz naprawde dużych liczb

Po drugie zamiast pisać te dziwacze warunki w if'ach po wczytaniu liczby morzesz użyć .lenght();

zwracającej długość wyrazu
–1 głos
odpowiedź 17 września 2015 przez Boshi VIP (100,240 p.)
Kod jest tragiczny.  Do wyjścia z pętli masz break; Swoją drogą głupie zadanie, przy 50 cyfrowej liczbie też podasz  to w int? ...
komentarz 17 września 2015 przez Szahid Pasjonat (20,930 p.)
Fajnie że skrytykowałeś. Teraz pomóż koledze
komentarz 17 września 2015 przez stooczu Początkujący (480 p.)
nie chce wychodzic z petli tylko zaczac ja od poczatku. wpisalem continue bo juz nie mialem pomyslow jak wyjsc z tego ifa. Myslalem ze nie ma glupich zadan
komentarz 17 września 2015 przez Szahid Pasjonat (20,930 p.)
I miałeś racje. Poczekaj wrzuce to u siebie w kompilator i zobacze co da się zrobić
komentarz 17 września 2015 przez stooczu Początkujący (480 p.)
dzieki dzieki. sek w tym ze np. 1,1 * 10^10 bedzie dzialac, a 1,5 * 10^10 juz nie mimo ze obie liczby sa w tym samym przedziale. Nie mam pojecia dlaczego
komentarz 17 września 2015 przez Boshi VIP (100,240 p.)

Tak skrytykowałem, bo kod jest tragiczny... I pomogłem mu dając  wskazówkę.

w php

 

foreach(range(1,10) as  $v) {

    $liczba=rand(1,5555555);
    $ilosc=strlen((string)$liczba);

    if (($ilosc > 10 or $ilosc < 10)) echo nl2br("not ok \n");

    else if ($ilosc === 10) echo 'ok';
}

 

komentarz 17 września 2015 przez stooczu Początkujący (480 p.)
Dzieki ale wyobraz sobie ze nie kazdy zaraz po urodzeniu znal wszystkie funkcje instrukcje itp. Polecam przeanalizowac ostatnie zdanie zapytania.
komentarz 17 września 2015 przez Boshi VIP (100,240 p.)
Dlatego ci napisałem, że tragiczny kod.  Rzutuj wszystko na stringa, bo przy  liczbie 100 cyfrowej nie zrobisz tego.
–2 głosów
odpowiedź 17 września 2015 przez Szahid Pasjonat (20,930 p.)

Taki kod jest czytelniejszy. ( Jak zadajesz pytanie to w prawym dolnym roku tego menu co masz tam pogrubienie, czcionke itp jest opcja zrobienia tego co ja poniżej) 

#include <iostream> 
using namespace std;

int main() 
{ 
    int i = 1; 
    unsigned long int liczba = 0;

        while (i < 10) 
            { 
            cout << "Podaj liczbe: "; 
            cin >> liczba; 
            cout << endl;


                if ((liczba < 1000000000) || (liczba >= 10000000000) /*(liczba > 0) && (liczba < 1000000000) || (liczba > 9999999999)*/) 
                { 
                    cout << " NOT OK!" << endl; 
                    continue; 
                } 
                else if ((liczba >= 1000000000) && (liczba < 10000000000)/*(liczba >= 1000000000) && (liczba <= 9999999999)*/) 
                { 
                    cout << " OK !" << endl; 
                    continue; 
                } 
                i++; 
            } 
        return 0; 
} 

 

A!  Największa liczba 10 cyfrowa to 9999999999 a nie 1000000000

komentarz 17 września 2015 przez event15 Szeryf (93,790 p.)
Tak w odniesieniu do Twojego komentarza wyżej tam to pomocą na pewno nie jest napisanie za kogoś poprawnego rozwiązania.

"Nie wiem jak chodzić pomóżcie mi
- zobacz zrobię to za ciebie. widzisz? idę"

Lepiej jest dać wędkę niż rybę.
komentarz 17 września 2015 przez Boshi VIP (100,240 p.)
Tak, róbicie warunki na 1000000000000000000000000000000000 cyfrowo liczby zamiast zrzutować do stringa to...
komentarz 17 września 2015 przez krzemionskyy Użytkownik (630 p.)

A może zrobić to najprościej po stringu ?

#include <iostream>

using namespace std;

int main()
{
    int cyfry;
    string liczba;
    while(cin >> liczba)
    {
        cyfry = liczba.length();

    /........../

    return 0;
}

Dalej sam kombinuj,

Pozdrawiam ; )

Podobne pytania

0 głosów
1 odpowiedź 664 wizyt
pytanie zadane 7 stycznia 2017 w C i C++ przez pokrywa1 Użytkownik (990 p.)
0 głosów
1 odpowiedź 471 wizyt
pytanie zadane 16 maja 2018 w PHP przez intoksynator Gaduła (3,450 p.)
0 głosów
1 odpowiedź 346 wizyt
pytanie zadane 7 listopada 2017 w JavaScript przez revizor451 Obywatel (1,930 p.)

92,579 zapytań

141,431 odpowiedzi

319,657 komentarzy

61,963 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!

...