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

    (c++) Problema con array

    "Dato un elenco di persone con l'indicazione del nome e dell'altezza, determinare l'altezza media". Io il programma l'ho fatto, non mi da errori, ma mi da problemi nell'immissione dei nomi. Mi date una mano??
    codice:
    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    int main ()
    {
        int d;
    
        cout <<" Numero di persone?" << endl;
        cin >> d;
    
        char vett1[d];
        int vett2[d];
    
      cout <<" Inserisci il nome della persona e la sua altezza" << endl;
      for(int i=0; i<d; i++)
      {
          cout <<"altezza" << endl;
          cin >> vett2[i];
          cout << "nome" << endl;
          cin >> vett1[i];
    
    
      }
    int somma = 0;
        for (int i=0; i<d; i++)
        {
             somma = vett2[i] + somma;
        }
    
        float media = somma / d;
    
        cout <<" La somma delle altezze e': " << somma << endl;
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    un nome non è composto da semplicemente un carattere..

    char vett1[d] crea un vettore di caratteri...tu devi crearti una sorta di vettore di nomi..ossia una matrice.Successivamente tramite la fgets() [/B] e non la cin[/B]immetti il nome..

    Sebbene alcuni compilatori lo accettino,ti conviene usare l'allocazione dinamica . .

  3. #3

    Moderazione

    Benvenuto sul forum! Ti ricordo che il codice va specificato tra tag [CODE] ... [/CODE], altrimenti perde l'indentazione.

    Ora correggo io, in futuro imposta correttamente la discussione fin da subito; nel frattempo ti consiglio di dare un'occhiata al regolamento.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Originariamente inviato da Marco1995
    un nome non è composto da semplicemente un carattere..

    char vett1[d] crea un vettore di caratteri...tu devi crearti una sorta di vettore di nomi..ossia una matrice.Successivamente tramite la fgets() [/B] e non la cin[/B]immetti il nome..

    Sebbene alcuni compilatori lo accettino,ti conviene usare l'allocazione dinamica . .
    mi spieghi meglio ( magari tramite esempio se ti va) come creare una matrice di nomi e l'uso di fgets???

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    codice:
    #include <iostream>
    #include <string>
    #include <windows.h>
    using namespace std;
    
    int main ()
    {
        int d;
    
        cout <<" Numero di persone?" << endl;
        cin >> d;
    
        string *vett1 = new string[d];
        int *vett2 = new int[d];
    
      cout <<" Inserisci il nome della persona e la sua altezza" << endl;
      for(int i=0; i<d; i++)
      {
          cout <<"altezza" << endl;
          cin >> vett2[i];
          cout << "nome" << endl;
          getline(cin, vett1[i]);
      }
    int somma = 0;
        for (int i=0; i<d; i++)
        {
             somma = vett2[i] + somma;
        }
    
        float media = somma / d;
    
        cout <<" La somma delle altezze e': " << somma << endl;
        delete[] vett1;
        delete[] vett2;
        return 0;
    }
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    mi spieghi meglio ( magari tramite esempio se ti va) come creare una matrice di nomi e l'uso di fgets???
    codice:
    int main()
    {
        int quanti;
        int i;
        char buffer[30];
        cout << "Quanti nomi vuoi inserire ";
        cin >> quanti;
        char** raccolta_nomi;
        raccolta_nomi = (char**) calloc (quanti,sizeof(char*));
         for(i=0;i<quanti;i++)
         {
             cout << "Inserisci il " << i+1 << " nome ";
             fgets(buffer,30,stdin);
            cin.ignore();
             raccolta_nomi[i] = (char*) calloc (strlen(buffer),sizeof(char));
             strcpy(raccolta_nomi[i],buffer);
         }
         
         //poi alla fine elimini la matrice con free()
    }
    C'è in mezzo anche la funzione strcpy che copia i caratteri di un array di caratteri in un altro

  7. #7
    Grazie mille, mi hai salvato

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da francescoiavazz
    Grazie mille, mi hai salvato
    [OT]
    Ottimo metodo "farsi fare" i compiti ...

    [/OT]
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Allo stato attuale da comunque un risultato errato...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Allo stato attuale da comunque un risultato errato...
    Mi sono accorto che c'è qualcosa che non va..ma non riesco a capire dove possa stare il problema..in pratica la funzione fgets non va come previsto..non si ferma nemmeno ad aspettare l'input..sembra quasi un errore di debug..sapresti spiegarmi il motivo?

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.