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

Trójmian kwadratowy funkcje c++

Object Storage Arubacloud
0 głosów
356 wizyt
pytanie zadane 5 lutego 2023 w C i C++ przez Martita Bywalec (2,500 p.)
edycja 5 lutego 2023 przez Martita

Jestem początkująca. Szukałam i nie znalazłam.

Mam takie zadanie

Zrobiłam ten program jak niżej i zdaje mi się, że dobrze działa. Proszę o sprawdzenie.

#include <iostream>  
#include <math.h>

using namespace std;

 double a ,b, c, delta, x, x1, x2; // Dane typu "float".

 int main()

{ 

    cout<<"Program oblicza trójman kwadratowy a * x^2 + b * x + c"; // Tekst wyświetlany na konsoli.
    
    cout<<"\n Podaj a ";
    cout<<endl; // Przejście kursora do nowej linii.
    cin>>a; // Przypisane podanej wartości do zmiennej "a".
    
    cout<<"Podaj b ";
    cout<<endl;
    cin>>b;
    
    cout<<"Podaj c ";
    cout<<endl;
    cin>>c;


    
    if(a==0)
        {
            cout<<"To nie jest r\242wnanie kwadratowe ";
            cout<<endl;  
        }
        else
        {
            delta=(b*b)-(4*a*c); // Wyznaczenie delty
            cout<<"delta = " <<delta;
            cout<<endl;

            if (delta<0) 
                    {
                        cout<<"R\242wnanie nie ma pierwiastk\242w x1 i x2"; 
                        cout<<endl;
                    }
                    else if (delta==0) 
                            {
                                x1=-b/(2*a); 
                                cout<<"x1 = " <<x1;
                                cout<<endl;
                            }
                            else
                                {
                                    x1=(-b-sqrt(delta))/(2*a);
                                    x2=(-b+sqrt(delta))/(2*a);
                                    cout<<"xl="<<x1<<"\tx2="<<x2;
                                    cout<<endl;
                                }

        }


    system("pause");
    return 0;

}

 

Mam też drugie zadanie rozdzielić to na 2e funkcje i tutaj pomimo, że nie wyskakuje mi żaden błąd źle liczy. Nie wiem co robię źle. Proszę o pomoc.

#include <iostream>  
#include <math.h>

using namespace std;

double delt(int a, int b, int c, double delta)
{
    if(a==0)
        {
            return (a==0);
        }
        else
        {
            delta=(b*b)-(4*a*c);
        }
}

float pierwiastek_rownania(int a, int b, int c, int delta, float x, float x1, float x2)
{
    if(a==0)
        {
            return (a==0); 
        }
        else
        {
            delta=(b*b)-(4*a*c); 

            if (delta<0) 
                    {
                        cout<<"R\242wnanie nie ma pierwiastk\242w x1 i x2"; 
                        cout<<endl;
                    }
                    else if (delta==0) 
                            {
                                x1=-b/(2*a); 
                            }
                            else
                                {
                                    x1=(-b-sqrt(delta))/(2*a);
                                    x2=(-b+sqrt(delta))/(2*a);
                                }

        }
}

double a ,b, c, x, x1, x2, delta;

int main()
{
    cout<<"Program oblicza trójman kwadratowy a * x^2 + b * x + c"; 
    
    cout<<"\n Podaj a ";
    cout<<endl; 
    cin>>a; 
    
    cout<<"Podaj b ";
    cout<<endl;
    cin>>b;
    
    cout<<"Podaj c ";
    cout<<endl;
    cin>>c;

    if(a==0)
        {
            cout<<"To nie jest r\242wnanie kwadratowe ";
            cout<<endl;  
        }
        else
        {
            cout<<"delta = " <<delta;
            cout<<endl;

            if (delta<0) 
                    {
                        cout<<"R\242wnanie nie ma pierwiastk\242w x1 i x2"; 
                        cout<<endl;
                    }
                    else if (delta==0) 
                            { 
                                cout<<"x1 = " <<x1;
                                cout<<endl;
                            }
                            else
                                {
                                    cout<<"xl="<<x1<<"\n x2="<<x2;
                                    cout<<endl;
                                }

        }
    

    system("pause");
    return 0; 
    
}

 

komentarz 6 lutego 2023 przez Martita Bywalec (2,500 p.)
Przerobiłam ten kurs. Niestety jestem słaba z matmy i mam problem z logicznym myśleniem. Napisze program, gdzie nie trzeba zastosować matematyki. Wykładowca też słabo tłumaczy. Dopiero teraz nie dawno ktoś mi podpowiedział żeby zacząć nauke programowania od przerobienia kursu z harvardu cs50. Tam zaczyna się nauke programowania od scratch. Właśnie przerabiam scratch. Zadania na zaliczenie przedmiotu mam zrobić do 14 lutego.

Dzięki
komentarz 6 lutego 2023 przez TOWaD Mądrala (6,000 p.)

A tu z podziałem na zadania,

Ale swoją droga pewnie prostszego kursu niż Pana Mirka ciężko znałeś. Ale w sumie do każdego trafia coś innego. Ja prościej nie umiem wytłumaczyć, więc więcej nie pomogę.

komentarz 6 lutego 2023 przez Martita Bywalec (2,500 p.)
Dzięki bardzo zrozumiale tłumaczą na kursach cs50 tylko tam nie ma c++. Jest tylko c, python, scratch, javascript.
komentarz 6 lutego 2023 przez Martita Bywalec (2,500 p.)

Wielkie dzięki zrobię z void. Mam nadzieje że mi zaliczy.

A tu z podziałem na zadania,

Ale swoją droga pewnie prostszego kursu niż Pana Mirka ciężko znałeś. Ale w sumie do każdego trafia coś innego. Ja prościej nie umiem wytłumaczyć, więc więcej nie pomogę.

 

Wstaw to w odpowiedź żebym mogła twoje rozwiązanie jako najlepsze.

komentarz 6 lutego 2023 przez TOWaD Mądrala (6,000 p.)

Następnym razem wstawię w odpowiedz, teraz, jak jest rozwiązanie to można zamknąć.

Wielkie dzięki zrobię z void. Mam nadzieje że mi zaliczy.

Na to nie mam wpływu, to zależy co autor miał na myśli. Ale tu wydaje mi się taki podział za naturalny.

Funkcje które coś zwracają to by musiało być tak:


#include <iostream>
#include <cmath>
float x1 (float a, float b, float delta)
{
return -b - sqrt (delta) / 2 / a;
    
}
float x2 (float a, float b, float delta)
{
return -b + sqrt (delta) / 2 / a;
}

float delta (float a, float b, float c)
{
return b*b - 4*a*c;
}

using namespace std;

int
main ()
{
  //... kod wczesniej
  if(a!=0){
      // wywołanie funkcij x1(a,b,delta) i x2(a,b,delta)
  }
//... kod później
  return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 5 lutego 2023 przez polandonion Mądrala (7,040 p.)
46. linia

spróbój zadeklarować te zmienne ponad wszystkimi funkcjami, ale nadal pod using namespace std;
komentarz 6 lutego 2023 przez Martita Bywalec (2,500 p.)
edycja 6 lutego 2023 przez Martita

Prawie jest dobrze ale nie do końca dobrze liczy.

Wpisze 2 2 --2
delta = 20 i to jest dobrze
Natomiast x1 i x2 pokazuje 0 a powinno
x1 : 0.6
x2 : -1.6

 

Wpisze 2 0 0
delta = 0 i to jest dobrze
Natomiast x1 pokazuje 0 a x2 nie pokazuje
 

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

double delt (int a, int b, int c, double delta)
{
    return delta = (b * b) - (4 * a * c);
}

double pierwiastek (int a, int b, int c, double delta, double x1, double x2)
{
  if (a == 0)
    {
      cout<<"Cholero nie dziel przez zero";
      cout<<endl; 
    }
    else
        {
        if (delta < 0)
	        {

	        }
            else if (delta == 0)
	                {
	                    x1 = -b / (2 * a);
	                }
                    else
	                    {
	                        x1 = (-b - sqrt (delta)) / (2 * a);
	                        x2 = (-b + sqrt (delta)) / (2 * a);
	                    }

        }
}

int a, b, c;
double x, x1, x2, delta;

int
main ()
{
  cout << "Program oblicza trC3jman kwadratowy a * x^2 + b * x + c";

  cout << "\n Podaj a ";
  cout << endl;
  cin >> a;

  cout << "Podaj b ";
  cout << endl;
  cin >> b;

  cout << "Podaj c ";
  cout << endl;
  cin >> c;

  delta=delt(a,b,c, delta); 
  pierwiastek (a,b,c,delta,x1,x2);

   if (a == 0)
      {
        cout << "To nie jest r\242wnanie kwadratowe ";
        cout << endl;
      }
        else
            {
                cout << "delta = " << delta;
                cout << endl;

            if (delta < 0)
	            {
	                cout << "R\242wnanie nie ma pierwiastk\242w x1 i x2";
	                cout << endl;
	            }
                else if (delta == 0)
	                    {
	                        cout << "x1 = " << x1;
	                        cout << endl;
	                    }
      else
	        {
	            cout << "xl=" << x1 << "\n x2=" << x2;
	            cout << endl;
	        }

            }

  system("pause");
  return 0;

}

 

 

komentarz 6 lutego 2023 przez Oscar Nałogowiec (29,320 p.)

W funkcji delt czwarty parametr jest niepotrzebny i podstawienie przy return - tą funkcje już miałaś uproszczoną.

Zmiana wartości parametru (x1 i x2) nie działa. Więc podstawienie w liniach 30 i 31 są nieskuteczne - parametr x1 i x2 to inne zmienne niż te zmienne globalne x1 i x2. By można było tą nową wartość przekazać do funkcji main musisz inaczej przekazać parametry - mianowicie przez referencje.  Zmień nagłowek funkcji pierwiastek_równania na:

double pierwiastek (int a, int b, int c, double delta, double &x1, double &x2)

Taka zmiana powinna wystaczyć.

komentarz 6 lutego 2023 przez Martita Bywalec (2,500 p.)
Dzięki umknęło mi. Gorzej myślę bo jestem chora i mam silny kaszel.
komentarz 6 lutego 2023 przez Martita Bywalec (2,500 p.)
Wielkie dzięki teraz już wszystko działa. Wielkie dzięki za anielską cierpliwość.
komentarz 6 lutego 2023 przez Martita Bywalec (2,500 p.)
Jak ci mogę wystawić najlepszą odpowiedź?

Podobne pytania

0 głosów
2 odpowiedzi 3,414 wizyt
pytanie zadane 7 października 2018 w C i C++ przez Vitall Początkujący (400 p.)
0 głosów
2 odpowiedzi 282 wizyt
pytanie zadane 23 października 2023 w C i C++ przez maxkolanko1998 Gaduła (3,230 p.)
+1 głos
1 odpowiedź 152 wizyt
pytanie zadane 12 grudnia 2021 w C i C++ przez Wiktor51207 Początkujący (380 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!

...