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

sprawdzenie kodu pętla while

Object Storage Arubacloud
0 głosów
397 wizyt
pytanie zadane 7 listopada 2017 w C i C++ przez mn130496 Gaduła (3,530 p.)

witam

Jestem studentem pierwszego roku informatyki.Ostatnio otrzymałem zadanie o treści:

Napisz program, który wczytuje z klawiatury liczbę, aż do chwili gdy będzie ona należała do
przedziału <120,150>. Wyświetlać podaną liczbę i informacje jakie liczby należy podać.

Napisałem program ale niestety nie działa prawidłowo(mogę wpisywać liczby w nieskończoność) prubowałem przerywać breakiem ale też nie działa.Czy ktoś

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int a;
    while(a=120&&a<150)
    {
        printf("Podaj liczbę: \n");
        scanf("%d",&a);


    }

    return (0);
}

mi powie co jest źle

2 odpowiedzi

0 głosów
odpowiedź 7 listopada 2017 przez SebekChlebek Stary wyjadacz (11,290 p.)
Zamiast a = 120 to a >= 120 bo przedział zamknięty.
0 głosów
odpowiedź 7 listopada 2017 przez niezalogowany

Wyrażenie:

a=120

Nie jest porównaniem, lecz przypisaniem. Operator porównania wygląda następująco: == (typowy błąd nowicjuszy).

Inna sprawa, że twój warunek jest niepoprawny, ponieważ z tego co rozumiem nie interesuje cię "liczba równa 120 i mniejsza niż 150" (btw jest to prawdziwe tylko dla wartości "120"), lecz "liczba w zakresie [120, 150]", czyli:

a >= 120 && a <=150 /* lub użyj >, < jeżeli nie interesują cię krawędzie przedziału */

 

komentarz 7 listopada 2017 przez mn130496 Gaduła (3,530 p.)

ok poprawiłem teraz po podaniu jakiej kolwiek liczby kończy mi  odrazu  program co  czy

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int a;
    while(a >=120 && a<= 150)
    {
        printf("Podaj liczbę: \n");
        scanf("%d", &a);
    }

    return (0);
}

coś jest jeszcze źle?

komentarz 7 listopada 2017 przez niezalogowany

Mała pomyłka w warunkach :P

Ta pętla ma się wykonywać tylko wtedy gdy liczba jest spoza przedziału, a nie w nim (a to sprawdza powyższy, podany przeze mnie warunek). Musisz zanegować to wyrażenie, a więc:

while(a < 120 || a > 150)

lub:

while(!(a >= 120 && a <= 150))

 

Podobne pytania

+1 głos
2 odpowiedzi 260 wizyt
pytanie zadane 22 maja 2023 w C i C++ przez Igor4567 Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 623 wizyt
pytanie zadane 27 kwietnia 2022 w C i C++ przez Mati323 Nowicjusz (210 p.)
+3 głosów
3 odpowiedzi 400 wizyt
pytanie zadane 27 kwietnia 2022 w Python przez urwis_marek Początkujący (260 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

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

...