Programma di informatica-algoritmo
salve ho svolto questo esercizio: Realizzare il diagramma a blocchi e la relativa implementazione in linguaggio C della funzione
SOMMA_RIGHE_MULTIPLI così definita:
• parametri : una matrice A di elementi di tipo intero, il numero n di righe, il numero m di
colonne, il valore B di tipo intero da considera come multiplo;
• valore di ritorno : nessuno;
• calcolo da eseguire : calcolare e visualizzare, per ogni riga, la somma dei multipli del
parametro B.
Ed ho realizzato la relativa codifica in C cioè:
Potresti dirmi perchè non funziona??
SOMMA_RIGHE_MULTIPLI così definita:
• parametri : una matrice A di elementi di tipo intero, il numero n di righe, il numero m di
colonne, il valore B di tipo intero da considera come multiplo;
• valore di ritorno : nessuno;
• calcolo da eseguire : calcolare e visualizzare, per ogni riga, la somma dei multipli del
parametro B.
Ed ho realizzato la relativa codifica in C cioè:
#include<stdlib.h> #include<stdio.h> #define MIN 1 #define R_MAX 100 #define C_MAX 100 int main() { int dim,i,j,B,r; int somma; int A[R_MAX][C_MAX]; printf("Inserire dimensione matrice"); do { printf("Inserire un valore compreso tra %d e %d=",MIN,R_MAX); scanf("%d",&dim); }while(dim<MIN || dim>=R_MAX); printf("\nCaricamento matrice A\n"); for(i=0;i<dim;i++) { for(j=0;j<dim;j++) { printf("\nInserire un valore A [%d,%d]= ",i,j); scanf("%d",&A[i][j]); } } printf("Inserire parametro intero B"); scanf("%d",&B); for(i=0;i<dim;i++) { r=A[i][j]%2; if(r==0) { somma=1; somma=somma+r++; } } printf("somma dei multipli di B= "); for(i=0;i<dim;i++) printf("%d",somma); getch(); }
Potresti dirmi perchè non funziona??
Risposte
Ho modificato il tuo post in modo che utilizzasse il tag code. Ti consiglio di cercare di usarlo in futuro.
EDIT: Dalla descrizione del testo immagino che la riga seguente
dovrebbe essere
Nel tuo codice stai infatti verificando se l'elemento corrente di A è pari, non se è un multiplo di B..
EDIT: Dalla descrizione del testo immagino che la riga seguente
r=A[i][j]%2;
dovrebbe essere
r=A[i][j]%B;
Nel tuo codice stai infatti verificando se l'elemento corrente di A è pari, non se è un multiplo di B..
ciao, l' ho modificato ma non funziona lo stesso.
#include
#include
#define MIN 1
#define R_MAX 100
#define C_MAX 100
int main()
{
int dim,i,j,B,r;
int somma=0;
int A[R_MAX][C_MAX];
printf("Inserire dimensione matrice");
do
{
printf("Inserire un valore compreso tra %d e %d=",MIN,R_MAX);
scanf("%d",&dim);
}while(dim=R_MAX);
printf("\nCaricamento matrice A\n");
for(i=0;i
{
for(j=0;j
{
printf("\nInserire un valore A [%d,%d]= ",i,j);
scanf("%d",&A[j]);
}
}
printf("Inserire parametro intero B");
scanf("%d",&B);
for(i=0;i
{
r=A[j]%B;
if(r==0)
{
somma=0;
somma=somma+A[j];
}
}
printf("somma dei multipli di B= ");
for(i=0;i
printf("%d",somma);
getch();
}
#include
#include
#define MIN 1
#define R_MAX 100
#define C_MAX 100
int main()
{
int dim,i,j,B,r;
int somma=0;
int A[R_MAX][C_MAX];
printf("Inserire dimensione matrice");
do
{
printf("Inserire un valore compreso tra %d e %d=",MIN,R_MAX);
scanf("%d",&dim);
}while(dim
printf("\nCaricamento matrice A\n");
for(i=0;i
for(j=0;j
printf("\nInserire un valore A [%d,%d]= ",i,j);
scanf("%d",&A[j]);
}
}
printf("Inserire parametro intero B");
scanf("%d",&B);
for(i=0;i
{
r=A[j]%B;
if(r==0)
{
somma=0;
somma=somma+A[j];
}
}
printf("somma dei multipli di B= ");
for(i=0;i
getch();
}
Per prima cosa i tag code, poi non mi sembra una buona idea allocare un array $100 \times 100$ quando poi ne usi solo una parte. A questo punto ti conviene allocarlo dopo che l'utente ha inserito la dimensione richiesta della matrice.
Inoltre resetti la somma ogni volta! Quel
Inoltre resetti la somma ogni volta! Quel
somma = 0non va dentro all'if nè dentro al for perchè deve essere eseguito una sola volta.