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

Instrukcja If w instrukcji If - C

0 głosów
53 wizyt
pytanie zadane 16 listopada 2020 w C i C++ przez Demeny Nowicjusz (150 p.)

Mam problem, gdyż kod od momentu wypisania zmiennej D, nie chce wykonywać kolejnych poleceń.

#include <iostream>
#include <string>
#include <stdio.h>
#include <math.h>
using namespace std;

int main() {
    int a,b,c;
    int D;
    int x1,x2;
    cout << "Podaj wspolczynnik kierunkowy a: ";
    cin >> a;
	while(a==0){
    	cout << "Podaj wspolczynnik kierunkowy a: ";
    	cin >> a;
    }
    if(a!=0){
		cout << "Podaj wspolczynnik b i c \n";
		cin >> b;
		cin >> c;
		D = b*b-4*a*c;
		cout << D;
		if(D==0){
			x1 = (-b)/2*a;
			cin >> x1;
			if(D<0){
				cout << "Brak pierwiastkow";
				if(D>0){
					x1 = ((-b)-sqrt(D))/2*a;
					x1 = ((-b)+sqrt(D))/2*a;
					cin >> x1;
					cin >> x2;
				}
			}
		}	
	}
    
   printf("\n");
    system("pause");
}

2 odpowiedzi

+2 głosów
odpowiedź 16 listopada 2020 przez tangarr VIP (136,860 p.)
wybrane 17 listopada 2020 przez Demeny
 
Najlepsza

Spójrz dokładnie na bloki kodu (definiowane przez nawiasy klamrowe).
Jeżeli D jest równe 0 to wejdziesz do pierwszego bloku. Pomijając błąd logiczny (pobranie zmiennej x1 zamiast wyświetlenia jej), dochodzisz do kolejnej instrukcji warunkowej (D < 0) która nigdy nie zostanie spełniona (ponieważ jesteśmy wewnątrz kodu który wywoła się tylko wtedy gdy gdy D jest równe 0). Gdyby w magiczny sposób w trakcie wykonania programu wartość zmiennej D się zmieniła na ujemną to w kolejnym bloku kodu byś sprawdzał czy zmienna D jest większa od 0.

Kod powinien wyglądać następująco:
 

if (warunek_1) {
}
else if (warunek_2) {
}
else {
// ten kod się wykon tylko kiedy żaden w warunków nie został spełniony
}

 

0 głosów
odpowiedź 16 listopada 2020 przez Oscar Pasjonat (19,910 p.)

Masz po prostu sprzeczne warunki. Jeśli D == 0 to nie może być jednocześnie >0 i <0;

Gdzieś zapomniałeś o else.

Podobne pytania

0 głosów
2 odpowiedzi 56 wizyt
pytanie zadane 13 października w C i C++ przez marchee Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 105 wizyt
pytanie zadane 22 października 2019 w C i C++ przez xZenit Użytkownik (760 p.)
0 głosów
2 odpowiedzi 134 wizyt
pytanie zadane 13 marca 2019 w C i C++ przez gepard Nowicjusz (120 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

85,715 zapytań

134,509 odpowiedzi

298,542 komentarzy

56,631 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...