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

    [c++] Problema stupido ma ci sto perdendo la notte...

    Ciao ragazzi, premetto che ho pochissimo tempo in quanto entro domattina avrei dovuto consegnare gli elaborati al professore, ma ci sto perdendo la notte e non ne esco (giornataccia a lavoro e la testa ha già di per se i suoi grattacapi...)...

    Devo realizzare una divisione di un array dato un discriminante, ora io l'ho realizzato in questo modo:
    codice:
    #include <stdio.h> 
    #include <iostream.h> 
    int i, n, a, j;  
    int trovato = 0; 
    int numeri[100]; 
    int vector1[100];  
    int vector2[100];  
    int num;  
    main() 
    {     
    cout << "Quanti numeri?: ";     
    cin >> n;  
    for (i = 0; i < n; i++) 
    { 
    cout << "Numero "<< i+1 <<" : "; 
    cin >> numeri[i]; 
    }  
    printf ("Numero da cercare: "); 
    scanf ("%d", &num); 
    i = 0;  
    do 
    { 
    if (numeri[i] == num) 
    { 
    trovato = 1; 
    } 
    else 
    { 
    i++; 
    } 
    } while (trovato == 0 && i < n);  
    if (trovato) 
    { 
    cout << "\n\n" << "Trovato" << "\n"; 
    cout << "L'elemento avente numero: " << numeri[i] << " si trova nella posizione: " << i+1 << "\n"; 
    a=i;  
    cout << "\n\nStampo la lista degli elementi del primo vettore" << "\n"; 
    for (i=0; i<a; i++)
     {     
    j=i;     
    vector1[j]=numeri[i];     
    cout << vector1[j] << " "; 
    };  
    cout << "\n\nStampo la lista degli elementi del secondo vettore" << "\n"; 
    for (i=a; i<n; i++) 
    {     
    j=a;     
    vector2[j]=numeri[i];     
    cout << vector2[j] << " "; 
    }; 
    } 
    else       
    {      
    cout << "Numero non trovato" << "\n";      
    }       
    cout << "\n\n\n\n"; 
    system("pause"); 
    }
    ed il tutto mi funziona, il problema è che il professore lo vuole sviluppato in funzioni e non appena provo a sciogliere il tutto, mi fa un casino di errori a palla, qualcuno di voi riesce a darmi una mano? non so più dove sbattere la testa...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464

    Re: [c++] Problema stupido ma ci sto perdendo la notte...

    Originariamente inviato da andreadg88
    appena provo a sciogliere il tutto
    Come hai fatto? Era quel codice che dava problemi che dovevi mostrare ...

    mi fa un casino di errori a palla
    Anche quelli dovevi mostrare ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ecco, avendo variato il codice, rendendo dinamico il vettore, ma splittando la parte di inserimento di dati, non funziona ed è come se "skippasse" proprio la funzione...

    codice:
    #include <cstdio>
    #include <iostream>
    int i, n, a, j; 
    int trovato = 0;
    int num;
    int vector2[100]; 
    int vector1[100];
    int inserimento(int n, int array[]);
    
    int main()
    {
        int *array;
        std::cout << "Quanti numeri: ";
        std::cin >> n;
        array= (int *) malloc (n*sizeof(int));
    
    int inserimento(int n, int array[]);
    
    printf ("Numero da cercare: ");
    scanf ("%d", &num);
    i = 0;
    
    do
    {
    if (array[i] == num)
    {
    trovato = 1;
    }
    else
    {
    i++;
    }
    } while (trovato == 0 && i < n);
    
    if (trovato)
    {
    std::cout << std::endl << std::endl << "Trovato" << std::endl;
    std::cout << "L'elemento avente numero: " << array[i] << " si trova nella posizione: " << i+1 << std::endl;
    a=i;
    
    std::cout << std::endl << std::endl << "Stampo la lista degli elementi del primo vettore" << std::endl;
    for (i=0; i<a; i++)
    {
        j=i;
        vector1[j]=array[i];
        std::cout << vector1[j] << " ";
    };
    
    std::cout << std::endl << std::endl << "Stampo la lista degli elementi del secondo vettore" << std::endl;
    for (i=a; i<n; i++)
    {
        j=a;
        vector2[j]=array[i];
        std::cout << vector2[j] << " ";
    };
    }
    else 
         {
         std::cout << "Numero non trovato" << std::endl;
         }
         
    std::cout << std::endl << std::endl << std::endl << std::endl;
    system("pause");
    } 
    
    int inserimento (int n, int array[])
    {
    for (i = 0; i < n; i++)
    {
    std::cout << "Numero "<< i+1 <<" : ";
    std::cin >> array[i];
    }
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Allora ... prima di tutto ti consiglio di utilizzare all'inizio una

    codice:
    using namespace std;
    in modo da evitare di scrivere sempre

    std::

    In secondo luogo, dato che la funzione inserimento non restituisce alcun valore, dovrebbe essere void, quindi

    codice:
    void inserimento(int n, int array[]);
    E per ultimo, ma più grave, quando richiami la funzione all'interno del main, devi scrivere

    codice:
    inserimento(n, array);
    e non il suo prototipo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    la funzione deve restituire all'esterno l'array...perchè poi va utilizzato nelle altre funzioni etc...

    non riesco ad uscirmene da ieri...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Con il codice che hai mostrato l'array lo allochi tu esternamente alla funzione e passi l'indirizzo per modificarlo ... Non è questo quello che vuoi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    si è quello che vorrei, ma nel momento in cui eseguo il codice, la funzione inserimento non viene eseguita, anche modificando con i tuoi suggerimenti, ottengo problemi di compilazione...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Originariamente inviato da andreadg88
    si è quello che vorrei, ma nel momento in cui eseguo il codice, la funzione inserimento non viene eseguita, anche modificando con i tuoi suggerimenti, ottengo problemi di compilazione...
    Forse non hai letto bene l'ultimo suggerimento che ti ho dato ...

    In ogni caso, se hai problemi di compilazione, devi scrivere quali sono ... non sono ancora un veggente ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Scusa so di esser poco chiaro ma dopo 2 notti questo esercizio mi sembra assurdo...

    codice:
    SenzaTitolo2.cpp:11: error: expected primary-expression before ']' token
    SenzaTitolo2.cpp:11: error: initializer expression list treated as compound expression
    SenzaTitolo2.cpp: In function `int main()':
    SenzaTitolo2.cpp:16: error: expected primary-expression before ']' token
    SenzaTitolo2.cpp:16: error: `inserimento' cannot be used as a function
    SenzaTitolo2.cpp: At global scope:
    SenzaTitolo2.cpp:66: error: redefinition of `int inserimento'
    SenzaTitolo2.cpp:11: error: `int inserimento' previously defined here
    SenzaTitolo2.cpp:66: error: expected primary-expression before ']' token
    SenzaTitolo2.cpp:67: error: expected `,' or `;' before '{' token
    make.exe: *** [SenzaTitolo2.o] Error 1
    Esecuzione terminata
    Questo è l'output che ottengo eseguendo:

    codice:
    #include <cstdio>
    #include <iostream>
    using namespace std;
    
    int i, n, a, j; 
    int trovato = 0;
    int num;
    int vector2[100]; 
    int vector1[100];
    int *array;   
    int inserimento(n, array[]);
    
    int main()
    {
     
    inserimento(n, array[]);    
    
    
    printf ("Numero da cercare: ");
    scanf ("%d", &num);
    i = 0;
    
    do
    {
    if (array[i] == num)
    {
    trovato = 1;
    }
    else
    {
    i++;
    }
    } while (trovato == 0 && i < n);
    
    if (trovato)
    {
    cout << endl << endl << "Trovato" << endl;
    cout << "L'elemento avente numero: " << array[i] << " si trova nella posizione: " << i+1 << endl;
    a=i;
    
    cout << endl << endl << "Stampo la lista degli elementi del primo vettore" << endl;
    for (i=0; i<a; i++)
    {
        j=i;
        vector1[j]=array[i];
        cout << vector1[j] << " ";
    };
    
    cout << endl << endl << "Stampo la lista degli elementi del secondo vettore" << endl;
    for (i=a; i<n; i++)
    {
        j=a;
        vector2[j]=array[i];
        cout << vector2[j] << " ";
    };
    }
    else 
         {
         cout << "Numero non trovato" << endl;
         }
         
    cout << endl << endl << endl << endl;
    system("pause");
    } 
    
    int inserimento (n, array[])
    {
    int *array;
        cout << "Quanti numeri: ";
        cin >> n;
        array = (int *) malloc (n*sizeof(int));
    for (i = 0; i < n; i++)
    {
    cout << "Numero "<< i+1 <<" : ";
    cin >> array[i];
    }
    return array;
    }

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Allora ... l'ultimo suggerimento che ti avevo dato era relativo al codice che mi avevi mostrato (con l'allocazione dell'array nel main).

    Se vuoi allocare la memoria nella funzione, allora devi inserire all'inizio

    codice:
    int inserimento(int **arr);

    nel main


    codice:
    	n = inserimento(&array);
    e la funzione

    codice:
    int inserimento (int **arr)
    {
        cout << "Quanti numeri: ";
        cin >> n;
        
        *arr = (int *) malloc (n*sizeof(int));
    
        for (i = 0; i < n; i++)
        {
    	cout << "Numero "<< i+1 <<" : ";
    	cin >> (*arr)[i];
        }
    
       return n;
    }

    EDIT: ho aggiornato il codice ... fai attenzione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.