Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Programma che non funziona

    Ciao a tutti sono nuovo del forum . Inanzitutto complimenti per il forum mi sembra molto completo.
    Stavo compilando un programma,che mi è stato dato a scuola, in c++ (con dev c++). In pratica dato in imput l' eta' mi calcola l' importo annuale della tessera d' iscrizione applicando lo sconto.
    ho fatto cosi:

    #include <cstdlib>
    #include <iostream>

    using namespace std;

    int main(int argc, char *argv[])
    {float t,c,y,r,q;
    int e;
    cout<<"Dammi la tua eta'"<<endl;
    cin>>e;
    t=100;
    c=t-8%;
    y=t-6%;
    r=t-4%;
    q=t-2%;
    switch (e){
    case 11:{cout<<"lo sconto e' "<<c<<endl;}
    break
    case 12: {cout<<"lo sconto e' "<<e<<endl;}
    break
    case 13:{cout<<"lo sconto e' "<<r<endl;}
    break
    case 14:{cout<<"lo sconto e' "<<q<<endl;}
    break
    default:{cout<<"lo sconto per questo tipo di eta' non e' effettuabile"<<endl;}
    }
    system("PAUSE");
    return EXIT_SUCCESS;
    }


    in pratica solo chi ha 11-12-13-14 anni si potrà fare lo sconto delle 100€.
    Il problema è che il compilatore non me lo compila potete darmi una mano?
    Grazie infinite.

  2. #2
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    E' consigliato usare i tag "code" quando posti del codice.

    Che errori ottieni ?


    Secondo me ci sono degli errori nel calcolo delle percentuali ....

  3. #3
    codice:
    c=t-8%
    In C l'operatore % è l'operatore modulo, che nulla ha a che vedere con le percentuali. Se vuoi togliere l'8% di un numero ti basta moltiplicarlo per 0.92.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    Alternativamente dovresti fare

    codice:
    c=t-t*8/100
    e via via per le altre %

  5. #5
    ok grazie per le risposte infatti mi sembrava strano utilizzare % per ottenere la percentuale ok adesso provo a vedere se me lo compila in caso posto gli errori che mi da.

  6. #6
    Allora ho provato a correggere le percentuali ma mi da un altro errore sulla stringa de case 12:

    #include <cstdlib>
    #include <iostream>

    using namespace std;

    int main(int argc, char *argv[])
    {float t,c,y,r,q;
    int e;
    cout<<"Dammi la tua eta'"<<endl;
    cin>>e;
    t=100;
    c=t-t*8/100;
    y=t-t*6/100;
    r=t-t*4/100;
    q=t-t*2/100;
    switch (e){
    case 11:{cout<<"lo sconto e' "<<c<<endl;}
    break
    case 12: {cout<<"lo sconto e' "<<e<<endl;}
    break
    case 13:{cout<<"lo sconto e' "<<r<endl;}
    break
    case 14:{cout<<"lo sconto e' "<<q<<endl;}
    break
    default:{cout<<"lo sconto per questo tipo di eta' non e' effettuabile"<<endl;}
    }
    system("PAUSE");
    return EXIT_SUCCESS;
    }


    Gli errori sono:

    In function `int main(int, char**)':

    expected `;' before "case"

    no match for 'operator<' in '(+std:perator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)(&std::cout)), ((const char*)"lo sconto e\' ")))->std::basic_ostream<_CharT, _Traits>:perator<< [with _CharT = char, _Traits = std::char_traits<char>](r) < std::endl'

    expected `;' before "case"

    expected `;' before "default"

  7. #7
    Originariamente inviato da Mashin
    Alternativamente dovresti fare

    codice:
    c=t-t*8/100
    e via via per le altre %
    Sarebbe meglio
    codice:
    c=t-t*8.0f/100.0f
    usando i literal float e non interi. Altrimenti, se t non fosse float, si avrebbe una divisione intera.

    Inoltre tutti i tuoi break non hanno il punto e virgola in fondo.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Si ho corretto il punto e virgola che non sapevo si mettesse nei break ora gli errori sono solo 2 ma non penso centri nulla con le percentuali :

    codice:
     In function `int main(int, char**)':
    codice:
     no match for 'operator<' in '(+std::operator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)(&std::cout)), ((const char*)"lo sconto e\' ")))->std::basic_ostream<_CharT, _Traits>::operator<< [with _CharT = char, _Traits = std::char_traits<char>](r) < std::endl'

  9. #9
    manca un < nel cout della r subito prima del endl

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.