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

Program działa w nieodpowiedni sposób (daje zły wynik)

0 głosów
605 wizyt
pytanie zadane 15 listopada 2020 w C i C++ przez MrCrow Nowicjusz (120 p.)

Witam wszystkich smiley

Zasadniczo miałem za zadanie napisać program liczący pole trapezu w taki sposób, aby użyć w nim funkcji.

Jestem zupełnie nowy w programowaniu i niestety nie wiem co robię źle, ale program niezależnie od wprowadzanych wartości, za każdym razem podaje, że wynikiem jest 0.

Bardzo proszę o pomocsmiley

#include <iostream>
using namespace std;
string a,b,h;
double dzialanie (double a, double b, double h);
int main ()
{double w;
 double r;
 cout << "Witaj, aby obliczyc pole trapezu, wprowadz najpierw dlugosc podstawy a"<< endl;
 cin >> a;
 cout << "Wprowadz teraz dlugosc podstawy b"<<endl;
 cin >> b;
 cout <<"Teraz wprowadz wysokosc h"<<endl;
 cin>> h;
 dzialanie;
 w=r*0,5;
 cout<<"Pole tego trapezu wynosi"<<w<<endl;
 return 0;


}
double dzialanie (double a, double b, double h)
{   double r;
    r=a*b*h;
    return r;
}

 

komentarz 15 listopada 2020 przez MrCrow Nowicjusz (120 p.)
Dodam jeszcze, że z rozpędu błąd popełniłem dodatkowo w samym wzorze na pole trapezu, którym oczywiście jest (a+b)*h:2, a nie a*b*h:2

2 odpowiedzi

+1 głos
odpowiedź 15 listopada 2020 przez p099 Mądrala (6,390 p.)

Po pierwsze nie wywołujesz nigdzie funkcji, nie przekazujesz żadnych argumentów i po twojej logice chciałeś zrobić pole trapezu z 1/2 i wynikiem funkcji działanie lecz to jest bardzo zła praktyka.

#include <iostream>

using namespace std;

double dzialanie(double a, double b, double h);

int main() {
  double a, b, h;
  double w;
  double r;
  cout << "Witaj, aby obliczyc pole trapezu, wprowadz najpierw dlugosc podstawy a" << endl;
  cin >> a;
  cout << "Wprowadz teraz dlugosc podstawy b" << endl;
  cin >> b;
  cout << "Teraz wprowadz wysokosc h" << endl;
  cin >> h;
  w = dzialanie(a, b, h);
  cout << "Pole tego trapezu wynosi " << w << endl;
  return 0;
}

double dzialanie(double a, double b, double h) {
  double r;
  r = 0.5 * (a + b) * h;
  return r;
}

 

komentarz 15 listopada 2020 przez MrCrow Nowicjusz (120 p.)
Dziękuję serdecznie.
0 głosów
odpowiedź 15 listopada 2020 przez wizarddos Nałogowiec (27,970 p.)

1. typ danych wprowadzanych to string a nie double. Skoro to napis to jak wykonać obliczenia na nim (no chyba że umiesz i mnie oświecisz).

2. może przerzuć te zmienne(a,b,h) do main. 

3.tam nawet nie widać wywołania tej funkcji. dodaj nawiasy i w nich atrybuty oraz przypisz ich wartość do zmiennej r (z maina)

4.Może zamiast mnożyć przez pół podzielisz przez 2. jak we wzorze

5. co do funkcji nie musisz tworzyć nowych zmiennych lokalnych. cała funkcja może wyglądać tak

double dzialanie (double a, double b, double h){
    return a*b*h;
}

 

1
komentarz 15 listopada 2020 przez MrCrow Nowicjusz (120 p.)
Bardzo dziękuję za odpowiedź.

Podobne pytania

0 głosów
2 odpowiedzi 372 wizyt
0 głosów
1 odpowiedź 348 wizyt
pytanie zadane 15 stycznia 2020 w C i C++ przez xZenit Użytkownik (760 p.)
0 głosów
1 odpowiedź 675 wizyt
pytanie zadane 20 czerwca 2021 w C i C++ przez Martita Bywalec (2,520 p.)

93,604 zapytań

142,526 odpowiedzi

322,991 komentarzy

63,088 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
...