PDA

View Full Version : [Inspiegabile]Perchè non funziona?


The-Revenge
17-11-2009, 14:07
Ragazzi, sto facendo un programma in C, e come è mia conseutudine faccio runnare un pezzo alla volta il programma.
IN pratica devo stampare le 8 "parti" di una matrice NXN, con N dispari, le cui 8 parti sono "tagliate" dalle 2 diagonali e dai 2 semiassi delle matrici.
Cosi ho fatto , per prova, solo il primo quadrante, e non funziona. L'ho provato a pezzi fino al raggiungmento dell'algoritmo vero e propio che mi genera quella "fetta".Insomma mi genera correttamente e stampa correttamente il vettore.
Ovviamente ho fatto il controllo su carta dell'algoritmo e funziona bene.
Guardatelo voi, per favore

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int max;
int n,i,j,somma=0;
printf("\nInserisci MAX: ");
scanf("%d",&max);
srand(time(NULL));
printf("\nInserisci dimensione: ");
scanf("%d",&n);
while(n%2==0){
printf("\nReinserisci dimensione dispari: ");
scanf("%d",&n);
}

int v[n][n];

for(i=0;i<n;i++)
for(j=0;j<n;j++)v[i][j]=rand()%max;
for(i=0;i<n;i++){
printf("\n");
for(j=0;j<n;j++)printf("%d ",v[i][j]);
}
for(i=0;i<n;i++)
for(j=0;j<n;j++){
while((j>((n-1)/2))&&(j<n-i-1)) somma=somma+v[i][j];
}
printf("\n%d",somma);
system("PAUSE");
return(0);
}

pierosa
17-11-2009, 14:58
while((j>((n-1)/2))&&(j<n-i-1)) somma=somma+v[i][j];


questo secondo me è un loop infinito, prova a sostituire il while con un if

The-Revenge
17-11-2009, 15:20
si cosi funziona. Grazie mille. Ma adesso mi chiedo : se sul libro c'è scritto che ogni IF può essere sostituito da un while (e viceversa) come deve essere strutturato il while per entrare in questo caso?
Comunque ho messo il while perchè , nel caso di quando c'è più di 1 elemento, doveva fare una somma iterativa, e non mi sono reso conto che la somma iterativa la fa comunque per l'azione dei for...quindi forse quei 2 for potevano essere sostituiti da un while che aveva come condizione, oltre quelle 2, anche una i<n (la j non c'è bisogno visto che è quadrata la matrice) e dentro l'iterazione un i++.

cionci
17-11-2009, 16:36
Thread chiuso
|
V
http://www.hwupgrade.it/forum/showthread.php?t=1649196