Programma di informatica-algoritmo

mircosam
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è:

#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
apatriarca
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
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..

mircosam
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();


}

minomic
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
somma = 0
non va dentro all'if nè dentro al for perchè deve essere eseguito una sola volta.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.