Programma numeri telefono c++

di il
25 risposte

Programma numeri telefono c++

Ho un programma che mi sta facendo dannare, il problema e' che mi da il ricavo sballato e se inserisco un numero che inizia con 0, prende la seconda cifra...
// Acquisire un numero telefonico
// prima cifra: 
// 0= 10 cent/ora
// 8= 20 cent/ora
// 3= 15 cent/ora
// 9= 35 cent/ora
// altro: ignora
// mantenere il conto di quanti numeri per ogni tariffa
// calcolare il ricavo totale (ipotizzando un'ora di chiamata per ogni numero inserito)

#include <iostream>
using namespace std;
int main()
{

int primacifra,taf0,taf8,taf3,taf9;
double ricavo=0,numero;
char risp='s';


while (risp=='s')
{

cout<<"Inserire il numero  "<<endl;
cin>>numero;

while (numero>9)
{
	numero=numero/10;
	cout<<numero<<endl<<endl;
}
primacifra=numero;

switch (primacifra)
{
	case 0:
		taf0++;
		ricavo=ricavo+10;
		break;
		
	case 8:
		taf8++;
		ricavo=ricavo+20;
		break;
		
	case 3:
		taf3++;
		ricavo=ricavo+15;
		
	case 9:
		taf9++;
		ricavo=ricavo+35;
		break;
}
risp='no';
cout<<"Vuoi continuare? ('s' per continuare) "<<endl;
cin>>risp;
}

ricavo=ricavo/100;
cout<<"Il ricavo totale e' di euro: "<<ricavo<<endl
<<cout<<"di seguito, correspittivamente, "<<endl
<<"il numero di adesioni per le tariffe da 10, 20, 15 e 35 centisimi l'ora: "<<endl
<<taf0<<endl
<<taf8<<endl
<<taf3<<endl
<<taf9<<endl;
}

25 Risposte

  • Re: Programma numeri telefono c++

    Temo sia un caso di soppressione degli zeri superflui
  • Re: Programma numeri telefono c++

    Fattelo dire, il codice fa proprio schifo…
  • Re: Programma numeri telefono c++

    _Achille ha scritto:


    Fattelo dire, il codice fa proprio schifo…


    ho modificato il codice perché c'erano alcuni miei tentativi non riusciti.
    Penso si capisca che non sono un programmatore e sto solo al primo anno di programmazione.
  • Re: Programma numeri telefono c++

    Le variabili che totalizzano vanno inizializzate a 0

    int primacifra, taf0=0, taf8=0, taf3=0, taf9=0;

    Il numero non deve essere un double ma una stringa (20 cifre bastano)

    char numero[20];

    Dopo aver inserito il numero telefonico la prima cifra è nel primo carattere sottraendo il valore ASCII di '0'

    cin >> numero;
    primacifra = numero[0] - '0';

    Se nei case vuoi usare '0' '1' '2' ... (questo sarebbe il caso) allora dopo la cin ti basta scrivere

    switch (numero[0])

    senza usare primacifra.

    Alla fine mancano delle cout e dei punti e virgola.
  • Re: Programma numeri telefono c++

    oregon ha scritto:


    Le variabili che totalizzano vanno inizializzate a 0

    int primacifra, taf0=0, taf8=0, taf3=0, taf9=0;

    Il numero non deve essere un double ma una stringa (20 cifre bastano)

    char numero[20];

    Dopo aver inserito il numero telefonico la prima cifra è nel primo carattere sottraendo il valore ASCII di '0'

    cin >> numero;
    primacifra = numero[0] - '0';

    Se nei case vuoi usare '0' '1' '2' ... (questo sarebbe il caso) allora dopo la cin ti basta scrivere

    switch (numero[0])

    senza usare primacifra.

    Alla fine mancano delle cout e dei punti e virgola.
    Siccome è C++ può direttamente utilizzare std::string
  • Re: Programma numeri telefono c++

    E' C++ all'acqua di rose ...
  • Re: Programma numeri telefono c++

    Beh è vero, le stringhe e array non li ho fatti e non sono concessi per ora...
  • Re: Programma numeri telefono c++

    E allora sarà dura
    i numeri se li ricevi hanno la soprressione degli zeri superfui
    le stringhe di 'C' non le sai usare e comunque sarebbero array di caratteri
    gli oggetti String temo meno che meno
    non vedo soluzione.......
  • Re: Programma numeri telefono c++

    Ragazzi ma come ho fatto io non va proprio bene? (nel senso, non è che basta solo qualche minima correzione e rivedere il pescaggio della prima cifra?) non c'è proprio un metodo?
  • Re: Programma numeri telefono c++

    Se inserisci un numero che inizia per zero non puoi gestirlo se non è una stringa.

    Ad esempio non puoi capire se hai scritto 091 o 91 perché nella variabile numerica ci sarà sempre 91.

    Quindi, no, non esistono "correzioni", né trucchi ... devi usare le stringhe per i numeri che iniziano con 0
  • Re: Programma numeri telefono c++

    Perfetto riferirò al professore e lo solleciterò ad andare avanti col programma.
  • Re: Programma numeri telefono c++

    Ci siamo incrociati,
    Vediamo se riesco a spiegarmi:
    vediamo se riesci a seguirmi, perchè al post scorso sembra di no....
    se scrivi 0123 viene registrato 123 (o magari la tua calcolatrice ti mette una caterva di 0 davanti al risultato? 2+2 fa 4, giusto, non 00000004, giusto?)
    questa si chama soppressione degli zeri superflui (e te lo avevo già detto)
    siccome tu non puoi gestire stringhe di 'C' non puoi ricevere in input una cosa del genere: "0123"
    nota bene le vigolette
    e quindi cosa ti rimane?
    suggerimento: NON tentare di salvare quel codice: non funziona, sei partito nella direzione sbagliata e comunque ti hanno già detto che fa schifo
    riparti da capo, ripetendo l'analisi del problema
    ricordati sempre
    "un programma nato storto si fa meno fatica a rifarlo che a ripararlo"
    non è una balla: è l'amara verità che viene dalla dura realtà


    però a parziale correzione io penso che forse forse una strada ci sarebbe, ti conviene pensarci bene bene
    perché se vai dal prof a dirgli che non si può fare e poi un tuo compagno ci riesce, forse non ci fai bella figura...
  • Re: Programma numeri telefono c++

    Sì, la soluzione in realtà ci sarebbe ma a mio parere è poco praticabile.
    È una cosa che si risolve velocemente con una semplice stringa…

    Ma devi ricordarti in memoria dei numeri digitati?
  • Re: Programma numeri telefono c++

    Aspettate un mio compagno ha preso un codice che pare funzioni, potete decifrarmelo in italiano? che cosa ha usato?
    //autori: conte francesco
    //classe: 3h
    //titolo: dato un numero di 5 cifre,scomporlo in cifre e stamparle
    
    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
    
     int numero,numero2,contatore;
     printf("inserisci un numero di cinque cifre:/");
     scanf("%d",&numero);
     
     
     contatore=10000;
     
     while(contatore>=0){
      
        numero2=numero/contatore;
        numero%=contatore;
    	printf("%d ",numero2);
    	
    	contatore/=10;
     
    }
    }
Devi accedere o registrarti per scrivere nel forum
25 risposte