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

    [C] - problema return di funzione

    Ciao a tutti!
    Sto scrivendo un programma semplice con funzioni e procedure, che carichi un vettore, ordina i suoi elementi con la selection sort e infine lo stampa.
    Mi segnala errore proprio alla prima funzione dovuto al return e non ho potuto verificare neanche gli errori delle procedure seguenti
    Questo è la parte del programma relativa al problema, se per favore potreste spiegarmi dove sbaglio e perché...grazie

    codice:
    short int caricavettore (short int v[]); 
    
    main () 
    { short int i; short int vett[N], vett_fin[N]; short int riemp; 
    riemp = caricavettore(vett); 
    printf("vettore : %hd\n", riemp);....
    } 
    
    short int caricavettore (short int v[]) 
    { short int i,r; 
    printf("inserire la dimensione del vettore\n...\n"); 
    scanf("%hd", &r); 
    printf("inserire il vettore\n"); 
          for(i=0;i<r; i++) 
              scanf("%hd", &v[i]); 
    return v; 
    }

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    bè v è un vettore ma la tua funzione ritorna un short int e non un vettore di short int

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Forse volevi scrivere

    return r;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Originariamente inviato da Stoicenko
    bè v è un vettore ma la tua funzione ritorna un short int e non un vettore di short int
    come faccio a far ritornare il vettore? ho provato a mettere return v[r] ma ovviamente mi dà solo l'ultimo elemento dell'array...dovrei mettere una variabile temporanea forse?
    influisce il fatto che sto passando i parametri per valore e invece andrebbero passati per indirizzo?

  5. #5
    Originariamente inviato da oregon
    Forse volevi scrivere

    return r;
    no così mi tornerebbe solo il riempimento....

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dato che nel main utilizzi

    short int riemp;

    e riemp DOVREBBE stare per "riempimento", si poteva supporre che si volesse semplicemente restituire il riempimento ...

    Del resto, a cosa ti servirebbe restituire il vettore se il vettore viene passato dall'esterno e modificato nella funzione??
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Originariamente inviato da oregon
    Dato che nel main utilizzi

    short int riemp;

    e riemp DOVREBBE stare per "riempimento", si poteva supporre che si volesse semplicemente restituire il riempimento ...

    Del resto, a cosa ti servirebbe restituire il vettore se il vettore viene passato dall'esterno e modificato nella funzione??
    si infatti hai ragione...
    è che ho messo una printf per controllare la funzione nel main e non mi stampava il vettore...però ora ho risolto!
    grazie a tutti
    un'ultima cosa...il mio programma funziona passando per valore e non per indirizzo...però sul libro ho letto che con gli array si passano i parametri sempre per indirizzo...come mai funziona allora?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da francesca89
    si infatti hai ragione...
    ...

    è che ho messo una printf per controllare la funzione nel main e non mi stampava il vettore...
    Infatti un vettore non si stampa con una semplice printf ...

    un'ultima cosa...il mio programma funziona passando per valore
    No ... non passi il vettore per valore ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    No ... non passi il vettore per valore ...
    perchè no?
    so che si passa per indirizzo usando il puntatore, cosa che non ho fatto...so male? è errore?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da francesca89
    perchè no?
    so che si passa per indirizzo usando il puntatore, cosa che non ho fatto...so male? è errore?
    Lo hai fatto perche' il nome del vettore rappresenta l'indirizzo del primo elemento del vettore stesso e quindi e' un puntatore al vettore.
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.