Witam,
nie jestem jakimś mega laikiem z programowiania, no ale.
Mam takie oto zadanie:
Napisać program kalkulator.
Program ma wyświetlić menu z następującymi operacjami:
- Dodawanie
- Odejmowanie
- Mnożenie
- Dzielenie
- Silnia
- Wyjście
Każda z operacji ma być realizowana przez odpowiednią funkcję (np. double dodaj(double A, double B) - funkcja ma zwrócić odpowiednią wartość)
Zacząłem pisać, jednak mimo tego, że jest już właściwie prawie wszystko co potrzeba, wywala mi błędy przy return, a konkretnie:
kalkulator.cpp(47) : error C2440: 'return' : cannot convert from 'double (__cdecl *)(double,double)' to 'int'
i to samo przy kolejnych return.
Nie wiem o co mu chodzi, kombinowałem z różnymi wersjami, ale sam nie jestem w stanie wpaść na to o co mu chodzi. Prosiłbym o pomoc.
A oto i mój program:
#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include <iostream>
double dodaj(double a, double b)
{
return a+b;
}
double odejmij(double a, double b)
{
return a-b;
}
double mnozenie(double a, double b)
{
return a*b;
}
double dzielenie(double a, double b)
{
return a/b;
}
double silnia(double a)
{
int silnia = 1;
for(int i = 2; i <= a; i++)
silnia *= i;
return silnia;
}
int main()
{
double a, b;
int c;
poczatek: printf("1. Dodawanie\n2. Odejmowanie\n3. Mnożenie\n4. Dzielenie\n5. Silnia\n0. Wyjście\n");
scanf_s("d",&c);
switch(c)
{
case '0': break;
case '1':
{
printf("Podaj dwie liczby:\n");
scanf_s("%f %f", &a, &b);
return dodaj;
}
break;
case '2':
printf("Podaj dwie liczby:\n");
scanf_s("%f %f", &a, &b);
return odejmij;
break;
case '3':
printf("Podaj dwie liczby:\n");
scanf_s("%f %f", &a, &b);
return mnozenie;
break;
case '4':
printf("Podaj dwie liczby:\n");
scanf_s("%f %f", &a, &b);
return dzielenie;
break;
case '5':
printf("Podaj liczbe:\n");
scanf_s("%d", &a);
return silnia;
break;
default: printf("Wcisnij poprawny znak od 0-5\n\n");goto poczatek;
}
return 0;
}
Z góry dzięki za porady, wskazówki i pomoc