|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 39
|
[C] Aiuto ragazzi per favore
ragazzi dovrei svolgere questo programma in c pero nn so come fare mi potete aiutare?grazie
Data un matrice NxN progettare una function che restituisce tru se la somma di ogni riga è minore dellla somma della riga precedente e la somma di ogni colonna è maggiore o uguale della somma della colonna precedente,false altrimanti!!! Ragazzi mi basta cola la funzione!! é un esame che devo fare |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Sono i compitini per domani?
__________________
http://www.tevigroup.it/ |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 39
|
no è un esame di programmazione ho fatto tutti gli esercizi tranne questo!!!quindi all orale me lo chiede di sicuro
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Tattica strategia abnegazione forza
__________________
http://www.tevigroup.it/ |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 39
|
ehi allora puoi aiutarmi,ti ringrazio!!
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
http://www.hwupgrade.it/forum/showthread.php?t=1631648
In ogni caso puoi porvare a svolgere tu l'esercizio e poi eventualmente possiamo darti una mano. La funzione è abbastanza semplice, bastano due for annidati per controllare in una direzione e due for annidati per controllare nell'altra, inoltre servono due variabili di appoggio per contenere la somma attuale e quella precedente. |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 39
|
MatRigCre(M, n, m)
for i to m do A[i]<-0 for i to n do { for j to m do A[i]=A[i]+M[i][j] } for i to n do { if A[i]>A[i+1] then return false } return true Questo è quello che ho pensato naturalmente solo per righe pero nn mi funziona mi sto scervellando da 2 giorni!!!! |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma è in pseudolinguaggio quello vero ?
Non importa fare la somma di tutte le righe e tenerla nella matrice. Basta tenerti due valori...somma della riga precedente e somma della riga attuale. In sostanza: Codice:
Per le righe da 0 a N-1
{
corrente = fai_la_somma_della_riga_corrente;
se la_riga_corrente > 0 allora
{
se precedente < corrente allora ritorno falso;
}
precedente = corrente;
}
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 39
|
si è uno pseudolinguaggio tanto per capire come è organizzato l algoritmo,senti la tua funzione nn la puoi scrivere anche tu in un pseudolinguaggio perchè cosi nn l ho capita tanta bene,cmq ti ringrazio per la tua disponibilità
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 499
|
Quote:
__________________
|
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 39
|
raga io sto uscendo pazzo aiutatemi un po!!
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ti stanno aiutando: prova a implementare lo pseudocodice postato da cionci e a capire cosa fa.
Quello che devi fare non è complesso, e non richiede tanto tempo: mettiti d'impegno e affronta con calma ogni passaggio. Parti dal post di cionci, studialo, prova a implementarci la tua soluzione e postala, vedrai che aiuti arriveranno. Non vorrai mica la pappa pronta, no? |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Cercherò di scriverlo un po' meglio:
Codice:
int corrente;
int precedente;
int i;
Per i che va da 0 a N-1
{
corrente = fai_la_somma_della_riga(i);
se i > 0 allora
{
se precedente < corrente allora ritorno falso;
}
precedente = corrente;
}
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 39
|
Raga allora ho pensato questo vedete se va bene:
precendente:=0 corrente:=0 for i:=1 to N forJ:=1 to N corrente:=corrente+A(i,j) end for if precedente < corrente then falso else precedente:= corrente end if end for che ve ne pare? |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Manca la condizione su i > 0 (> 1 nel tuo caso). Se la somma della prima riga è minore di zero il tuo ritorna falso.
Non serve l'else perché tanto esci dalla funzione. |
|
|
|
|
|
#16 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 39
|
perchè devo mettere la condizione su i nn l ho capito
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Così il tuo pseudocodice torna sempre FALSO se la somma della prima riga è zero o un numero negativo; questo succede perchè hai inizializzato "precedente" a zero e dopo il ciclo for annidato fai un controllo su "corrente" rispetto a "precedente" che non dovrebbe verificarsi per la somma della prima riga (cioè per la prima iterazione del for esterno)
Codice:
precendente:=0
corrente:=0
for i:=1 to N
for j:=1 to N
corrente:=corrente+A(i,j)
end for
if precedente < corrente then
falso
else
precedente:= corrente
end if
end for
|
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 39
|
e quindi dove lo devo modificare
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
il programma che hai scritto esegue solo il controllo delle righe, e funziona solo se la prima riga (e quindi anche le altre) è negativa.
non hai specificato il tipo della matrice, in ogni caso devi inizializzare "precedente" col massimo valore rappresentabile dal tipo della matrice; in alternativa poi assegnare a "precedente" la somma della prima riga, e poi inizi l'iterazione. |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
O metti un'ulteriore condizione sul controllo in modo che venga effettuato solo se i è maggiore di 0, che mi sembra la soluzione più semplice.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:53.




















