|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2011
Messaggi: 1
|
[C] Somma in colonna di elementi di 2 array
Ciao a tutti,
Volevo chiedere a qualcuno più esperto di me se mi può aiutare a risolvere questo esercizio(è abbastanza urgente xk ne ho bisogno per un compito imminente): L utente deve inserire due numeri interi positivi A e B, composti da un numero arbitrario di cifre (non necessariamente il medesimo per ambedue) e memorizzati, cifra per cifra, all'interno di due array separati. Quindi bisogna scrivere un programma che esegue l addizione in colonna di A e B utilizzando un altro array per memorizzare cifra per cifra il risultato. Esempio: | | |5|6|5|4| | | | |2|3|8| Risultato: | | |5|8|9|2| Al termine dell'addizione, il programma dovrà visualizzare sia gli array relativi agli operandi che quello relativo al risultato dell'addizione. I numeri a, b e il risultato della loro somma devono essere memorizzati, cifra per cifra, in array separati. Gli array devono essere popolati scomponendo due numeri inseriti dall'utente (usando questo metodo int n, i, j; int array[MAX_SIZE]; int cifre; printf("Inserire il valore di n: "); scanf("%d", &n); ///determina il numero delle cifre cifre = log10(n) + 1; ///scompone il numero e lo memorizza nell'array for (i=0; i < cifre; i ++) array[i] = (n % (int)pow(10, i+1))/pow(10,i); ///stampa l'array elemento per elenmeto for (i=cifre-1; i >= 0; i --) printf("%d ", array[i]);; Gli input devono essere verificati, ossia a e b devono essere positivi (maggiori di zero) e devono poter essere memorizzati nei rispettivi array interamente. La somma va calcolata come se si stesse lavorando manualmente, cifra dopo cifra; NON è considerata una soluzione valida quella in cui vengono ricalcolati i valori originali di a e b, ne viene eseguita la somma e successivamente questa viene scomposta e memorizzata nell'array corrispondente. Il programma deve funzionare correttamente anche nel caso in cui a e b non abbiano il medesimo numero di cifre. Se possibile, mi aiuterebbe di più se usaste funzioni base del C visto che non sono ancora esperto. Questo è quello che sono riuscito a fare io per ora. Purtroppo però cosi facendo sto riutilizzando l array_a e nn va bene. Inoltre se sommo un numero di 2 cifre con uno di 3 cifre una mi viene come mangiata. #include <stdio.h> #include <math.h> #define MAX_SIZE 10 int main () { //dichiarazione variabili int a, b; //2 numeri inseriti dall utente int array_a [MAX_SIZE]; int array_b [MAX_SIZE]; int risultato [MAX_SIZE]; //array per la memorizzazione del risultato int i, cifre; do { //input printf ("Inserire il valore di a: "); scanf("%d", &a); printf ("Inserire il valore di b: "); scanf("%d", &b); } while (a <= 0 || b <= 0); //determina il numero delle cifre cifre = log10(a) + 1; //scompone il numero a e lo memorizza nell'array for (i = 0; i < cifre; i ++) array_a[i] = (a % (int)pow(10, i+1))/pow(10,i); //stampa l'array_a elemento per elemento for (i = cifre-1; i >= 0; i --) printf("%d ", array_a[i]); printf("+\n"); //scompone il numero b e lo memorizza nell'array for (i = 0; i < cifre; i ++) array_b[i] = (b % (int)pow(10, i+1))/pow(10,i); //stampa l'array_b elemento per elemento for (i = cifre-1; i >= 0; i --) printf("%d ", array_b[i]); printf("=\n"); for(i = 0; i < MAX_SIZE; i++ ){ risultato[i] = array_a[i] + array_b[i]; if (risultato[i] > 9) { risultato[i] %=10; array_a[i+1]++; } } //determina il numero delle cifre del risultato cifre = log10(a) + 1; //scompone il risultato e lo memorizza nell'array for (i = 0; i < cifre; i ++) array_a[i] = (a % (int)pow(10, i+1))/pow(10,i); //stampa il risultato elemento per elemento for (i = cifre-1; i >= 0; i --) printf("%d ", risultato[i]); printf("\n"); return 0; } Ultima modifica di seph89 : 17-11-2011 alle 21:59. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:22.



















