obliczanie pola prostokąta

0

Co tutaj jest źle należało obliczyć pole prostokąta wyskakuje błąd expected primary-expression before float

#include <iostream>
using namespace std;
float pole_prostokata(float a, float b, float wynik);
float a, b, wynik;
int main()
{
    cout << "podaj pierwszy bok";
    cin >> a;
    cout << "podaj drugi bok";
    cin >> b;
    cout << "wynik mnozenia" << pole_prostokata(float a, float b, float wynik) << endl;
}
float pole_prostokata(float a, float b, float wynik)
{
    wynik = a * b;
    return wynik;
}

2

Wywołując funkcje nie podajesz typów ich argumentów

0

czyli jak to powinno wyglądać?

3

Deklaracja funkcji:
double sinus(double x) - funkcja zwraca double i przyjmuje 1 argument typu double
Wywołanie funkcji:
sinus(0.5) - nie podajesz typu argumentu

Dodatkowo:

  • dlaczego wynik jest parametrem funkcji?
  • dlaczego używasz float zamiast double?
  • dlaczego wypisujesz "wynik mnożenia", gdy operacją logiczną, którą wykonujesz jest obliczanie pola prostokąta?
0

nie rozumiem możesz poprawić mój kod może wtedy będzie mi lepiej to pojąć?

2

Jak pisał @kq: wywal ten parametr wynik i wołaj funkcję od liczb, a, b, bez podawania typów; Masz pod ręką jakikolwiek podręcznik?

1

Zamiast pole_prostokata(float a, float b, float wynik) chcesz mieć pole_protokota(a, b, wynik). A potem przeczytaj jeszcze raz wszystkie uwagi tutaj i się do nich zastosuj, bo to w miarę poważne problemy są.

0

Już działa :)

1
Nikto0 napisał(a):

Argument 'wynik' jest zbędny. Widzę czasem tą manierę u początkujących, ale to zła maniera. To się pisze tak:

float pole_prostokata(float a, float b)
{
    float wynik;
 
     wynik = a * b;
     return wynik;
 }

2

Zmienna 'wynik' jest zbędna. Widzę czasem tą manierę nie tylko u początkujących, ale to zła maniera. To się pisze tak:

float pole_prostokata(float a, float b) { return a * b; }
0

Nie wiem dlaczego mi nie działa program też obliczający pole prostokąta ale inaczej napisany. Proszę o pomoc.

#include <iostream>
using namespace std;
void czytaj_dane();
void przetworz_dane();
void wyswietl_wynik();
float a, b, pole;
int main()
{
    void czytaj_dane();
    void przetworz_dane();
    void wyswietl_wynik();
}
void czytaj_dane()
{
    cout << "podaj pierwszy bok";
    cin >> a;
    cout << "podaj drugi bok";
    cin >> b;
}
void przetworz_dane()
{
    pole = a * b;
}
void wyswietl_wynik()
{
    cout << "pole prostokata o bokach" << a << " i " << b << "jest rowne" << pole << endl;
}

0

"Nie działa", a co mówi kompilator?

0

kompiluje się bez błędów

2

Rzeczywiście, nawet się wykona bez błędów, bo jak Chcesz zawołać funkcję, to nie stawiasz przy niej typu. Generalnie, taki sposób programowania, na zmiennych globalnych, to zło w czystej postaci; niech Twoje funkcje przyjmują parametry i zwracają wyniki.

0

Dzięki :)

1
Nikto0 napisał(a):

kompiluje się bez błędów

Wypadało by po ROKU obecności na forum, cokolwiek nt języka C/C++ przeczytać, tak pierwszy raz w życiu.
Błędy i niedogodności może popełniać każdy, ale Tobie zupełnie, w stopniu zerowym brakuje opatrzenia się jak źródła C/C++ wyglądają.
Strzelasz CtrC CtrlV, czasem się uda - czasem nie, forum ratuj.

1
lion137 napisał(a):

Rzeczywiście, nawet się wykona bez błędów, bo jak Chcesz zawołać funkcję, to nie stawiasz przy niej typu. Generalnie, taki sposób programowania, na zmiennych globalnych, to zło w czystej postaci; niech Twoje funkcje przyjmują parametry i zwracają wyniki.

Wyrażenie: "... zło w czystej postaci ..." - do początkującego nie przemówi.
Natomiast małe zadanko:
Wykorzystując napisane funkcje wprowadź dane 3-ch prostokątów i wypisz wymiary tego który ma największą powierzchnie.
Przy dobrze napisanych funkcjach to chwila, przy źle napisanych ... no coś trzeba zacząć od ich przepisania.

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