Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    25

    [C] Confronto tra array tramite funzioni

    Salve a tutti. Qualcuno potrebbe gentilmente aiutarmi a fare questo programmino?

    Si scriva in linguaggio C un programma che dati in ingresso due vettori di numeri interi V1 e V2 aventi lo stesso numero di elementi, esegua le seguenti operazioni:
    1) controlli che gli elementi del vettore V1 siano tutti maggiori degli elementi omologhi del secondo vettore V2
    2) in caso affermativo generi un terzo vettore V3 i cui elementi sono le differenza degli elementi omologhi di V1 e V2


    Si strutturi il codice implementando le seguenti funzioni:


    check_vettori: ricevuti in ingresso due vettori ed il loro riempimento restituisce vero se gli elementi del primo vettore sono maggiori dei rispettivi elementi omologhi nel secondo vettore, restituisce falso altrimenti
    calcola_differenza: ricevuti in ingresso due vettori ed il loro riempimento, genera il vettore V3 ottenuto come differenza dei due vettori in ingresso (calcolando la differenza degli elementi omologhi)
    stampa_vettore: ricevuto in ingresso un vettore e il suo riempimento visualizza il vettore.
    leggi vettore: consente l'inserimento da tastiera di un vettore e del suo riempimento.


    Io fino ado ora sono riuscito a creare un sottoprogramma dove l'utente inserisce la dim dei vettore e gli elementi.
    Sulla parte del check_v non so cosa ho sbagliato poichè avviando il programma mi da sempre falso sia che il primo vettore sia maggiore che minore.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <conio.h>
    
    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);
         scanf("%d", &v1[i]);
         }
    
    printf("Inserisci gli elementi del vettore 2:\n");
    for (i=0; i<dim; i++) {
         printf("Elemento %d: ",i);
         scanf("%d", &v2[i]);
         }
    }
    
    
    void check_v (int v1[], int v2[]) {
    int vero = false;
    int i=0;
    int dim;
    
    for (i=0; i<dim; i++) {
         if (v1[i] > v2[i])
              vero = true;
         else
              vero = false;
         }
    
    if (vero)
    printf("Vero");
    else
    printf("Falso");
    }
    
    
    int main() {
    int v1[5];
    int v2[5];
    leggi_v (v1,v2,5);
    check_v (v1,v2);}

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    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.

  3. #3
    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?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    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.

  5. #5
    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!

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

  7. #7
    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.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    E questo che c'entra con quello che ti avevo detto io prima? Nulla ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    25
    Facendo come dicevi tu il compilatore non eseguiva il programma, quindi ho risolto il problema utilizzando un altro metodo.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    No ... non avevi capito quello che ti avevo suggerito, né hai capito adesso. Quello che hai fatto non risolve, semmai è la richiesta di dim nel main che risolve. Ma non importa.
    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.