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

    [C++]: progr. senza errori che non viene eseguito

    ciao a tutti,
    il listato seguente non contiene errori (a quanto dice il compliatore...)
    tuttavia il tasto "Execute" non è attivo...come mai???
    Il programma chiede all'utente di inserire 3 elementi in un vettore, li passa alla funzione min che "dovrebbe" trovare il minimo fra i tre...ecco il codice, uso Dev C++ come compilatore:
    codice:
    #include <stdio.h>
    #include <iostream>
    void min (int vet);
    int vet[3];
    int main(int argc, char *argv[])
    {
      
      int I;
      
      //Caricamento dell'Array
      for (I=0; I<3; ++I)
      {
      cout << "inserire vet["<<I<<"]";
      cin >> vet[I];
      }
      // Visualizzazione dell'array
      for (I=0; I<3; ++I) cout << vet[I]<<"\n";
      min(vet[I]);//calcola il minimo
      
      return 0;
    }
    
      void min (int minimo, int I)
      {
      for (I=0; I<3;++I)
      {
       minimo==vet[I];
       if (vet[I+1]< minimo)
       (minimo==vet[I+1]);
      
      }
       cout<< minimo;
      }
    ciao!
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  2. #2
    Prova così

    Codice PHP:
    #include <iostream.h>


    void main(int argcchar *argv[])
    {
        
    int dim 3;
        
    int vet[3];
        
    int I 0;

        
    //Caricamento dell'Array
        
    for (I=0I<dimI++)
        {
            
    cout << "inserire vet["<<I<<"] : ";
            
    cin >> vet[I];
        }
        
        
    cout << "\n";
        
    int minimo vet[0];

        
    // Visualizzazione dell'array
        
    for (I=0I<dimI++)
        { 
            
    cout << "vet[" << << "] = " << vet[I] <<"\n";
           if (
    vet[I]< minimominimo=vet[I];
        }

        
    cout << "Il valore minimo e' " << minimo <<"\n";

    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

  3. #3
    si però il prof. ci ha detto di mettere il codice relativo al calcolo del minimo in una funzione...
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  4. #4
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Per iniziare, la funzione min è dichiarata con un prototipo e definita con un altro prototipo e un compilatore come il g++ si rifiuta giustamente di portare a termine la compilazione.
    Secondo, visto che parliamo di C++ io dichiarerei la suddetta funzione così (ma questo è ininfluente ai fini del funzionamento corretto, diciamo che è una mia s*ga mentale ):

    void min (int, int);

    Cioè senza nomi di parametro. Poi ovviamente la definizione sarà

    void min (int minimo, int I);

    In questo modo potrai cambiare il nome dei parametri passati alla funzione senza doverne riscrivere anche il prototipo. Bello il C++. :metallica
    ChReAn
    -------------------

    Slackware 9.1 powered

  5. #5
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Ah scusa ho capito dove stai sbagliando.
    Stai dichiarando due parametri nella funzione minimo, e invece ti servono due variabili locali.
    In seconda istanza, c'è un errore logico nella funzione min.
    Ora ti posto il codice corretto, un attimino...
    Altra cosa: stai preincrementando il contatore I nei cicli for, dovresti postincrementarlo (I++).
    ChReAn
    -------------------

    Slackware 9.1 powered

  6. #6
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Allora, oltre alle imperfezioni che ti ho indicato prima c'era un altro errore fondamentale.

    Nella funzione minimo hai scritto:

    minimo==vet[I]

    e invece a rigor di logica avremmo dovuto procedere con un'assegnazione, così

    minimo = vet[i]

    Cmq ecco il codice completo (ho eliminato anche stdio.h che non serve)

    #include <iostream>
    void min ();
    int vet[3];
    int main(int argc, char *argv[])
    {

    int I;

    //Caricamento dell'Array
    for (I=0; I<3; I++)
    {
    cout << "inserire vet["<<I<<"]";
    cin >> vet[I];
    }
    // Visualizzazione dell'array
    for (I=0; I<3; I++) cout << vet[I]<<"\n";
    min();//calcola il minimo

    return 0;
    }

    void min ()
    {
    int I, minimo;
    minimo;
    minimo = vet[0];
    for (I=1; I<3;I++)
    {
    if (vet[I] < minimo)
    (minimo=vet[I]);

    }
    cout<< minimo;
    }
    ChReAn
    -------------------

    Slackware 9.1 powered

  7. #7
    [supersaibal]Originariamente inviato da ChReAn
    Ah scusa ho capito dove stai sbagliando.
    Stai dichiarando due parametri nella funzione minimo, e invece ti servono due variabili locali.
    questo punto non l'ho capito

    In seconda istanza, c'è un errore logico nella funzione min.
    Ora ti posto il codice corretto, un attimino...
    Altra cosa: stai preincrementando il contatore I nei cicli for, dovresti postincrementarlo (I++). [/supersaibal]
    L'errore logico l'ho trovato...ho messo == al posto di =...

    per l'incremento: purtroppo è quella me**a di "Guida al C++" che ho che riporta l'incremento in questo modo...
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  8. #8
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    [QUOTE][supersaibal]Originariamente inviato da elevation


    questo punto non l'ho capito

    [QUOTE]

    Voglio dire, tu hai scritto

    min (int minimo, int I)

    e quindi la funzione si aspetta due parametri interi.

    Poi nel codice tu chiami la funzione così

    min (vet[I])

    Quindi le passi un numero intero come parametro e basta.
    Per le tue esigenze invece era sufficiente dichiarare, ALL'INTERNO della funzione e non come parametri delle funzioni, due variabili int: minimo e I.

    Cmq leggi il mio codice e studialo per capire dove hai sbagliato, hai ancora le idee un po' confuse (ma non disperare, all'inizio è più che normale, anzi).
    ChReAn
    -------------------

    Slackware 9.1 powered

  9. #9
    eheheh un errore è scappato anche a te , hai messo minimo=vet[0];
    all'interno del ciclo for... , grazie mille cmq!! Adesso funziona...solo..non ho capito bene perchè non bisogna passare nessun parametro alla funzione min...ecco il codice corretto:

    codice:
    #include <iostream>
    void min ();
    int vet[3];
    int main(int argc, char *argv[])
    {
      
      int I;
      
      //Caricamento dell'Array
      for (I=0; I<3; I++)
      {
      cout << "inserire vet["<<I<<"]";
      cin >> vet[I];
      }
      // Visualizzazione dell'array
      for (I=0; I<3; I++) cout << vet[I]<<"\n";
      min();//calcola il minimo
      
      return 0;
    }
    
      void min ()
      
      {  int minimo; 
      int I;
      minimo=vet[0];
      for (I=0; I<3;I++)
      {
       
       if (vet[I]< minimo)
       (minimo=vet[I]);
      
      }
       cout<< minimo;
       getchar();
      }
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  10. #10
    capito...bastava usare delle variabili locali...ma quand' è che è invece necessario usare i parametri???

    ciao!
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

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.