This commit is contained in:
Peter Sabol 2022-03-29 12:30:01 +02:00
parent c9ff9d74f4
commit f763f96ae7

View File

@ -2,6 +2,104 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.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() {
return 0;
int i,j; // pro cyklus
double cislo, cislo2, vysledek, vysledek2, vysledek3; /*aby se mohlo počítat s desetinnými čísly*/
char operand; //načítání znaků
char pokracovat;
//přivítání do aplikace
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");
/*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*/
if((operand == '/') && (cislo2 == 0)){
printf("Nulou nelze delit");
} }
//prepinac nacte promennou k a podle toho co v ni je provede dalsi prikazy
switch(operand){
case'+':
printf("%lf", cislo+cislo2); // jestlizze obsahuje + nacte se i a j a sectou se
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);
break;
case'o':
//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*/
/*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*/
cislo2--;
if(cislo>0){
vysledek2 = cislo + 1; //cislo + libovolne cislo
vysledek3 = vysledek2 / (cislo2+1);
for(i = 1; i<100; i++){
vysledek = cislo;
for(j = 1; j<cislo2+1; j++){
vysledek /= vysledek3;
}
vysledek2 = (cislo2 * vysledek3) + vysledek;
vysledek3 = vysledek2 / (cislo2+1);
}
printf("%lf", vysledek3);
}
else{
printf("Zaporna cisla nejdou odmocnovat - zadej kladne a pak pred vysledek pripis minus.");
}
break;
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
break;
}
printf("\n\n"); // \n je odradkovani
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");
}