Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 37
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    20

    [C] Funzioni e vettori!! Non ho capito una cosa...

    Lunedì ho esame di Fondamenti di informatica I all'università di messina ma non ho capito come si crea una funziona che opera su vettori. Vi spiego il mio problema:

    TRACCIA:
    Una ditta al momento di calcolare la busta paga dei suoi 22 dipendenti decide di punire, detraendo una quota dallo stipendio, i dipendenti memorizzati nei record di indice dispari e premiare, con un aumento, quelli di indice pari.

    Il contabile decide di calcolare la detrazione in base alla posizione del dipendente nel database (indice) secondo la seguente relazione:

    Detrazione = indice * 3

    L'aumento viene calcolato allo stesso modo (in base alla posizione) secondo la seguente relazione:

    Aumento = indice * 2

    Stampare a monitor lo stipendio di tutti i 22 dipendenti, lo stipendio minimo e lo stipendio massimo.

    ANALISI:
    L'input è costituito dall'ammontare iniziale dello stipendio (uguale per tutti)

    L'output è rappresentato dallo stipendio di ciascun dipendente, dallo stipendio minimo e dallo stipendio massimo.

    La relazione da sfruttare è:
    Detrazione = indice * 3
    Aumento = indice * 2

    E' necessario individuare quando l'indice è pari o dispari (possiamo utilizzare il resto della divisione dell'indice per 2):
    Se l'indice è pari allora indice % 2 vale 0
    Se l'indice è dispari allora indice % 2 vale 1

    PROGETTAZIONE:
    Acquisire l'ammontare dello stipendio iniziale da tastiera

    Calcolare gli stipendi di ogni dipendente e trovare il valore minimo e massimo utilizzando due funzioni trova_min e trova_max

    Comunicare tutti gli stipendi stampandoli a monitor, comunicare il valore minimo e il valore massimo

    -----

    Io ho fatto tutto.. le variabili che tengo sono:
    codice:
    #include <stdio.h>
    #define DIPENDENTI 22
    
    main() {
    float stipendi[DIPENDENTI], stipendio_base;
    int i;
    Faccio l'inserimento dello stipendio di base da tastiera come richiesto ed il ciclo FOR per calcolare l'aumento e la diminuzione dello stipendio di ogni dipendente.. ma ho problemi nel creare ed usare le due funzioni trova_min e trova_max.. potreste spiegarmelo??

    Grazie infinite.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Che difficolta' hai?

    Le due funzioni devono restituire un valore (float o double, come vuoi) che rappresenti lo stipendio (min o max, a seconda della funzione) e devono accettare il puntatore al vettore degli stipendi rivalutati.

    P.S. Attenzione al titolo e al regolamento ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    20
    Originariamente inviato da oregon
    Che difficolta' hai?

    Le due funzioni devono restituire un valore (float o double, come vuoi) che rappresenti lo stipendio (min o max, a seconda della funzione) e devono accettare il puntatore al vettore degli stipendi rivalutati.

    P.S. Attenzione al titolo e al regolamento ...
    Non è che potresti farmi vedere come vanno fatte?? °° xkè nn ho capito...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Beh ... gli "scheletri" delle funzioni possono essere

    codice:
    float trova_min(float *stip)
    {
       /* Trova lo stipendio minimo e lo restituisce */
    }
    
    float trova_max(float *stip)
    {
       /* Trova lo stipendio massimo e lo restituisce */
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    20
    Originariamente inviato da oregon
    Beh ... gli "scheletri" delle funzioni possono essere

    codice:
    float trova_min(float *stip)
    {
       /* Trova lo stipendio minimo e lo restituisce */
    }
    
    float trova_max(float *stip)
    {
       /* Trova lo stipendio massimo e lo restituisce */
    }
    Ad esempio:

    codice:
    float trova_min(float *stip)
    {
       stipendio[i] = *stip
       if (*stip < min) {
       min = *sitp
    }
    sarà sbagliato sicuro -.- non riesco a capire come devo fare -.-

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    non riesco a capire come devo fare -.-
    Piuttosto ti mancano molte nozioni di base ...

    Assumi che il primo elemento del vettore sia il minimo e memorizzalo in una variabile che rappresenta il minimo attuale;

    imposta un ciclo che esamini tutti gli altri stipendi dal secondo all'ultimo;

    nel ciclo, confronta il valore minimo attuale con l'elemento i-esimo del vettore;

    se tale valore e' piu' piccolo del minimo attuale assumilo come minimo attuale;

    restituisci il minimo attuale all'uscita della funzione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    ciao
    in c i vettori sono porzioni di memoria attigua e nella dichiarazione es int vettore[10] si riservano le prime 10 locazioni di memoria adiacenti successive alla variabile vettore capaci di contenere un int.
    A questo punto scorrendo con gli indici e a partire da vettore[0] fino a vettore[9] posso giostrarmi le 10 "caselline " in cui memorizzo cio che mi interessa.

    Per passare il mio vettore ad una funzione quindi non dovrò far altro che passare il riferimento alla prima casella del vettore , cioè vettore stesso es(float trova_min vettore[], passaggio per valore)oppure con un puntatore (passaggio per riferimento),e poi utilizzare quest'ultimo all'inetrno della funzione come se fosse contenuto ancora nel main ,e alla fine, fare una return col valore dello stip minimo e nell'altra funz col valore dello stipendio max.....tutto qui!!
    Ciao
    Massimiliano
    Cogito ergo sum

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    20
    Così:

    codice:
    float trova_min (float stipendi[], int DIPENDENTI) {
    
    int i, min;
     for (min=stipendi[0], i = 1; i<DIPENDENTI; i++) {
      if (stipendi[i]<min) {
       min = stipendi[i];
    return min;
    }
    E poi nel main la utilizzo così:

    codice:
    min = trova_min(stipendi, 22);
    giusto?

  9. #9
    DIPENDENTI è una MACRO.
    E' definita per tutto il programma e non va passata come paramentro....la puoi usare direttamente sia nell funz che nel main!
    Per il resto non capisco quel for....fallo semplicemente cn i che va da 0 a n-1 e incrementa di 1(o meglio che va da 0 a DIPENDENTI-1)
    Cmq provalo e facci sapere
    Ciao Massimiliano
    Cogito ergo sum

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    L'hai compilata ?

    Ci sono degli errori che avresti notato subito ...

    1) min deve essere un float e non un int

    2) il secondo argomento non e' necessario in quanto e' una costante definita in testa al programma

    3) nella funzione hai due parentesi { aperte e solamente una parentesi } chiusa ...
    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.