Programma calcolo e gioco

di il
13 risposte

Programma calcolo e gioco

Sto eseguendo un programma personale che utilizzerò per calcolare il totale dei diamanti acquisiti in una settimana
ora all'interno di questo gioco esiste un torneo
per ogni tot di vincita si sale di livello e si riceve una ricompensa diversa a seconda del titolo raggiunto
Esempio
mi sfidio con tizio e raggiungo il titolo di duke
ora posso riscuotere una ricompensa che è di 60 diamanti;
all'interno del programma vorrei che mi richiedesse il titolo acquisito
se scrivo nessuno ricevo 0 diamanti
e se scrivo guard deve aggiungere 15 al totale.
il fatto è che se scrivo guard il programma sballa.... e non fa il calcolo correttamente... come posso associare al fatto che se scrivo guardia venga aggiunto 15 al totale ??

#Include <stdio.h>
#include <string.h>
#define torneo 80
#define nemico 50
#define lunedi 300
#define settimana1 20
#define ricompensa7 100
#define ricomepnsa15 200
/*#define nessuno 1
#define guard    15
#define knight   25
#define baron    25
#define viscount 40
#define count    50
#define marquis  50
#define duke     60
#define archduke 75
#define prince   90*/


int main()
{char nessuno,guard,knight,baron,viscount,count,marquis,duke,archduke,prince;
printf("quanto vale guard?\n%d\n",guard);
    printf("BENVENUTI NELLA CALCOLATRICE\n");
     char rango[15];
    int totale,nem,i,rmisterio,arena,diamanti,a,dailylog;
    /*  QUANTI DIAMANTI HAI?*/

    printf("\nquanti diamanti hai? ");
    scanf("%d",&diamanti);
    /* QUANTA VOLTE TI SFIDI CON EROE MISTERIOSO*/
    rmisterio=0;
    printf("\nquante volte combatterai contro il nemico?");
    scanf("%d",&nem);
    for (i=0;i<nem;i++)
        rmisterio=nemico*nem;
        printf("diamanti contro il nemico:%d\n",rmisterio);
        /* RICOMPENSA LUNEDI <3*/
        printf("\nhai ricevuto altri %d diamanti per il lunedi\n",lunedi);
        /* DAL LOGIN DEL GIORNO QUANTI NE HAI RICEVUTI?*/
        printf("\nquanti diamanti hai ricevuto dal login giornaliero? ");
         scanf("%d",&dailylog);
    if (dailylog>0 && dailylog<120)
        printf("hai ricevuto %d diamanti",dailylog);
    else
        printf("il massimo \x8A 120 in un mese");
        /* QUANTI SOLDI TI DA ARENA*/
     arena=80*7;
     printf("\n");
        printf("\ni dias settimanali per l'arena:%d\n",arena);
        /* SOLDI COMPRATI*/
        a=120*7;
        printf("\ni dias comprati sono:%d\n\n",a);
        /* IL TORNEOOOO KITEBBIV*/
            printf("\nche rango hai raggiungo nel torneo bs? ");
            scanf("%s",&rango);
              /* TOTALE*/
        totale=lunedi+dailylog+rmisterio+arena+a+diamanti+rango;
        system("cls");
        printf("\IL TOTALE\n\%d diamanti ",totale);
        printf("il rango vale:%s",rango);
}

13 Risposte

  • Re: Programma calcolo e gioco

    Ma perché fai +rango se questa é una stringa? Sai cosa sono le stringhe in C ?
  • Re: Programma calcolo e gioco

    Io vedo due errori: uno in scanf("%s", &rango); devi togliere &, perché rango è già un indirizzo, cioè l'indirizzo del'array. L'altro due righe dopo, tu fai +rango, ma rango, di nuovo, è un indirizzo (l'indirizzo della stringa presa in input), e non il numero di diamanti. Quindi devi convertire la stringa nel relativo numero di diamanti, lascio a te il divertimento nel trovare un modo, se non riesci chiedi
  • Re: Programma calcolo e gioco

    oregon ha scritto:


    Ma perché fai +rango se questa é una stringa? Sai cosa sono le stringhe in C ?
    certo una stringa è una sequenza di caratteri trattati come una singola unità.
    è ,un vettore di carattere che termina con il carattere nullo.
  • Re: Programma calcolo e gioco

    E tu pensi di poterla sommare?
  • Re: Programma calcolo e gioco

    Beh. ho volato di fantasia
    perchè se nel rango (scanf) scrivo guard quando va a a sommare nel mio cervello avrebbe dovuto sostituire rango con il valore preso da input e convertirlo in numero
    lo so la fantasia è il mio forte.
    ho anche una soluzione alternativa che utilizzerò come ultima spiaggia.
    ma vorrei impare nuove cose
    la soluzione alternativa si basa su uno switch case
  • Re: Programma calcolo e gioco

    Franzo ha scritto:


    Io vedo due errori: uno in scanf("%s", &rango); devi togliere &, perché rango è già un indirizzo, cioè l'indirizzo del'array. L'altro due righe dopo, tu fai +rango, ma rango, di nuovo, è un indirizzo (l'indirizzo della stringa presa in input), e non il numero di diamanti. Quindi devi convertire la stringa nel relativo numero di diamanti, lascio a te il divertimento nel trovare un modo, se non riesci chiedi
    pensavo ad una bella atoi.
    ma quella funziona solo per una stringa :/
  • Re: Programma calcolo e gioco

    Ma tu vuoi imparare a programmare in C o scrivere cose a caso? Lo usi un libro?

    Devi confrontare una stringa quindi ti serve una funzione che lo faccia. E il risultato del confronto ti deve permettere di aggiornare il totale. In prima battuta parti da

    if (strcmp(rango,"guard")==0) totale=totale + 15;
  • Re: Programma calcolo e gioco

    @toni1705:
    programmare E' DIFFICILE, ache se tutti pensano che non sia cosi'.

    Ora, per chi e' alle prime armi, il C ed il C++ sono forse i PEGGIORI linguaggi con cui iniziare.
    NON perche' siano pessimi linguaggi, al contrario, ma perche' SONO DECISAMENTE DIFFICILI/COMPLESSI/COMPLICATI, ed il C++ e' almeno 10 volte piu' difficile/complesso/complicato del C.

    Quindi:

    1) o ti metti a STUDIARE il C SU LIBRI, oltre ad acquistare LIBRI su cosa vuol dire programmare
    2) OPPURE passi a Python, che ti risolve un po' di problemi, ma che COMUNQUE non evitar di dover STUDIARE che cosa vuol dire programmare.

    La fantasia E' FONDAMENTALE, ma la COMPETENZA TECNICA E' ALTRETTANTO FONDAMENTALE.

    Mettila in questo modo: Barnard, quando ha fatto il primo trapianto di cuore, ha avuto un bel po' di fantasia ad immaginare che la cosa si potesse fare. Cio' non toglie che gia' per conto suo fosse un STRA-ECCELLENTE CHIRURGO.

    Quindi, fantasia si, ma PER PRIMA COSA LA COMPETENZA TECNICA: non si scrive codice a casaccio, non si fanno domande la cui risposta la trovi nell'introduzione di qualunque libro di programmazione, ecc
  • Re: Programma calcolo e gioco

    oregon ha scritto:


    Ma tu vuoi imparare a programmare in C o scrivere cose a caso? Lo usi un libro?

    Devi confrontare una stringa quindi ti serve una funzione che lo faccia. E il risultato del confronto ti deve permettere di aggiornare il totale. In prima battuta parti da

    if (strcmp(rango,"guard")==0) totale=totale + 15;
    onestamente si uso i libri
    ma molte volte bisogna avere competenze tecniche che possono essere apprese mediante esercizi e tanta altra roba
    conosco la funzione strcmp..
    ma mai a pensare che poteva essere una soluzione
  • Re: Programma calcolo e gioco

    
    #include <stdio.h>
    #include <string.h>
    #define torneo 80
    #define nemico 50
    #define lunedi 300
    #define settimana1 20
    #define ricompensa7 100
    #define ricomepnsa15 200
    int main()
    {
    char nessuno,guard,knight,baron,viscount,count,marquis,duke,archduke,prince;
        printf("BENVENUTI NELLA CALCOLATRICE\n");
         char rango[15];
        int totale,nem,i,rmisterio,arena,diamanti,a,dailylog,ric;
    
        /*  QUANTI DIAMANTI HAI?*/
        printf("\nquanti diamanti hai? ");
        scanf("%d",&diamanti);
    
        /* QUANTA VOLTE TI SFIDI CON EROE MISTERIOSO*/
        rmisterio=0;
        printf("\nquante volte combatterai contro il nemico?");
        scanf("%d",&nem);
        for (i=0;i<nem;i++)
            rmisterio=nemico*nem;
            printf("diamanti contro il nemico:%d\n",rmisterio);
    
    
    
            /* DAL LOGIN DEL GIORNO QUANTI NE HAI RICEVUTI?*/
            printf("\nquanti diamanti hai ricevuto dal login giornaliero? ");
             scanf("%d",&dailylog);
        if (dailylog>0 && dailylog<120)
            printf("hai ricevuto %d diamanti",dailylog);
        else
            printf("il massimo \x8A 120 in un mese");
    
            /* QUANTI SOLDI TI DA ARENA*/
         arena=80*7;
         printf("\n");
            printf("\ni dias settimanali per l'arena:%d\n",arena);
    
               /* RICOMPENSA LUNEDI <3*/
            printf("\nhai ricevuto altri %d diamanti per il lunedi\n",lunedi);
    
            /* SOLDI COMPRATI*/
            a=120*7;
            printf("\ni dias comprati sono:%d\n\n",a);
            system("cls");
            /* IL TORNEOOOO KITEBBIV*/
    printf("1)guard\n2)knight\n3)baron\n4)viscount");
    printf("\n5)count\n6)marquis\n7)duke\n8)arcduke\n9)prince");
    printf("\nnessuno se non vi \x8A alcun torneo\n");
    
                printf("\nche rango hai raggiungo nel torneo bs?\n");
                scanf("%s",&rango);
    printf("vuoi aggiungere i diamanti per la ricompensa dei 7 o 15 gg?");
    printf("\nse non hai ricevuto i diamanti premere 0\n");
    scanf("%d",&ric);
    
                  /* TOTALE*/
            totale=lunedi+dailylog+rmisterio+arena+a+diamanti+ric;
             if (strcmp(rango,"nessuno")==0)
                totale+=0;
             if (strcmp(rango,"guard")==0)
                    totale=totale + 15;
                if (strcmp(rango,"knight")==0)
                    totale=totale +25;
                   if (strcmp(rango,"baron")==0)
                    totale=totale +25;
                    if (strcmp(rango,"viscount")==0)
                        totale+=40;
                      if (strcmp(rango,"count")==0)
                        totale+=50;
                         if (strcmp(rango,"marquis")==0)
                         totale+=50;
                       if (strcmp(rango,"duke")==0)
                        totale+=60;
                        if (strcmp(rango,"archduke")==0)
                            totale+=75;
                             if (strcmp(rango,"prince")==0)
                             totale+=90;
            system("cls");
            printf("\IL TOTALE\n\%d diamanti ",totale);
    
    }
    
    risolto
    thanks
  • Re: Programma calcolo e gioco

    La riga in cui sommi 0 è inutile
  • Re: Programma calcolo e gioco

    Serve nel caso in cui non abbia partecipato e non ho ricevuto ricompense
  • Re: Programma calcolo e gioco

    Non serve comunque. Se sommi 0 chiediti a che serve
Devi accedere o registrarti per scrivere nel forum
13 risposte