quesito per qualcuno che sa programmare in c++

mezzostordito":2e6v3uk5 ha detto:
come si usa la funzione goto???
Io ho bisogno che lui vada dopo un if alla riga 45 ma no riesco a trovare la sintassi giusta.
Grazie
NOOOOO DIMMI CHE NON VUOI USARE IL GOTO IN UN PROGRAMMA C++!!!! TI PREGOOOOOO

SE LO FAI DIVENTI IL MIO MITO A VITA!

Cmq l'uso è banale

for (i=0;i<n;i++) ...
if (...) goto trovato

trovato:
cout << "Trovato\n";
 
InterNik":yn65td06 ha detto:
mezzostordito":yn65td06 ha detto:
come si usa la funzione goto???
Io ho bisogno che lui vada dopo un if alla riga 45 ma no riesco a trovare la sintassi giusta.
Grazie
NOOOOO DIMMI CHE NON VUOI USARE IL GOTO IN UN PROGRAMMA C++!!!! TI PREGOOOOOO

SE LO FAI DIVENTI IL MIO MITO A VITA!

perchè??? è comodo almeno salta a destra e sinistra....cmq sai come devo scrivere?
 
mezzostordito":z594b7u5 ha detto:
InterNik":z594b7u5 ha detto:
mezzostordito":z594b7u5 ha detto:
come si usa la funzione goto???
Io ho bisogno che lui vada dopo un if alla riga 45 ma no riesco a trovare la sintassi giusta.
Grazie
NOOOOO DIMMI CHE NON VUOI USARE IL GOTO IN UN PROGRAMMA C++!!!! TI PREGOOOOOO

SE LO FAI DIVENTI IL MIO MITO A VITA!

perchè??? è comodo almeno salta a destra e sinistra....cmq sai come devo scrivere?
Ho m odificato sopra.
Il "perchè" è perchè così "distruggi" tutta la logica alla base del C++.

Se mi mandi il pezzo di codice lo uso come virus-docente: conosco un paio di miei ex-professori cui piglierebbe l'orticaria a vedere un goto in C++ :asd) :asd) :asd)
 
#include<stdio.h>
#include<stdlib.h>

main()
{
float x1,x2,x3,y1,y2,y3,z1,z2,z3,k,x,y,a,b,c,z,A,B,C,D;

//punto 1
printf("Inserire la x del primo punto:");
scanf("%f",&x1);
printf("Inserire la y del primo punto:");
scanf("%f",&y1);
printf("Inserire la z del primo punto:");
scanf("%f",&z1);
//punto 2
printf("Inserire la x del secondo punto:");
scanf("%f",&x2);
printf("Inserire la y del secondo punto:");
scanf("%f",&y2);
printf("Inserire la z del secondo punto:");
scanf("%f",&z2);
//punto 3
printf("Inserire la x del terzo punto:");
scanf("%f",&x3);
printf("Inserire la y del terzo punto:");
scanf("%f",&y3);
printf("Inserire la z del terzo punto:");
scanf("%f",&z3);

a=x1/x2/x3;
b=y1/y2/y3;
c=z1/z2/z3;

system("cls");

if(a==0&&b==0&&c==0)

if((a==b)&&(a==c)&&(b==c))
{
printf("Sei un somaro...non vedi che sono punti sulla stessa retta!!!****Edit da STAFF: alla prossima account sospeso!\n\n");
system("pause");
}

A = ((y2-y1)*(z3-z1)-(y3-z1)*(z2-z1));
B = -((x2-x1)*(z3-z1)-(x3-x1)*(z2-z1));
C = ((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1));
D = -x1*A+y1*B-z1*C;

printf("Il piano richiesto è:\n");
if(A=0)
printf("%dy %dz %d = 0\n\n",A,B,C,D);
if(B=0)
printf("%dx %dz %d = 0\n\n",A,B,C,D);
if(C=0)
printf("%dx %dy %d = 0\n\n",A,B,C,D);
if(D=0)
printf("%dx %dy %dz = 0\n\n",A,B,C,D);
else
printf("%dx %dy %dz %d = 0\n\n",A,B,C,D);

system("pause");
}




questo è il programma e io voglio che se if(a==0&&b==0&&c==0) è vero lui mi vada alla riga 45
 
mezzostordito":3s6g9nnm ha detto:
ma non c'è la possibilità di dirgli direttamente la riga a cui andare??
tipo vai alla riga 45
No, devi metterci comunque l'identificatore (il concetto di numero di riga non esiste in C++)
 
Guardando il tuo programma ti faccio osservare che è in C,
e non in C++.

Detto questo occhio che, non avendo specificato il void nel main,
devi ritornare un int per default.
inoltre A,B,C,D sono definiti come float, indi per cui
printf("%dy %dz %d = 0\n\n",A,B,C,D);
queste D sono per gli interi, occhio.

Attento inoltre alle precedenze di valutazioni tipo
if(a==0&&b==0&&c==0)

senza parentesi rischi concretamente di non avere
ben chiaro quale sia l'ordine.

quando esegui qualcosa tipo questo
a=x1/x2/x3;

devi o controllare che i denominatori non siano zero
o usare una eccezione C++

Per quanto riguarda il tuo goto, se non ho capito male,
basta che fai

if (almeno un parametro non zero)
{
}

In questo modo esegui il corpo della procedura, else skippi diretamente alla fine.
 
Se vuoi fare lo "sborrone" (ma non te lo consiglio) puoi pure mettere
qualcosa del tipo a*b*c od anche a+b+c (quest'ultima più stabile numericamente).

Quello che voglio farti notare è che il test (su un float) del tipo

if a=0 è estremamente "rischioso" per i problemi dovuti alla rappresentazione in virgola mobile che potrebbero facilmente generare dei problemi.

Modo "matematico":
verifichi quale sia la condizione per cui a è zero (in questo caso sse x1 è zero), quindi in verità il test è "se x1 è zero"

Modo "informatico"
stabilisci un EPS sotto il quale
l'abs lo assumi come zero.

In altre parole se il valore assoluto di a e' < di 0.0001 -> allora a lo considero uguale a zero.
 
Ai miei programmatori se usano il goto gli taglio le mani...
perché?:

- E' numiversalmente sconsigliato per i linguaggi strutturati/funzionali-procedurali, per i linguaggi ad Oggetti è ritenuto scandaloso
- Rende il codice di difficile lettura
- Aumenta di molto la possibilita' di creare bugs nel codice
- etc...

In realtà il goto si puo' usare per aumnetare le perfromace in casi molto rari... sviluppo di driver, controllo numerico di macchine industriali... ma sono casi rarissimi...

Chi sa' sviluppare non usa il GOTO, switch/case (crea strutture di mapping), ma sa anche che in certi casi si possono usare per migliorare la velocità di certi componeti "core"... ma solitamente fa anche un'analisi dettagliata delle performace e della soluzione scelta.

Ti consoglio di leggere qualcosa sullo sviluppo di safe-code e programmazioe ad Oggetti.

A proposito il codice da te postato è C non C++...

Perche? usi System(pause)?...
 
antos":2qdwderc ha detto:
Ai miei programmatori se usano il goto gli taglio le mani...
Ueee... su... adesso... si vede che è un neofita!

Chi sa' sviluppare non usa il GOTO
Bhè io so programmare benino, e spesso più che il goto uso jmp :lol: ma la semantica è la medesima :crepap)

Perchè, in verità, tutto il codice diventa (prima o poi) je, jne, jl, jnl, jg,jng,jb,jnb,ja,jna, js,jns,jo,jno,jp,jnp e jmp (mi sembra di averli messi tutti, ma a memoria non sono sicuro!)

Quello che consiglio, ad un neofita del ramo, è di rimediare qualche codice già fatto per avere una idea di quei "trucchetti" che usualmente si imparano dopo una decina d'anni di programmazione.

Perche? usi System(pause)?...
Immagino per interrompere momentaneamente l'output a console su MSDOS

mezzostordito tieni duro! :spin)
 
InterNik":35d3w4ci ha detto:
antos":35d3w4ci ha detto:
Ai miei programmatori se usano il goto gli taglio le mani...
Ueee... su... adesso... si vede che è un neofita!

Chi sa' sviluppare non usa il GOTO
Bhè io so programmare benino, e spesso più che il goto uso jmp :lol: ma la semantica è la medesima :crepap)

Perchè, in verità, tutto il codice diventa (prima o poi) je, jne, jl, jnl, jg,jng,jb,jnb,ja,jna, js,jns,jo,jno,jp,jnp e jmp (mi sembra di averli messi tutti, ma a memoria non sono sicuro!)

Quello che consiglio, ad un neofita del ramo, è di rimediare qualche codice già fatto per avere una idea di quei "trucchetti" che usualmente si imparano dopo una decina d'anni di programmazione.

Perche? usi System(pause)?...
Immagino per interrompere momentaneamente l'output a console su MSDOS

mezzostordito tieni duro! :spin)

Infatti parlavo di linguaggi almeno strutturati... l'assembler se non fai un JMP hai qualche difficoltà :asd) :OK)


Dicevo solo che usare system è poco pulito e poco trasportabile da sistema a sistema ... meglio getchar()...

...per il resto sono sicuro che Andrea a poco ci farà anche le scarpe o il :culo)

Andrea, se vuoi fare un corso ...a Napoli stiamo per dare un corso di Archietture Sofware per la certificazione SUN... sai che bello ... trovaresi un docente con la spilletta alfa alla giacca.... :asd)
 
antos":12jl5cox ha detto:
Dicevo solo che usare system è poco pulito e poco trasportabile da sistema a sistema ... meglio getchar()...
Vabbè su... prima di arrivare alla portabilità ce ne vuole!
...per il resto sono sicuro che Andrea a poco ci farà anche le scarpe o il :culo)
E' un calzolaio o un ricchione? :backb)

(dai su che scherzo!) :lol21)

Che devi fare, un elaborato per qualche esame oppure vuoi "imparare" effettivamente a programmare in C++?
 
antos":3otc0u2a ha detto:
In questo caso faccio il docente... he he he.
No te, mezzostordito!

PS Sai cosa si dice da noi?

Se sai fare, fai
Se non sai fare, insegni
Se non sai insegnare, amministri
Se non sai amministrare, fai il politico

:asd) :lol21)
 
InterNik":39oz1b8g ha detto:
antos":39oz1b8g ha detto:
In questo caso faccio il docente... he he he.
No te, mezzostordito!

PS Sai cosa si dice da noi?

Se sai fare, fai
Se non sai fare, insegni
Se non sai insegnare, amministri
Se non sai amministrare, fai il politico

:asd) :lol21)

Infatti... he he he ... anche da noi ... ma visto che per ora ci sono solo progetti piccoli in giro... l'importante è che porti qualche soldino in più...

... però mi sa che mi tocca far eil politico... se non sai fare neanche il politico... cosa ti rimane... il riccottaro :muaha)
 
Se ti sentisse il mio prof. di Laboratorio di linguaggi ti direbbe:

"Se trovo un Go to nel progetto, non lo eseguno neanche.... Lo cancello... " :p :asd) :lol:
 
lelesch81":3u679smp ha detto:
Se ti sentisse il mio prof. di Laboratorio di linguaggi ti direbbe:
"Se trovo un Go to nel progetto, non lo eseguno neanche.... Lo cancello... " :p :asd) :lol:
Rispondigli: mi scriva in assembler un banale programmello SENZA l'equivalente del goto (jmp) e poi guarda la sua faccia :asd)

Al livello "neofita" ok, tutto bene, mai il goto... oddio il goto che schifo!

Ad un livello di "consapevolezza" maggiore (matrix?)... ti rendi conto... che il goto è la base su cui si fondano i programmi :asd)

(bisogna in verità dire che sulla piattaforma x86 esistono innumerevoli salti condizionati, ma il discorso resta valido. Altre architetture non sono così "munifiche", ma è o non è un CISC [a livello ideale?])

Per gli "sbarbatelli"... cercate di non arrivare al lato "oscuro" (il mio) :asd)
 
Top