Visualizzazione dei risultati da 1 a 10 su 32

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Le variabili sono locali. La dim della funzione check NON E' quella usata nella funzione di inserimento.

    Devi passare anche il valore di dim tra le chiamate.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    25
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Le variabili sono locali. La dim della funzione check NON E' quella usata nella funzione di inserimento.

    Devi passare anche il valore di dim tra le chiamate.
    Il programma l'ho finito e non so perchè funziona tutto bene... hahahahha
    Ecco qui il codice:

    codice:
    #include <stdio.h>#include <stdlib.h>
    
    
    
    
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    
    void leggi_v (int v1[], int v2[], int dim) {
        int i;
    
    
        printf("Inserisci il numero di elementi dei vettori: ");
        scanf("%d", &dim);
    
    
        printf("Inserisci gli elementi del vettore 1:\n");
        for (i=0; i<dim; i++) {
            printf("Elemento %d: ",i+1);
            scanf("%d", &v1[i]);
        }
        
        printf("Inserisci gli elementi del vettore 2:\n");
        for (i=0; i<dim; i++) {
            printf("Elemento %d: ",i+1);
            scanf("%d", &v2[i]);
        }
    }
    
    
    
    
    void stampa_v (int v1[], int dim) {
        int i;
    
    
        printf ("Il mio vettore sara' composto dai seguenti numeri \n");
        for (i=0; i<dim; i++) {
            printf ("Elemento n.%d: %d\n", i+1, v1[i]);
        }
    }
    
    
    
    
    void stampa_v_diff (int v3[], int dim) {
        int i;
    
    
        printf ("Il mio vettore differenza sara' composto dai seguenti numeri \n");
        for (i=0; i<dim; i++) {
            printf ("Elemento n.%d: %d\n", i+1, v3[i]);
        }
    }
    
    
    
    
    void check_v (int v1[], int v2[], int dim) {
        int vero = false;
        int i=0;
    
    
        for (i=0; i<dim; i++) {
            if (v1[i] > v2[i])
                vero = true;
            else
                vero = false;
        }
        
        if (vero)
        printf("Gli elementi del vettore1 sono maggiori degli elementi del vettore2\n\n\n");
        else
        printf("Gli elementi del vettore1 sono minori degli elementi del vettore2\n\n\n");
    }
    
    
    
    
    void calcola_diff (int v1[], int v2[], int v3[]) {
        int i;
    
    
        for (i=0; i<10; i++) {
            v3[i] = v1[i]-v2[i];
        }
    
    
    }
    
    
    
    
    
    
    int main() {
    int v1[5];
    int v2[5];
    int v3[5];
    
    
    leggi_v (v1,v2,5);
    stampa_v (v1,5);
    stampa_v (v2,5);
    check_v (v1,v2,5);
    calcola_diff (v1,v2,v3);
    stampa_v_diff (v3,5);
    
    
    }
    Solo una cosa non mi trovo... la dimensione.
    Non ho ben capito cosa intendi. In tutti i sotto programmi devo richiamare la dim?
    Infatti la dim del main potrebbe essere diversa da quella inserita dall'utente. Ma per chiamare i vettori nel main devo comunque darli una dimensione... non so se mi sono ben spiegato.
    Per esempio nel main ho detto che i vettori hanno dim 5. Se io inserisco dim 10 nel programma leggi_v non mi trovo...
    Come posso risolvere?

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Nella prima funzione devi passare dim per puntatore, accettare il valore in modo che non sia maggiore del massimo previsto nel main e poi passare dim a tutte le altre funzioni (non un numero).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    25
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Nella prima funzione devi passare dim per puntatore, accettare il valore in modo che non sia maggiore del massimo previsto nel main e poi passare dim a tutte le altre funzioni (non un numero).
    Ho provato come hai detto tu, ma non ci sono riuscito. Forse mi sarà sfuggito qualcosa.
    Però ho risolto utilizzando typdef!

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Non capisco la tua risposta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    25
    Utilizzando prima del main
    #define MaxDIM 50
    typedef int Vett1[MaxDIM];

    e inserendo nel main

    Vett1 v1;

    v1 prende come dim max in memoria 50.
    La memoria effettiva gliela do io inserendo la dim da tastiera.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.