Accedi
Ultimi argomenti attivi
Migliori postatori
ab89 | ||||
Thalionwen | ||||
Eine The Phantom | ||||
Reaulece | ||||
ya89 | ||||
root | ||||
Infernet89 | ||||
Pablomares | ||||
ruggiero98 | ||||
ieschfor |
Calcolatrice in C
Pagina 1 di 1
Calcolatrice in C
Una semplice calcolatrice a riga di comando
Il codice di seguito serve per creare una piccola calcolatrice a riga di comando.
Essa funziona nel seguente modo :
Si scrivono le operazioni da eseguire sottoforma di espressione seguite dal simbolo = .
Ad esempio : 4+5-3=
Si preme invio e viene restituito il valore dell'espressione.
NB : Non ci devono essere spazi fra operandi ed operatori
CODICE
Codice soggetto a COPYRIGHT, se decidi di usarlo esternamente al forum cita forum di provenienza ed autore
AUTORE : Eine The Phantom
FORUM : Informatica Programmabile
Il codice di seguito serve per creare una piccola calcolatrice a riga di comando.
Essa funziona nel seguente modo :
Si scrivono le operazioni da eseguire sottoforma di espressione seguite dal simbolo = .
Ad esempio : 4+5-3=
Si preme invio e viene restituito il valore dell'espressione.
NB : Non ci devono essere spazi fra operandi ed operatori
CODICE
- Codice:
#include<stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
char string[500]; //rappresenta la stringa letta in input
char simboli[500]; //vettore contenente gli operandi
float ultimoNumero = 0; //ultimo risultato ottenuto
float valori[500]; //vettore contenente i valori inseriti
int i = 0; //contatore che scorre la stringa
int k = 0; //contatore che scorre la il valore sottoforma di stringa
int j = 0; //contatore che calcola l'elevamento a potenza
float tmp = 0; //contiene valori temporanei
int numeroLetture = 0; //indica il numero di caratteri letti prima dell'operatore
int conta = 0; //contiene il numero di valori inseriti
int tipo = 0;
scanf("%s",string); //legge l'espressione
while(string[i] != '\0' && i < 100) //fino a quando la stringa non termina
{
if ((string[i] == '+') || (string[i] == '-') || (string[i] == '/') || (string[i] == '*') || (string[i] == '=')) //se il carattere è uno di questi simboli
{
simboli[conta] = string[i]; //viene memorizzato di simbolo
valori[conta] = 0.0; //viene azzerato il valore
for (k = 0; k < numeroLetture; k++) //per il numero di cifre che conpongono il numero
{
tmp = 0; //azzera la variabile temporanea
switch(string[i-numeroLetture+k]) //verifica se il carattere è una cifra e quale, poi ne assegna il valore a tmp
{
case '0' : tmp = 0.0; break;
case '1' : tmp = 1.0; break;
case '2' : tmp = 2.0; break;
case '3' : tmp = 3.0; break;
case '4' : tmp = 4.0; break;
case '5' : tmp = 5.0; break;
case '6' : tmp = 6.0; break;
case '7' : tmp = 7.0; break;
case '8' : tmp = 8.0; break;
case '9' : tmp = 9.0; break;
}
for (j = 0; j < (numeroLetture - 1 - j); j++) //calcola il valore della cifra, se è una decina moltiplica la cifra * 10 una volta sola
tmp *= 10.0;
valori[conta] += tmp; //somma il valore temporaneo alla posizione del vettore riservato per il numero
}
numeroLetture = -1; //pone a -1 il numero di letture, così con il successivo incremento ritorna a 0
conta++; //incrementa il numero di valori inseriti
}
numeroLetture++; //incrementa il numero di cifra lette
i++; //incrementa l'indice sulla stringa
}
for (k = 0; k < conta; k++) //stampa tutti i valori letti
printf("%i \n",valori[k]);
tmp = valori[0]; //assegna a tmp il primo valore calcolato
for (k = 0; k < conta; k++) //per il numero di inserimenti
{
switch(simboli[k]) //verifica il simbolo corrispondente e ne esegue la corrispettiva operazione
{
case '+' : tmp += valori[k+1]; break;
case '-' : tmp -= valori[k+1]; break;
case '/' : tmp /= valori[k+1]; break;
case '*' : tmp *= valori[k+1]; break;
case '=' : break;
}
}
ultimoNumeroSalvato = tmp;
printf("Il risultato è : %i\n",ultimoNumeroSalvato); //comunica il risultato
system("PAUSE");
return 0;
}
Codice soggetto a COPYRIGHT, se decidi di usarlo esternamente al forum cita forum di provenienza ed autore
AUTORE : Eine The Phantom
FORUM : Informatica Programmabile
Pagina 1 di 1
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.
Dom Giu 02, 2013 4:30 pm Da ruggiero98
» problema con la funzione SE aiutoooo x favore?????
Dom Giu 02, 2013 4:18 pm Da ruggiero98
» aiuto in programma con if
Dom Mag 26, 2013 5:39 pm Da ruggiero98
» CALCOLO PERCENTUALE IN C
Sab Apr 20, 2013 8:22 pm Da ruggiero98
» Costruire un temporizzatore software per accensione luci a led
Lun Mar 25, 2013 2:34 pm Da Cristina Shady
» Ciao a tutti!
Gio Mar 22, 2012 4:19 am Da cosmos91
» Virtualbox VS le periferiche USB
Mar Apr 06, 2010 1:49 pm Da dandeciani
» PROGRAMMA: BINARY CODE
Mar Dic 23, 2008 7:28 pm Da Thalionwen
» saluti a tutti
Mar Dic 23, 2008 7:12 pm Da Thalionwen
» GUIDA : CAP 1 LEZIONE 1 Elementi di base dei programmi in C [Prima Parte]
Sab Nov 29, 2008 11:44 am Da ya89
» un semplice ciao
Sab Nov 29, 2008 11:38 am Da ya89
» Aiuto per alice 7 mega
Ven Nov 14, 2008 4:03 pm Da root
» FORUM: I nuovi banner
Ven Nov 14, 2008 2:48 pm Da Thalionwen
» Zooming Ricorsivo, questo sconosciuto.
Ven Nov 14, 2008 2:43 pm Da Thalionwen
» GUIDA : LEZIONE 4 : UTILIZZARE GLI ARRAY IN C#
Ven Nov 14, 2008 1:54 pm Da ab89
» GUIDA : CAP 1 LEZIONE 1 Elementi di base dei programmi in C [Terza e Ultima Parte]
Ven Nov 14, 2008 12:41 am Da ab89
» GUIDA : CAP 1 LEZIONE 1 Elementi di base dei programmi in C [Seconda Parte]
Mer Nov 12, 2008 12:59 am Da ab89
» [PS2] Dark Cloud
Mar Nov 11, 2008 6:50 pm Da ab89
» [PC] Sacred 2
Lun Nov 10, 2008 10:49 pm Da ab89
» GUIDA : CAP 1 LEZIONE 3 INTRODUZIONE AGLI ARRAY
Lun Nov 10, 2008 1:37 pm Da ab89