program rozwiązuje równanie liniowe

0

Witam wszystkich, muszę napisać program, który wczyta od użytkownika trzy liczby rzeczywiste a, b, c, a następnie rozwiązuje równanie liniowe
ax+b=c

Tak wygląda mój kod:
Gdzie popełniam błąd ?

#include <iostream>

using namespace std;

int main()
{
    float a, b, c;
    cin >> a >> b >> c;
    if(a==0)
    if(b==0)
    cout << "Nieskonczenie wiele rozwiazan";
    else
      cout << "Brak rozwiazan";
  else{
    float x;
    x=-b/a;
    cout<<x;
  };
  cout<<endl;
 }
3
miko1282 napisał(a):

Gdzie popełniam błąd ?

    if(a==0)
    if(b==0)
    cout << "Nieskonczenie wiele rozwiazan";
    else
      cout << "Brak rozwiazan";

No chociażby nie używając klamer, co gorsza nie używając ich gdy masz pozagnieżdżane warunki.

1

Raczej problemem jest brak myślenia. Nie doczytałeś zadania i zignorowałeś wartość c.
Równanie masz a*x + b = c a nie a*x + b = 0.

0
MarekR22 napisał(a):

Raczej problemem jest brak myślenia. Nie doczytałeś zadania i zignorowałeś wartość c.

Czy mógłbym prosić o wytłumaczenie ? Dlaczego mam podać C, które jak myślałem program ma wyliczyć, może źle byłem uczony w szkole, wydawało mi się że c występuje w równaniu kwadratowym, jesli ax+b=c to mam podać c ?

1
miko1282 napisał(a):

Dlaczego mam podać C, które jak myślałem program ma wyliczyć, może źle byłem uczony w szkole, wydawało mi się że c występuje w równaniu kwadratowym, jesli ax+b=c to mam podać c ?

Widać uczyli Cię jedynie, że równanie może wyglądać tak: y = ax + b i Twoim zadaniem zawsze będzie liczenie, jakie y wychodzi dla danego x.

Najwyraźniej rozwiązaniem zadania jest taki x, dla którego y=c. Zauważyłeś, że w zadaniu nie ma mowy o podawaniu x? Pewnie właśnie dlatego.

0

Piszę od nowa, wiem wyśmiejecie mnie, co robię tu nie tak ?

#include <iostream>

using namespace std;

int main()
{
    int a,b,c,x;
    cin >> a >> b >> c;
    if(a!=0)
        {
        x=(c-b)/a;
        cout << x;
        }
    else if(b ==0 )
    {
        cout<< "brak rozwiazan";
    }
    else if(a == 0)
    {
        cout << "Nieskonczenie wiele rozwiazan";
    }

    return 0;
}
0

Nie mogę doszukać się błędu brakuje mi: "brak rozwiazan"

1

No to zastanów się, w jakiej sytuacji nie będzie rozwiązań i jak się to ma do warunków, które naklepałeś.

Podpowiedź: nie będzie jeśli y=ax + b oraz y=c nigdy się nie przetną.

0

Tu masz dane testowe to przeanalizowania:

0 0 0
0 1 0
0 1 1
0 1 2
1 2 3

https://wandbox.org/permlink/HjWJ5V96YxpyMf76

3

Ale rak :) Jakbyś przeczytał artykuł na wikipedii:
https://pl.wikipedia.org/wiki/R%C3%B3wnanie_liniowe
albo podręcznik, to kod byłby bezpośrednim tłumaczeniem:

int main(){
	double a,b,c,x;
    cin >> a >> b >> c;
    b = c - b;
    if(a != 0){
         x = b / a;
        cout << x <<"\n";
        }
    else{
		if (b == 0)
			cout << "Nieskończenie wiele rozw\n";
		else
			cout << "Brak rozw\n";
    }

	return 0;
}

Jeśli zaś założymy, że gdy a = 0 równanie nie jest liniowe, to w else będzie: Nieprawidłowe dane - równanie stopnia zero!.

0

Bardzo dziękuję za wyjaśnienie, faktycznie wystarczył artukuł do wikipedii i już widzę gdzie popełniałem błąd, bardzo dziękuję i pozdrawiam!

1 użytkowników online, w tym zalogowanych: 0, gości: 1