Projekt- Kalkulator
Ostatnio zmodyfikowano 2009-11-28 22:18
naiL Temat założony przez niniejszego użytkownika |
» 2009-11-28 21:50:53 Doszedłem do momentu zamiany Double w string. Zakładam, że kalkulator będzie obsługiwał 10 cyfrowy wyświetlacz z dwu cyfrowym wyświetlaczem e(tam notacji naukowej czy jak go tam zwał). Czy jest jakaś inna droga niż analiza string na wyłuskanie informacji np czy jest przecinek, czy jest e, jakiego znaku jest liczba(ok tu można prosto: if(liczba<0)znak=1;
) ale wartosc exp? jeśli jest większy wykładnik niż 3 cyfry -99/+99. wyświetli się error(za wąski ekran konsoli ;) ale o tym na koniec). spotykam się z przykładami wyświetlania jakiś wartości z %%f coś tam nawet nie wiem jak to się określa fachowo, żeby nikomu nie poszarpać przez przypadek uczuć religijnych. A możliwe że są jakieś formuły zapytań, określeń wartości double/float o to czy jest przecinek(ustawiam precision na 10 ale nie wiem czy to jest ilosc wyswietlanych znaków czy cyfr.. np 0.000000001 czy 0.00000001)? #include <iostream> #include <string> #include <sstream> #include <stdio.h> int main() { using namespace std; cout.precision( 10 ); double a = 1237987e - 95; double b = 2138970897; double liczba_Ad = a / b; int przecinek = 0; int ilosc_cyfr = 0; char test; int exp = 0; int exp_znak = 0; int licznik_exp = 0; int znak = 0; int error = 0; string exp_wartosc; ostringstream back_up; back_up << liczba_Ad; string prima_liczba = back_up.str(); string liczba = prima_liczba; test = liczba[ 0 ]; if( test == '-' ) { znak = 1; liczba = liczba.substr( 1, liczba.size() ); } for( int i = 0; i <= liczba.size(); i++ ) { test = liczba[ i ]; if( test == '.' ) if( test == 'e' ) { exp = 1; if( liczba[ i + 1 ] == '-' ) exp_znak = 1; if( liczba[ i + 2 ] != '0' ) error = 1; exp_wartosc = liczba.substr( i + 2, i + 4 ); liczba = liczba.substr( 0, i ); } } for( int i = 0; i <= liczba.size(); i++ ) { test = liczba[ i ]; if( test >= 48 && test <= 57 ) ilosc_cyfr++; } cout << prima_liczba << "\n obrobka string daje:\n"; cout << liczba << "\n"; cout << "ilosc_cyfr " << ilosc_cyfr << "\n"; if( znak == 1 ) cout << "znak -"; if( znak == 0 ) cout << "znak +"; if( przecinek == 1 ) cout << "\nw .precision(10) wystapi przecinek"; if( exp == 1 ) { cout << "\nwystepuje exp wartosci "; if( exp_znak == 1 ) cout << "-"; if( exp_znak == 0 ) cout << "+"; cout << exp_wartosc; } cout << "\n" << "error-" << error; return( 0 ); }
w jaki sposób mam odczytać że wynik działania był czy raczej nie był. Znalazłem INF ,-INF,NaN(not a number). 1/0->#INF. rozumiem tyle że są to "specjalne" określenia wyniku działania? czy jeszcze są jakieś inne określenia? |
|
DejaVu |
» 2009-11-28 21:59:07 Po prostu kocham takie długie tematy... aż się odechciewa czytać następujących po sobie postów. Proponuję tworzyć mniejsze tematy i bardziej konkretne, bo obecnie leci już czwarta strona i wygląda na to, że co i rusz inne problemy są poruszane pod jednym ogólnym hasłem 'kalkulator'. http://kursy.ddt.pl/?LessonId=127 |
|
naiL Temat założony przez niniejszego użytkownika |
» 2009-11-28 22:18:12 Co rusz napotykam na inny problem pod wspólnym tytułem "kalkulator". Raz to raz tamto. Program ma się prawie ku końcowi całe szczęście... |
|
1 2 3 « 4 » |