Esercizio C

Bernardo Chiaravalli

Nuovo Utente
63
6
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
 

Andretti60

Utente Èlite
6,440
5,091
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.
 

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
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
 
  • Mi piace
Reazioni: Andretti60

Andretti60

Utente Èlite
6,440
5,091
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?
 
  • Mi piace
Reazioni: Utente 16812

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili