Accedi

Ho dimenticato la password

Ultimi argomenti
» argomento
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

Flusso RSS


Yahoo! 
MSN 
AOL 
Netvibes 
Bloglines 



Calcolatrice in C

Andare in basso

Calcolatrice in C

Messaggio Da Eine The Phantom il Lun Set 29, 2008 12:19 pm

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:


#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
avatar
Eine The Phantom
Admin
Admin

Numero di messaggi : 37
Data d'iscrizione : 28.09.08

Visualizza il profilo http://infonprog.forumattivo.it

Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum