funguje
This commit is contained in:
parent
f763f96ae7
commit
f90fcf9a00
BIN
du4/program
Executable file
BIN
du4/program
Executable file
Binary file not shown.
145
du4/program.c
145
du4/program.c
@ -1,105 +1,76 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Name: Kalkulacka
|
|
||||||
Copyright:
|
|
||||||
Author: David Jancik
|
|
||||||
Date: 07/12/10 12:22
|
|
||||||
Description: Aplikace Kalkulačka - '+', '-', '*', '/', '^', 'o'
|
|
||||||
Thanks: V. Pospíchal - Děkuji moc za pomoc s funkcí na odmocňování.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//načtení knihoven
|
|
||||||
//tělo
|
|
||||||
int main() {
|
int main() {
|
||||||
|
|
||||||
int i,j; // pro cyklus
|
int i,j; // pro cyklus
|
||||||
double cislo, cislo2, vysledek, vysledek2, vysledek3; /*aby se mohlo počítat s desetinnými čísly*/
|
double number1, number2, summary, rsum, msum; /*aby se mohlo poèítat s desetinnými èísly*/
|
||||||
char operand; //načítání znaků
|
char operand, equ; //naèítání znakù
|
||||||
char pokracovat;
|
|
||||||
|
|
||||||
//přivítání do aplikace
|
scanf("%lf", &number1); // nacte prvni cislo, znamenko, druhe cislo
|
||||||
printf("Vitejte v aplikaci kalkulacka\nZadejte priklad napr.: 5.58 + 5.89 a potvrdte enterem\nPro napovedu zadejte '1?1'\nBy sczdavos - www.itnetwork.cz\n");
|
scanf("%c", &operand);
|
||||||
|
scanf("%lf", &number2);
|
||||||
|
scanf("%c", &equ);
|
||||||
|
scanf("%lf",&msum);
|
||||||
|
|
||||||
/*cyklus - vypočítá příklad a vrátí se na začátek a počítá do doby až je splněná podmínka
|
|
||||||
pokud je splněná podmínka cislo, cislo2 = 0 a operand = k program vypíše text a ukončí se*/
|
|
||||||
|
|
||||||
do {
|
|
||||||
printf("Zadejte priklad:\n");
|
|
||||||
scanf("%lf %c %lf", &cislo, &operand, &cislo2); // nacte prvni cislo, znamenko, druhe cislo
|
|
||||||
|
|
||||||
/*pokud se operand rovna deleni a delitel se rovna nule vypise chybu*/
|
/*pokud se operand rovna deleni a delitel se rovna nule vypise chybu*/
|
||||||
if((operand == '/') && (cislo2 == 0)){
|
if((operand == '/') && (number2 == 0)){
|
||||||
printf("Nulou nelze delit");
|
printf("Nulou sa nedá deli<6C>");
|
||||||
|
}
|
||||||
|
if(operand !='+' && operand !='-' && operand !='*' && operand !='/'){
|
||||||
|
return 1;
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
if(equ !='='){
|
||||||
|
return 1;
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//prepinac nacte promennou k a podle toho co v ni je provede dalsi prikazy
|
else if(operand=='+'){
|
||||||
switch(operand){
|
rsum=number1+number2;
|
||||||
case'+':
|
if(msum==rsum){
|
||||||
printf("%lf", cislo+cislo2); // jestlizze obsahuje + nacte se i a j a sectou se
|
printf("OK\n");
|
||||||
break; // ukonceni case pise se pod kazdym case
|
|
||||||
|
|
||||||
case'-':
|
|
||||||
printf("%lf", cislo-cislo2);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case'*':
|
|
||||||
printf("%lf", cislo*cislo2);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case'/':
|
|
||||||
printf("%lf", cislo/cislo2);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case'^':
|
|
||||||
/*do promenne vysledek se nacte cislo a to se pak nasobi cislem tolikrat dokud neni splnena podminka*/
|
|
||||||
vysledek = cislo;
|
|
||||||
for (i=1; i<cislo2; i++) {
|
|
||||||
vysledek *= cislo;
|
|
||||||
}
|
}
|
||||||
printf("%lf", vysledek);
|
else{
|
||||||
break;
|
printf("ZLE\n");
|
||||||
|
}
|
||||||
case'o':
|
printf("%lf\n",rsum);
|
||||||
//cyklus na odmocnovani
|
}
|
||||||
/*nejdrive se vezme cislo a pricte se k nemu libovolne cislo pak se vydeli mocninou to je prvni krok, pote se to cislo vydeli tiim co vyslo (tolikrat na kolikatou odmocnujeme -1 např. odmocnujeme na druhou delime jen jednou) a pak se k vysledku pricte cislo ktere jsme delili tou mocninou a priteme ho tolikrat na kolikatou odmocnujeme, pak zase vydelime mocninou*/
|
else if(operand=='-'){
|
||||||
/*funguje to na principu ze ziskavame rozmezi jedno nizko a jedno vysoko treba 0 a 4 a z toho delame prumer tak dlouho dokud nam nevyjde vysledek v tomto pripade 2*/
|
rsum=number1-number2;
|
||||||
|
if(msum==rsum){
|
||||||
cislo2--;
|
printf("OK\n");
|
||||||
if(cislo>0){
|
}
|
||||||
vysledek2 = cislo + 1; //cislo + libovolne cislo
|
else{
|
||||||
vysledek3 = vysledek2 / (cislo2+1);
|
printf("ZLE\n");
|
||||||
|
}
|
||||||
for(i = 1; i<100; i++){
|
printf("%lf\n",rsum);
|
||||||
vysledek = cislo;
|
}
|
||||||
for(j = 1; j<cislo2+1; j++){
|
else if(operand=='*'){
|
||||||
vysledek /= vysledek3;
|
rsum=number1*number2;
|
||||||
}
|
if(msum==rsum){
|
||||||
vysledek2 = (cislo2 * vysledek3) + vysledek;
|
printf("OK\n");
|
||||||
vysledek3 = vysledek2 / (cislo2+1);
|
}
|
||||||
}
|
else{
|
||||||
printf("%lf", vysledek3);
|
printf("ZLE\n");
|
||||||
}
|
}
|
||||||
else{
|
printf("%lf\n",rsum);
|
||||||
printf("Zaporna cisla nejdou odmocnovat - zadej kladne a pak pred vysledek pripis minus.");
|
}
|
||||||
}
|
else if(operand=='/'){
|
||||||
|
rsum=number1/number2;
|
||||||
break;
|
if(msum==rsum){
|
||||||
|
printf("OK\n");
|
||||||
default:
|
}
|
||||||
printf("Spatny vstup\nAplikace Kalkulacka umi tyto funkce:\nscitani '+'\nodcitani '-'\nnasobeni '*'\ndeleni '/'\numocnovani '^'\nodmocnovani 'o'\ndesetinna cisla zadavejte formou tecek '.'\npriklad: 5.4*8.444\n\n"); // pokud je zadán jiný znak vypíše se toto
|
else{
|
||||||
break;
|
printf("ZLE\n");
|
||||||
}
|
}
|
||||||
printf("\n\n"); // \n je odradkovani
|
printf("%lf\n",rsum);
|
||||||
|
}
|
||||||
printf("Pokracovat? a/n\n");
|
|
||||||
fflush(stdin);//scanf v cyklu zlobí toto je třeba zavolat jinak se scanf neprovede
|
|
||||||
scanf("%c", &pokracovat);
|
|
||||||
} while (pokracovat == 'a');
|
|
||||||
printf("Dekuji za pouziti kalkulacky. www.itnetwork.cz\n");;
|
|
||||||
system("pause");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user