[C] Somma elementi colonne di una matrice

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
salve ragazzi,
devo fare un programma che chieda all'utente di stabilire la dimensione di una matrice (righe e colonne) e definita la dimensione, chieda di inserire dei valori interi per riempire la matrice.
a questo punto si deve stampare in un nuovo vettore, la somma delle colonne.
se ho una matrice 2righe 3colonne, alla fine dovrò stampare un vettore contenente 3somme... tutto chiaro??

io ho scritto questo, però appena compilo mi esce "somma colonne.exe ha smesso di funzionare" :(

Codice:
#include <stdio.h>
#include <stdlib.h>


main()
{
      int r,c,v[r][c];
      int i,j;
      int n;
      int somma, sc[j];
      
      printf("Inserisci il numero di righe della matrice: ");
      scanf("%d", &r);
      printf("\n");
      printf("Inserisci il numero di colonne della matrice: ");
      scanf("%d", &c);
      printf("\n");
      scanf("&d", &v[r][c]);
      
// procedura di riempimento della matrice  
    
      for (i=0 ; i<r-1 ; i++)
          for (j=0 ; j<c-1 ; j++)
          {
              printf("Inserisci un mumero: ");
              scanf("%d", &n);
              printf("\n");             
              v[i][j] = n;
          }


// procedura di somma dei valori delle colonne


      somma = 0;       
      for (j=0 ; j<c ; j++)
      {
          for (i=0 ; i<r ; i++)
              somma = somma + v[i][j];
              sc[j] = somma;     
              }    


// stampa del vettore contenente le somme
          
      for (j=0 ; j<c ; j++);
          printf("%d", sc[j]);     
         
      system("pause");
}

cosa c'è che non va??

i = indice di riga
j = indice di colonna
r = num righe
c = nume colonne
v = matrice da riempire
sc = vettore contenente le somme

Help!
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
up!

perchè si blocca il programma?? cosa ho sbagliato?
 

fedexav

Utente Attivo
15
1
HDD
320 GB
RAM
4GB DDR3
GPU
Nvdia G-Force
Monitor
Acer cristal eye 15.6"
OS
Windows 7 Ultimate
Butch oddio!!!!!!....

---------- Post added at 10:54 ---------- Previous post was at 10:53 ----------

for(j=0 ; j<M ; j++)
{
somma = 0;
for(i=0; i<N; i++)
somma = somma + m[j] ;
somma[j] = somma ;
}
for(j=0; j<M; j++)
printf("Somma colonna %d = %d\n",
j+1, somma[j]) ;
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
Butch oddio!!!!!!....

---------- Post added at 10:54 ---------- Previous post was at 10:53 ----------

for(j=0 ; j<M ; j++)
{
somma = 0;
for(i=0; i<N; i++)
somma = somma + m[j] ;
somma[j] = somma ;
}
for(j=0; j<M; j++)
printf("Somma colonna %d = %d\n",
j+1, somma[j]) ;


non mi pare sia diverso dal mio codice :sisi:
 

fedexav

Utente Attivo
15
1
HDD
320 GB
RAM
4GB DDR3
GPU
Nvdia G-Force
Monitor
Acer cristal eye 15.6"
OS
Windows 7 Ultimate
Non ci ho fatto caso...ma a me va! -_-
 
U

Utente cancellato 68151

Ospite
non capisco l' utilita di "scanf("&d", &v[r][c]);" nelle prime righe del programma...
poi nei cicli for le variabili righe e colonne non vanno decrementate di uno, altrimenti ti perdi dei valori
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
non capisco l' utilita di "scanf("&d", &v[r][c]);" nelle prime righe del programma...
poi nei cicli for le variabili righe e colonne non vanno decrementate di uno, altrimenti ti perdi dei valori

intanto ho notato che ho sbagliato a scrivere perchè ho fatto &d e non %d, cmq quella riga l'ho eliminata... era una prova che avevo fatto e poi non l'ho tolta nella copia che ho scritto qui.

per r-1 e c-1 io l'ho fatto solo nella procedura di riempimento perchè tu inizi a riempire dalla riga/colonna 0 e quindi se hai 3 righe, queste sono 0,1,2 e quindi r-1.
nella procedura di somma, invece, come puoi notare non c'è perchè devo sommare tutti i valori e questi corrispondono (in numero) a quelli delle righe/colonne.

federico, io non ho errori, il problema è che il programma viene terminato da windows prima dell'esecuzione.
ti ricordi quando marco chiese al prof quella cosa della scrittura involontaria di una cella usata da windows? il prof rispose che avrebbe il programma sarebbe stato terminato da windows... a me succede la stessa cosa :(
 

fedexav

Utente Attivo
15
1
HDD
320 GB
RAM
4GB DDR3
GPU
Nvdia G-Force
Monitor
Acer cristal eye 15.6"
OS
Windows 7 Ultimate
Secondo me c'è qualche errore tipo quello che hai evidenziato prima . Prova a mettere delle printf prima dei vari blocchi per scovarlo perché a me funziona
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
Secondo me c'è qualche errore tipo quello che hai evidenziato prima . Prova a mettere delle printf prima dei vari blocchi per scovarlo perché a me funziona

si infatti... dopo accendo il fisso e provo :sisi:
 
U

Utente cancellato 68151

Ospite
intanto ho notato che ho sbagliato a scrivere perchè ho fatto &d e non %d, cmq quella riga l'ho eliminata... era una prova che avevo fatto e poi non l'ho tolta nella copia che ho scritto qui.

per r-1 e c-1 io l'ho fatto solo nella procedura di riempimento perchè tu inizi a riempire dalla riga/colonna 0 e quindi se hai 3 righe, queste sono 0,1,2 e quindi r-1.
nella procedura di somma, invece, come puoi notare non c'è perchè devo sommare tutti i valori e questi corrispondono (in numero) a quelli delle righe/colonne.

federico, io non ho errori, il problema è che il programma viene terminato da windows prima dell'esecuzione.
ti ricordi quando marco chiese al prof quella cosa della scrittura involontaria di una cella usata da windows? il prof rispose che avrebbe il programma sarebbe stato terminato da windows... a me succede la stessa cosa :(

Si ma il numero di righe è 3, quindi facento 3-1 il ciclo lo devi eseguire con la condizione <=, altrimenti lo esegue solo per 0 e 1 e il 2 niente
 
  • Mi piace
Reazioni: e_ale92

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
Si ma il numero di righe è 3, quindi facento 3-1 il ciclo lo devi eseguire con la condizione <=, altrimenti lo esegue solo per 0 e 1 e il 2 niente

si hai ragione.

e per il mio problema?? il programma perchè viene terminato??
 
U

Utente cancellato 68151

Ospite
Forse non gli piacevano i valori null della matrice...
Comunque prendi il mio programma e vedi se ti funziona, così hai un raffronto:
#include <stdio.h>
#include <stdlib.h>

int main() {


int righe, colonne, somma;
int i = 0, j = 0, k = 1;



/*richiedo numero righe e colonne con controllo*/
do {
printf("Inserire righe e colonne della matrice: ");
scanf("%d%d", &righe, &colonne);
} while(righe == 0 || colonne == 0);


int matrice[righe][colonne];


/*riempio la matrice con valori random*/
for(i = 0; i < righe; i++) {
for(j = 0; j < colonne; j++) {
matrice[j] = rand() / 50000000;
}
}


/*stampa la matrice*/
printf("\nMatrice: \n");
for(i = 0; i < righe; i++) {
for(j = 0; j < colonne; j++) {
printf("[%d]", matrice[j]);
}
printf("\n");
}


printf("\n");
for(i = 0; i < colonne; i++) {
somma = 0;
for(j = 0; j < righe; j++) {
somma = somma + matrice[j];
}
printf("Somma colonna %d: %d\n", k, somma);
k++;
}


return 0;
}

 

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

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili