Esercizio C

Pubblicità

Bernardo Chiaravalli

Nuovo Utente
Messaggi
63
Reazioni
6
Punteggio
26
Testo esercizio
Dato un array statico a e uno dinamico b delle stesse dimensioni, scrivere una funzione che:
• a. Ritorni un nuovo array contenente la somma per componenti di a+b
• b. Ritorni il prodotto per componenti dei due array direttamente sull’array a.
Tentando la risoluzione sono arrivato a questo punto:

Codice:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int N, i, k, x, j;
N = 10;
int A[10];
int A[10] = {0,1,2,3,4,5,6,7,8,9 }; 
int C[10];
int D[10];


/*int array_function(int *C, int *D, int N);
int *E = NULL;*/


int main()
{
    // Array dinamico
        int i, N = 10;
        int *B = (int *)calloc(N, sizeof(int));
        for (i = 1; i < N; i++) {
            B[i] = (i + 1);
        }
        printf("Ecco i valori contenuti in B:\n");
        for (i = 0; i < N; i++) {
            printf("%d\n", B[i]);
        }
        
    
    // Array statico 
        printf("Ecco i valori di A: \n");
        for (j = 1; j<N; j++)
        {
        printf("%d\n", A[j]);
        }
        

    // somma e prodotto

        
        for (i,j = 1; i,j < 10; i,j++)
        {
            C[k] = A[j] + B[i];
            D[x] = A[j] * B[i];
            printf("Somma dei valori degli Array: %d\n", C[k]);
            printf("Prodotto dei valori degli Array: %d\n", D[x]);
        }
        
        
      
}

Ho fatto diversi tentativi, ma i valori stampati alla fine non sono mai quelli corretti. Sapreste darmi una dritta per farmi capire dov'è che sbaglio?
grazie a tutti
 
Prima di tutto devi capire cosa voglia dire "lo scopo" delle variabili. Mai usare variabili al di fuori dello scopo in cui sono usate. Nel tuo caso hai solo una funzione (il main) quindi perché dichiarare variabili globali? Sono un rischio. E MAI e poi MAI usare variabili globali come contatori di cicli. E tu ne usi addirittura quattro senza nessun motivo, addirittura senza inizializzarle, quando te ne basta una sola. Guarda bene l'istruzione "for", è lì che sbagli.
Ricorda che i vettori partono da indirizzo zero, non uno.
E sbagli il prodotto, l'esercizio richiede che sia ritornato in uno dei vettori originali, non in un terzo vettore.
 
In ogni caso l’ultimo punto richiede l’inserimento in A non in un altro vettore...
Poi la doppia dichiarazione di A.
Secondo me c’è da ripartire dalle basi (anche se queste sono basi)

In più hai aperto 7 post
 
Senza contare che sia somma che prodotto di due interi puo' causare un overflow aritmetico quindi andrebbe utilizzato almeno float.

PS Bernardo non prendere le nostre come critiche, hai chiesto aiuto e te lo stiamo dando, anche noi siamo siamo passati alle prime armi. Ci pare solo che tu manchi delle basi principali, tutto qui. Che scuola frequenti e quanto anni hai?
 
Pubblicità
Pubblicità
Indietro
Top