Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím,
mame mít kalkulačku přes ukazatele, něco sem vymyslel ale když to spustím tak mi to háže chybu, prosím o radu.
Předem díky...
#include<iostream.h>
using namespace std;
float vynasob(float *a,float *b)
{
float *x;
*x=(*a)-(*b);
return *x;
}
main()
{
float a,b;
char o;
cin>>a;
cin>>o;
cin>>b;
if(o=='*'){
cout<<"vysledek je:"<<vynasob(&a,&b)<<endl;
}
system("pause");
}
Offline
Zdravím,
třeba takto (4 způsoby - 1. způsob je netradiční):
#include <cstdlib>
#include <iostream>
using namespace std;
// První způsob - pomocné proměnné bez const (trošku netradiční způsob)
int scitani1(int ax, int bx) {
int *pom1 = &ax;
int *pom2 = &bx;
return *pom1 + *pom2;
};
// Druhý způsob - pomocné proměnné bez const
int scitani2(int *ax, int *bx) {
int *pom1 = ax;
int *pom2 = bx;
return *pom1 + *pom2;
};
// Třetí způsob - rovnou return a const
int scitani3(const int *ax, const int *bx) {
return *ax+ *bx;
};
// Čtvrtý způsob - vrátíme ukazatel na výsledek
int* scitani4(const int *ax, const int *bx) {
return new int(*ax + *bx);
};
// Použití
int main(int argc, char *argv[])
{
int a = 5;
int b = 2;
cout << scitani1(a, b);
cout << scitani2(&a, &b);
cout << scitani3(&a, &b);
int *c = scitani4(&a, &b);
cout << *c;
delete c;
system("PAUSE");
return 0;
}Offline
#include <iostream>
#include <cstdlib>
using namespace std;
float vynasob(float *a,float *b)
{
float *x;
*x=(*a)-(*b);
return *x;
}
int main()
{
float a,b;
char o;
cin>>a;
cin>>o;
cin>>b;
if(o=='*'){
cout<<"vysledek je:"<<vynasob(&a,&b)<<endl;
}
system("pause");
}...bez errorů
v c++ moc dlouho neprogramuju, ale neměla by ta funkce vynasob vpadat takhle: float * vynasob(..) když vrací ukazatel
Offline
Zdravím,
buď vrátíš klasicky výsledek, nebo ukazatel na výsledek (tím pádem je potřeba alokace):
int nasobeni1(int *ax, int *bx) {
return (*ax * *bx);
};
int* nasobeni2(int *ax, int *bx) {
return new int(*ax * *bx);
};Revolt: Proč máš operátor odečítání u operace násobení? :-) Každopádně v těhlech případech je použití pointers zbytečné. Ale když to tak někdo chce...
Offline
↑ RePRO: no já jsem jenom přepsal ten jeho kód, aby mu kompilátor neházel chyby, sémantickou stránku kódu jsem neřešil :-)
Offline