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

    [C]Temperatura del giorno

    Ciao,
    devo fare un programma (che utilizza gli array) nel quale ricevute le temperature dei 7 giorni della settimana bisogna anteporre ad esse il giorno della settimana.
    Io ho provato a farlo, ma è da pochi giorni che sto utilizzando gli array, quindi non sono riuscito a fare molto, infatti quando lo compilo il compilatore mi dice che ci sono degli errori nelle costanti ma, io non riesco a capire cosa ho sbagliato.
    Ecco il codice:
    codice:
    //Temperature della settimana
    #include <stdio.h>
    int main ()
    {
        int i;
        float temp;
        char giorno[8];
        giorno [0] = 'Lunedì';
        giorno [1] = 'Martedì';
        giorno [2] = 'Mercoledì';
        giorno [3] = 'Giovedì';
        giorno [4] = 'Venerdì';
        giorno [5] = 'Sabato';
        giorno [6] = 'Domenica';
        int temperatura[8];
        for(i=0;i<7;i++)
        {
                        printf("Iserisci la temperatura [i]");
                        scanf("%f"; &temp);
        }                
        system("pause");
        return 0;
    }
    Ciao e grazie in anticipo
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Una stringa la dichiari così:

    codice:
    char giorno[]="Lunedi";
    giorno[0] non è un array, devi dichiararlo bidimensionali se vuoi più stringhe:

    codice:
    char giorni [7][10];
    Nel tuo caso siccome i giorni hanno lunghezza variabile puoi anche dichiarare dei puntatori:

    codice:
    const char* giorni[7];
    E nella scanf hai chiuso la parentesi prima.

  3. #3
    Ciao,
    ho sistemato solo poche cose ma, la maggior parte delle cose sono come prima, solo che almeno adesso il programma va in esecuzione; però quando ci và a monitor compare sempre la stessa scritta :Iserisci la temperatura [i] mentre io vorrei che al posto della [i] ci fosse il nome del giorno.

    Quindi come posso fare per risolvere il problema?
    codice:
    //Temperature della settimana
    #include <stdio.h>
    int main ()
    {
        int i;
        float temp;
        char giorno[8];
        giorno [0] = "Lunedi\' ";
        giorno [1] = "Martedi\' ";
        giorno [2] = "Mercoledi\' ";
        giorno [3] = "Giovedi\' ";
        giorno [4] = "Venerdi\' ";
        giorno [5] = "Sabato";
        giorno [6] = "Domenica";
        int temperatura[8];
        for(i=0;i<7;i++)
        {
                        printf("Iserisci la temperatura [i]");
                        scanf("%f", &temp);
        }                
        system("pause");
        return 0;
    }
    P.S. Quello che mi è stato consigliato prima non l'ho scritto in quanto nn avedolo ancora fatto non so come metterlo in atto.

    Ciao e Grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    codice:
    //Temperature della settimana
    #include <stdio.h>
    int main ()
    {
        int i;
        char *giorno[7] = {"Lunedi' ", "Martedi' ", "Mercoledi' ", "Giovedi' ", "Venerdi' ", "Sabato", "Domenica"};
        double temperatura[7];
        for(i=0;i<7;i++)
        {
                        printf("Iserisci la temperatura %-10s", giorno[i]);
                        scanf("%lf", &temperatura[i]);
        }
        for(i=0;i<7;i++)
        {
                        printf("%-10s: %.2f", giorno[i], temperatura[i]);
        }
        return 0;
    }
    Una stringa e un char non sono la stessa cosa...
    Non serve che usi una variabile temporale, puoi usare direttamente l'array!
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Se crei l'array di puntatori in quella maniera conviene fare così:
    codice:
    const char *giorno[]={"Lunedi' ", "Martedi' ", "Mercoledi' ", "Giovedi' ", "Venerdi' ", "Sabato", "Domenica"};
    (gli string literal vanno tenuti come const, dato che modificarli è UB)
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Ok ,
    ma non ho capito proprio a cosa serve mettere %-10s ???

    Ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  7. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Originariamente inviato da 21Edoardo96
    Ok ,
    ma non ho capito proprio a cosa serve mettere %-10s ???

    Ciao e grazie
    Solo un po' di formattazione, prova tu stesso a scrivere %-10s %10s e %s e a capirne la differenza, oppure cerca su internet.

    Hai pienamente ragione MItaly, dovrei abbituarmici per correttezza, è che normalmente stringhe dichiarate così non si toccano comunque, ma hai ragione.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  8. #8
    Ok, grazie
    però ho provato a sistemare il programma come mi è stato consigliato da MItaly ma, appena lo mando in esecuzione la pagina compare tutta incasinata e non vi è la possibilità di metttere le temperature.
    Io l'ho guardato più volte il codice ma non riesco a trovare il problema; qualcuno di voi ci riesce?
    Ciao e grazie mille in anticipo
    codice:
    //Temperature della settimana
    #include <stdio.h>
    int main ()
    {
        int i;
        const char *giorno[] =       {"Lunedi\' ", "Martedi\' ", "Mercoledi\' ", "Giovedi\' ", "Venerdi\' ", "Sabato ", "Domenica "};        double temperatura[7];
        for(i=0;i<7;i++)
        {
                printf("Iserisci la temperatura %-10s:", giorno[i]);                                            scanf("%lf", &temperatura[i]);
        }
        for(i=0;i<7;i++)
        {
                        printf("\n%-10s: %.2f", giorno[i], temperatura[i]);
        }
        printf("\n");
        system("pause");
        return 0;
    }
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  9. #9
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Spiega quali errori ottieni esattamente, altrimenti non è possibile aiutarti...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  10. #10
    Ciao allora i problemi che ho trovato quando eseguo il programma sono:
    1)Mi appaiono uno di seguito all'altro Inserisci la temmperatura Lunedì: Inserisci la temmperatura Martedì: Inserisci la temmperatura Mercoledì: Inserisci la temmperaturaGiovedì e così fino a Domenica;
    2)Non posso inserire nessun numero e appena tocco un pulsante qualsiasi il programma si chiude;
    3)Mi appaiono sritte molto strane poi:
    Lunedì: 112174963305049370000seguito da circa un altro centinaio di zeri
    Martedi: 0.00
    Mercoledì: una cosa analoga a Lunedì ma con numeri diversi
    Giovedì: 0:00
    Venerdì: una cosa analoga a Lunedì e Martedì ma con numeri diversi
    Sabato: -1.#R
    Domenica: 0.00

    Questi sono i problemmi che ho riscontrato
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

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.