#include<stdio.h>
#include<iostream>
int minus(int a,int b)
{
int roznicaa;
roznicaa=a-b;
return roznicaa;
}
int plus(int a,int b)
{
int dodawanie;
dodawanie=a+b;
return dodawanie;
}
int razy(int a,int b)
{
int mnozenie;
mnozenie=a*b;
return mnozenie;
}
int podziel(int a,int b)
{
int dzielenie;
dzielenie=a/b;
return dzielenie;
}
int reszta(int a,int b)
{
int resztadziel;
resztadziel=a%b;
return resztadziel;
}
int main()
{
int a,b;
char znak[1];
printf("Obsluguje znaki %-reszta z dzielenia\n *-razy\n odejmowania i dodawania\n / dzielenia\n");
printf(" Podaj : znak / a / b\n");
scanf("%s %d %d",&znak[1],&a,&b);
switch (znak[1])
{
case '/': printf("Wynik dzielenia wynosi: %d",podziel(a,b));
break;
case '*': printf("Wynik mnozenia wynosi: %d",razy(a,b));
break;
case '%': printf("Reszta z dzielenia wynosi: %d",reszta(a,b));
break;
case '+': printf("Wynik dodawania wynosi ; %d",plus(a,b));
break;
case '-': printf("Wynik odejmowania wynosi : %d",minus(a,b));
break;
default: printf("Nie potrafie oblczyc z takim znakiem");
break;
}
system("PAUSE");
return 0;
}
- char znak[2];
- scanf("%s %d %d",znak,&a,&b);
- switch (znak[0]) lub switch(*znak)
powinno być jeszcze zabezpieczenie przed buffer overflowem (czyli jak ktoś zamiast 1 znaku poda troszkę więcej), ale już sobie odpuszcze wywody
Czyli przy wczytywaniu znaku nie potrzeba dawać &znak ?
Juz wszystko działa dziękuje za pomoc !
%s służy do wczytywania c-stringów. %c służy do wczytywania znaków. W przypadku stringów, nazwa tablicy jest wskaźnikiem na pierwszy element, więc nie trzeba jej podawać, w przypadku znaków, musisz podać adres do elementu więc używasz &.
"&znak[0]" jest jednoznaczne z samym "znak", a &znak[1] jest jednoznaczne z znak+1 i oznaczają kolejno wskaźnik na pierwszy element i wskaźnik na drugi element.
Jak rozumiem swoje dzieło robisz na Windowsie?
otóż - wyrażenie:
system("PAUSE");
może (raczej nie będzie) Ci działać na większości "linuxowych" kompilatorów. Mnie uczyli by się go wystrzegać - ale też kazali pisać absolutnie przenośne aplikacje :)