Ripetere stessa operazione in programma dev c?

di Anonimizzato14767 il
11 risposte
Salve a tutti , ho un programma del genere : " se e vero quello che hai detto allora va bene, se no ti dico che non va bene e ti permetti di ripetere l operazione", :
#include<stdio.h>
#include<stdlib.h>

main()
{
int m[3][3];
int i,j,s,so,som,somm,ciao,cacca;
s=0;
so=0;
som=0;
somm=0;
printf("inserisci elementi\n consiglio : 4,3,8,9,5,1,2,7,6\n o: 6,7,2,1,5,9,8,3,4\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
scanf("%d",&m[j]);
}
for(i=0;i<3;i++){
j=3-i+1-2;
s=s+m[j];
}

for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i==j){

so=so+m[j];
}
}
}
printf("somma diagonale secondaria: %d\n",s);
printf("somma diagonale primaria: %d\n",so);
for(i=0;i<3;i++){
som=som+m;
}
printf("la somma della prima riga e : %d\n",som);
for(j=0;j<3;j++){
somm=somm+m[j][j];
}
printf("somma colonna:%d\n",somm);
if(s==so){

if(so==som){

if(som==somm){
printf("il quadrato e meagico!\n");
printf("il 'magic number' e %d\n",s);
}
}
}
else{
printf("non e un quadrato magico , ripeti \n ");
}

system("pause");
return 0;
}
// esempi di quadrati number :
//4,3,8,9,5,1,2,7,6
//6,7,2,1,5,9,8,3,4


questo e un mio programma del quadrato magico , per verificare se lo e veramente, quello che voglio sapere e come ripetere tutta l operazione senza riscrivere tutto il programma nel momento in cui non e effettivamente un quadrato magico,magari grazie ad una funzione precisa , perche se no uscirebbe davvero troppo lungo :/. grazie a tutti e buon natale!

11 Risposte

  • Non ho letto tutto il codice, anche perché non è ben formattato, ecc. Comunque il modo standard per ripetere l'esecuzione di un programma è un semplice do-while:
    
    do {
        // il tuo programma
    } while( /* non e' verificata la condizione di uscita */ );
    
  • Vabbe ma quindi mi tocca sempre riscrivere la parte da ripetere, eh cosi ci sono riuscito anche io

    grazie lo stesso !
  • Ma no! Cosa devi riscrivere? Metti tutto il tuo programma nella parte del do, poi valuti la condizione di uscita nel while. Devi aggiungere tipo una riga di codice.
  • JusT Roll ha scritto:


    vabbe ma quindi mi tocca sempre riscrivere la parte da ripetere, eh cosi ci sono riuscito anche io

    grazie lo stesso !
    Non mi pare tu abbia capito ... pensaci un po' di più ...
  • Si ma non capisco cosa va dentro il while, io voglio far in modo che ll ' utente se non ha trovato il quadrato magico gli venga permesso di poter ripetere l operazione , grazie dell aiuto e della pazienza
  • Oregon ci sono arrivato, ma non so cosa devo mettere dentro il while
  • Se ci sei "arrivato" perché non lo dimostri?

    Inserisci nel ciclo "la parte di codice che vuoi ripetere".
  • Ah , quindi nel ciclo while va messa tutta la parte da ripetere...ora lo faccio e penso al perche di questo, grazie
  • No, nel while devi solo valutare la condizione di uscita dal ciclo. Puoi semplicemente fare
    
    do {
        // verifica se e' un quadrato magico
    } while (/* non e' un quadrato magico */ );
    
    Per la valutazione della condizione ti tieni un semplice flag e il gioco è fatto.
  • Si ho capito cosa vuol dire e ti ringrazio per avermelo riscritto in modo piu semplice, ma la mia condizione di uscita ( non e un quadrato magico) e quella che se non lo e appunto deve ripetere tutto quando quello che c e nel primo " do"
  • E allora provo ad essere ancora più esplicito:
    
    bool isQuadratoMagico = false;
    
    do {
        // controllo se e' un quadrato magico
        // e memorizzo il risultato nella variabile booleana
    } while(!isQuadratoMagico);
    
    Più chiaro di così...

    P.S. Se non hai a disposizione il tipo bool, va benissimo anche un int.
Devi accedere o registrarti per scrivere nel forum
11 risposte