seph89
17-11-2011, 20:50
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;
}
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;
}