Začátečník v céčku
Ahoj začínám se učit programovat v jazyce C a mám malý problém. Měl jsem za úkol sestrojit jednoduchou kalkulačku to jsem zvládl, ale ještě bych potřeboval, aby po dělení když výsledek vyjde celý číslo tak, aby mi to nevyhazovala zbytečně zbytek po dělení 0. Nevím jak to vyřešit, zřejmě nějakou podmínkou ale nevím jak.
Díky za radu
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
float k;
char c;
ano:
printf("Zadej cislo a operaci [+,-,*,/,%%] a druhe cislo bez mezer:\nnapr 15*5:\n ");
while (1) {
if (scanf("%d%c%d",&i,&c,&j)==3)
break;
else{
printf("Chyba v zadani!!!\nZkus znova!\n");
while (getchar()!='\n')
;
}
}
switch(c){
case '+':
k=i+j;
printf("\nScitani \n %d + %d = %3.2f\n",i,j,k);
break;
case '-':
k=i-j;
printf("\nOdcitani \n %d - %d = %3.2f\n",i,j,k);
break;
case '*':
k=i*j;
printf("\nNasobeni \n %d * %d = %3.2f\n",i,j,k);
break;
case '/':
if (j==0){
printf ("Nulou nelze delit!!!\n");
break;
}
k=(float)i/(float)j;
printf("\nDeleni \n %d / %d = %3.2f\n",i,j,k);
case '%':
k=i%j;
printf("\nZbytek po deleni \n %d %% %d = %3.2f\n",i,j,k);
break;
default:
printf("\nSpatne zadano, zkus znova!");
break;
}
char znak;
printf("Chces pokracovat? [A/N]:\n");
while (getchar()!='\n')
;
znak=getchar();
if ((znak == 'a')||(znak == 'A'))
goto ano;
if ((znak == 'n')||(znak == 'N'))
goto ne;
printf("Mel jsi stisknout \'a\' nebo \'n\' a nikoli \'%c\'",znak);
ne:
printf("Konec programu, dekuji za pouziti\n\n");
return 0;
}
Díky moc za radu
A teraz ked tam napise na vstup 10%2 tak mu to nevypise ziaden vysledok
Ha.
On má tam i % - zbytek jako samostatnou operaci (funkci).
Za prve nepouzivaj float ale double. Nielen ze to ma vyssiu presnost ale aj printf %f potrebuje double, teraz to tam cita nejake bajty zo zasobnika ktore patria neicomu uplne inemu t.j. bude ti to nahodne vypisovat namiesto vysledku uplne nezmysly.
Za druhe zbytok po deleni je celociselna operaica takze vysledok je integer a ne float. Tak si to zmen na integer.
Za tretie vobec nechapem dotaz teda ze co vlastne chces
Aha uz asi chapem co chces, napriklad:
case '/':
if (j==0){
printf ("Nulou nelze delit!!!\n");
break;
}
k=(float)i/(float)j;
printf("\nDeleni \n %d / %d = %3.2f\n",i,j,k);
if(i%j == 0)
break;
inac cely program je tak trochu nezmysel ptz na vstup nemozes dat desatinne cisla. Slusne sa to riesi cele uplne inac.