Bruise Opublikowano 14 Czerwca 2008 Udostępnij Opublikowano 14 Czerwca 2008 siemka potrzebuje kalkulator w C, a mianowicie: wczytywanie z jednej linii, zabezpieczenie przed znakami +-,++,--, 2 przecinki, 4 podstawowe funkcje, liczba zmiennoprzecinkowa. bardzo prosty kalkulator zrobilem: #include<stdio.h> #include<conio.h> main() { int a,b,c,d,e,f; printf("podaj liczbe \na="); scanf("%d",&a); printf("b="); scanf("%d",&b); c=a+b; d=a-b; e=a*b; f=a/b; printf("\n a=%d\n b=%d\n a+b=%d+%d=%d\n a-b=%d-%d=%d\n a*b=%d*%d=%d\n a/b=%d/%d=%d\n" ,a,b,a,b,c,a,b,d,a,b,e,a,b,d,e,a,b,f); getch(); } a to jest banal wrecz:D:D pomoże mi ktos :D:D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 16 Czerwca 2008 Udostępnij Opublikowano 16 Czerwca 2008 Nie wiem dokładnie, ale zamiast int niech będzie float, ale ja programuję w C++, więc nie pomogę za bardzo, ale jedno to wiem na pewno . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 16 Czerwca 2008 Udostępnij Opublikowano 16 Czerwca 2008 On prosi o skrypt kalkulatora lepszego. A C niewiele różni się od C++, więc nie spamuj. EDIT: http://peb.pl/programowanie/230278-c-kalkulator-c.html Tu jest bardzo fajny skrypt kalkulatora :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bruise Opublikowano 16 Czerwca 2008 Autor Udostępnij Opublikowano 16 Czerwca 2008 spoko thx za ten skrypcik ale ja potrzebuje pomnocy z zalozeniami dotyczacymi liczmy ulamkowej , dwoch znaków: ++ , +- i zabezpieczenie przed wprowadzeniem liczby z 2 przecinkami:D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Czerwca 2008 Administratorzy Udostępnij Opublikowano 17 Czerwca 2008 Zrobię bumpa, może znacie odpowiedź, bo to mój kumpel, a ja niestety z C++ to jestem cztery lewe ręce i może wy pomożecie :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 17 Czerwca 2008 Udostępnij Opublikowano 17 Czerwca 2008 W zasadzie jeżeli dobrze zrozumiałem to linia ma zawierać ciąg znaków i cyfr a je należy potem odpowiednio sparsować a następnie wykonać obliczenia. Może to wyglądać mniej więcej tak , że ta linia to string a nastepnie kolejne elementy stringa są odpowiednio interpretowane. example: 4+5*7-2 -> następnie z tego string wyciągamy takie działania cyfra-operator-cyfra czyli: 4+5 , 5*7 , 7-2 Następnie spr które z nich ma największy priorytet: 1.5*7=35 następnie od lewej 4+35=39 i na końcu 39-2=37 Co się tyczy zakazanych znaków to poprostu jezeli pomiędzy cyframi będzie znak , którego nie mamy w jakiejś tam tablicy operatorów wywalamy błąd i po sprawie. Implementacje z podstawową znajomościa c czy c++ napisze sam(Bruise). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Czerwca 2008 Administratorzy Udostępnij Opublikowano 17 Czerwca 2008 czuję, że będzie problem :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 17 Czerwca 2008 Udostępnij Opublikowano 17 Czerwca 2008 Wystarczy wyjść z założenia, że na poczatku zawsze jest jakas cyfra a następnie znak a następnie-> dajmy na to , że string tekst ma już tą wczytaną linie: vector<float> liczby; vector<string> operatory; bool CzyCyfra=true; //na poczatku mam cyfre for(int a=0;a<tekst.size();a++) { char znak=tekst[a]; if(CzyCyfra) { //int czy float czy double liczby.push_back(ZamienNaCyfre(znak)); //to moze sie odbywac poprzez stringstream } else { operatory.push_back(tekst[a]); } CzyCyfra=!CzyCyfra; } ///////////////////////////////////////////////////////////////////////////////////////////////////////// mamy tablice z operatorami string operatoryArray[4]={*,/,+,-}; //wedlug priorytetow bool jest; for(int i=0;i<4;i++) { int index=find(operatory,opearatoryArray); jest=true; while(jest) { if(index>0) //jezeli nie ma zwrac -1 { jest=true; //jednakowych operatorow moze byc wiecej switch(i) { case 0: { float liczba=liczby[index-1]; float liczba2=liczby[index+1]; Wynik+=liczba*liczba2; }break; } else { // juz takeigo nei ma przechodzimy dalej jest=false; } }/while }//for To jest baaardzo uproszczone i pewnie z błędami bo pisane na szybko. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo834 Opublikowano 18 Czerwca 2008 Udostępnij Opublikowano 18 Czerwca 2008 Masz tutaj taki co napisałem: https://gmclan.org/up3937_3_CCalc.html Nie daje kodu tutaj bo to prawie 300 linii :jezor:, jest napisany w C i nawet działa. Najpierw parsuje linie poleceń i tworzy z niej drzewo :D a potem przerabia to drzewo na trochę inne drzewo zawierające już odpowiednie wskaźniki na funkcje operatorów i na koniec odpala funkcję getValue z głównej gałęzi :jezor: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bruise Opublikowano 18 Czerwca 2008 Autor Udostępnij Opublikowano 18 Czerwca 2008 thx za pomoc:D:D jestem mega wdzieczny:D:D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się