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

Problem z programem obliczającym pole i objętość - void i float

Object Storage Arubacloud
0 głosów
423 wizyt
pytanie zadane 27 maja 2022 w C i C++ przez rurku Nowicjusz (120 p.)

Dzień dobry,

Próbuję stworzyć program obliczający objętość i pole prostopadłościanu. Chodzi o to, żeby w dwóch przypadkach użyć funkcji void, oraz dwa razy zmiennych float. Pierwszy problem polega na tym, że przy uruchomieniu debugera podając zmienne a, b oraz h jako wynik pojawia się: 00007FF61EF21451.

Druga pytanie jest następujące: co należy napisać korzystając z float prostopadloscian2(float, float, float); oraz float prostopadloscian3();?

Obecnie program wygląda następująco:

// ConsoleApplication8.cpp : main project file.

#include "stdafx.h"
#include<iostream>

using namespace std;

void prostopadloscian(float, float, float);
void prostopadloscian1();
float prostopadloscian2(float, float, float);
float prostopadloscian3();

int main()
{
	float a, b, h;

	cout << "podaj a" << endl;
	cin >> a;
	cout << "podaj b" << endl;
	cin >> b;
	cout << "podaj h" << endl;
	cin >> h;

	cout << "objetosc prostopadloscianu wynosi: " << prostopadloscian;

	system("PAUSE");
}

void prostopadloscian(float a, float b, float h)
{
	float obj = a * b * h;
	obj = a * b * h;
	cout << "objetosc wynosi" << obj;
}

void prostopadloscian1()

{
	float obj;
	float a = 6;
	float b = 6;
	float c = 6;
	obj = a * b * c;
	cout << "objetosc prostopadloscianu wynosi: " << obj << endl;
}
komentarz 28 maja 2022 przez VBService Ekspert (252,740 p.)
edycja 28 maja 2022 przez VBService

BTW, jeśli chcesz użyć "odwołania" do funkcji w ten sposób

<< prostopadloscian

funkcja w takim przypadku musi "coś" zwrócić do "strumienia" <<, trzeba użyć return no i na końcu nazwy funkcji brakuje ()

 

przykład 1  [ on-line(użycie zmiennych globalnych - nie polecam, ale zadziała)

#include<iostream>
 
using namespace std;
 
void prostopadloscian1();
void prostopadloscian2();

void pause();

float a, b, h;

int main()
{
    cout << "podaj a" << endl;
     cin >> a;
    cout << "podaj b" << endl;
     cin >> b;
    cout << "podaj h" << endl;
     cin >> h;
 
    cout << "\nobjetosc prostopadloscianu wynosi: "; prostopadloscian1();
    cout << "\nobjetosc prostopadloscianu wynosi: "; prostopadloscian2();
 
    pause(); // system("PAUSE");

    return 0;
}
 
void prostopadloscian1()
{
    float obj = a * b * h;
    cout << obj;
}
void prostopadloscian2()
{
    cout << a * b * h;
}

void pause()
{
    cout << "\n\nPress Enter to continue ";
    cin.ignore();
    int flag = cin.get();
}

 

przykład 2  [ on-line

#include<iostream>
 
using namespace std;
 
void prostopadloscian1(float a, float b, float h);
void prostopadloscian2(float a, float b, float h);

void pause();

int main()
{
    float a, b, h;
    
    cout << "podaj a" << endl;
     cin >> a;
    cout << "podaj b" << endl;
     cin >> b;
    cout << "podaj h" << endl;
     cin >> h;
 
    cout << "\nobjetosc prostopadloscianu wynosi: "; prostopadloscian1(a, b, h);
    cout << "\nobjetosc prostopadloscianu wynosi: "; prostopadloscian2(a, b, h);
 
    pause(); // system("PAUSE");

    return 0;
}
 
void prostopadloscian1(float a, float b, float h)
{
    float obj = a * b * h;
    cout << obj;
}
void prostopadloscian2(float a, float b, float h)
{
    cout << a * b * h;
}

void pause()
{
    cout << "\n\nPress Enter to continue ";
    cin.ignore();
    int flag = cin.get();
}

 

przykład 3  [ on-line

#include<iostream>
 
using namespace std;
 
float prostopadloscian1(float a, float b, float h);
float prostopadloscian2(float a, float b, float h);

void pause();

int main()
{
    float a, b, h;
    
    cout << "podaj a" << endl;
     cin >> a;
    cout << "podaj b" << endl;
     cin >> b;
    cout << "podaj h" << endl;
     cin >> h;
 
    cout << "\nobjetosc prostopadloscianu wynosi: " << prostopadloscian1(a, b, h);
    cout << "\nobjetosc prostopadloscianu wynosi: " << prostopadloscian2(a, b, h);
 
    pause(); // system("PAUSE");

    return 0;
}
 
float prostopadloscian1(float a, float b, float h)
{
    float obj = a * b * h;
    return obj;
}
float prostopadloscian2(float a, float b, float h)
{
    return a * b * h;
}

void pause()
{
    cout << "\n\nPress Enter to continue ";
    cin.ignore();
    int flag = cin.get();
}

 

1 odpowiedź

+1 głos
odpowiedź 27 maja 2022 przez Apled Dyskutant (9,520 p.)

Wewnątrz funkcji main podajesz prostopadloscian bez nawiasów (), więc nie jest to wywołanie funkcji. Dodatkowo zapisujesz wartości z klawiatury do zmiennych a, b i h, ale nigdzie ich nie przekazujesz do funkcji. 

float obj = a * b * h;

    obj = a * b * h;

Tutaj dokonujesz zbędnego nadpisania zmiennej obj.

W kwestii funkcji float musisz dokonywać zwrócenia wyniku za pomocą return - a nie tak jak przy void, gdzie wypiszujesz wynik za pomocą cout.

Jakiego środowiska używasz? Dev-Cpp? 

komentarz 27 maja 2022 przez rurku Nowicjusz (120 p.)
Visual Studio 2022.
1
komentarz 27 maja 2022 przez Apled Dyskutant (9,520 p.)
To chyba używasz jakiegoś starego pliku, albo napisanego w innym środowisku, bo Visual Studio nie robi już pliku stdafx.h (i nie wiem co ty tam masz, ale jestem przekonany, że nic potrzebnego) i również nie używa się system("pause").

A co do kodu to jak wywołujesz prostopadloscian to w nawiasach podaj mu zmienne, żeby funkcja miała na czym operować.

Podobne pytania

0 głosów
3 odpowiedzi 1,459 wizyt
0 głosów
1 odpowiedź 3,001 wizyt
–5 głosów
2 odpowiedzi 1,982 wizyt
pytanie zadane 10 sierpnia 2016 w C i C++ przez james30k Bywalec (2,260 p.)

92,554 zapytań

141,399 odpowiedzi

319,535 komentarzy

61,938 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!

...