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

'iloraz' was not declared in this scope

Cloud VPS
0 głosów
907 wizyt
pytanie zadane 4 maja 2020 w C i C++ przez kwazi Nowicjusz (120 p.)
#include <iostream>

using namespace std;

int main ()
{
	float a;
	float b;
	
	cout<<"podaj liczbe"<<endl;
	cout<<"a= ";
	cin>>a;
	cout<<"b= ";
	cin>>b;
	if (b= 0)
	{
		iloraz= a/b;
		cout<<"a/b= "<<iloraz;
	}
	else
	    cout<<"nie dzielimy przez zero";
	return 0;
}

co mam zrobić żeby nie było tego błędu bo wymiękam

2 odpowiedzi

0 głosów
odpowiedź 4 maja 2020 przez Arkadiusz Sikorski Pasjonat (20,160 p.)
edycja 4 maja 2020 przez Arkadiusz Sikorski

Odpowiadając na Twoje pytanie, to nie zadeklarowałeś nigdzie zmiennej iloraz.

Najlepiej byłoby ją zadeklarować tam, gdzie jest potrzebna (a nie w zakresie globalnym, jak to w komentarzu do swojej odpowiedzi napisał zkff56). Zadeklaruj ją w funkcji main "obok" deklaracji zmiennej a oraz b i będzie dobrze :)

---

W Twoim programie jest jeszcze inny ważny błąd:

if (b= 0)

powinno być zamienione na:

if (b != 0)

ponieważ operator = jest operatorem przypisania i (zazwyczaj) nie chcesz używać go w wyrażeniach warunkowych, często jest mylony z operatorem porównania ==. Oczywiście w tym wypadku chcesz sprawdzić czy możesz dzielić, czyli czy b jest różne (!=) od zera.

Edit: uwzględnienie uwagi z komentarza.

2
komentarz 4 maja 2020 przez tkz Nałogowiec (42,040 p.)
if (b= 0)
    {
        iloraz= a/b;
        cout<<"a/b= "<<iloraz;
    }
    else
        cout<<"nie dzielimy przez zero";

Jesteś pewny, że powinno być ==?

Poza tym 

if (b= 0)

To będzie zawsze prawdą.

komentarz 4 maja 2020 przez zkkf56 Dyskutant (8,710 p.)
A dlaczego nie w zakresie globalnym? Jak będzie chciał robić kiedyś inne funkcje i w nich wykorzystać tę zmienną?
komentarz 4 maja 2020 przez Arkadiusz Sikorski Pasjonat (20,160 p.)

@zkkf56: to wtedy sobie przekaże wartość zmiennej iloraz jako parametr funkcji cheeky. Nie ma co nadużywać zmiennych globalnych.

@tkz: pierwsza uwaga trafna, poprawiłem odpowiedź. Dzięki!

Co do drugiej, to o ile pamiętam, to wartość wyrażenia "b = 0" będzie równa wartości b po tym przypisaniu, czyli w tym wypadku 0. Zero jest tożsame z fałszem, czyli w rezultacie zawsze powinna być wykonana gałąź druga, z wiadomością o niedzieleniu przez zero.

komentarz 4 maja 2020 przez tkz Nałogowiec (42,040 p.)
Fakt, operator przypisania, zwraca wartość przypisaną, w tym przypadku faktycznie masz rację.
–1 głos
odpowiedź 4 maja 2020 przez zkkf56 Dyskutant (8,710 p.)
Nie zadeklarowałeś zmiennej iloraz.
komentarz 4 maja 2020 przez zkkf56 Dyskutant (8,710 p.)

Uzupełnię twój kod:
 


#include <iostream>
 
using namespace std;

//Musisz zadeklarować zmienną
float iloraz;

int main ()
{
    float a;
    float b;
     
    cout<<"podaj liczbe"<<endl;
    cout<<"a= ";
    cin>>a;
    cout<<"b= ";
    cin>>b;
    if (b= 0)
    {
        iloraz= a/b;
        cout<<"a/b= "<<iloraz;
    }
    else
        cout<<"nie dzielimy przez zero";
    return 0;
}

Myślę, że to wszystko i możesz zamykać temat, pozdrawiam :)

1
komentarz 4 maja 2020 przez tkz Nałogowiec (42,040 p.)
Nie wszystko, tego if'a też należy poprawić, bo wątpię by był taki zamysł. Zważając na to, że dzielenie przez 0 w c++ jest ub.
komentarz 4 maja 2020 przez zkkf56 Dyskutant (8,710 p.)
Racja.

Podobne pytania

0 głosów
1 odpowiedź 786 wizyt
pytanie zadane 23 października 2019 w C i C++ przez darekdede1995 Nowicjusz (180 p.)
0 głosów
1 odpowiedź 573 wizyt
0 głosów
2 odpowiedzi 925 wizyt
pytanie zadane 10 grudnia 2018 w C i C++ przez KerivePL Początkujący (310 p.)

93,483 zapytań

142,417 odpowiedzi

322,763 komentarzy

62,895 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

Kursy INF.02 i INF.03
...