errore duplicate label

buongiorno. Sto facendo un programma per un magazzino automatico e sto avendo problemi con una parte del programma:

riprova:
          nprodotti = keypad.getKey();
          if ((nprodotti != 'a') && (nprodotti != 'b') && (nprodotti != 'c') && (nprodotti != 'd') && (nprodotti != '*') && (nprodotti != '#'))
          {
            qtaprod[in] = nprodotti - '0'; 
            in++; 
            if (nprodotti == '*')
            {
              goto riprova;
            }
            else if (nprodotti == 'b')
            {
              lcd.clear();
              lcd.print("quantita anullata");
              in = 0;
              goto riprova;
            }
            switch (in) 
            {
              case 1: numeroprod = qtaprod[0];
                break;

              case 2: numeroprod = qtaprod[1] + 10 * qtaprod[0]; 
                break;
            }
          }
          switch (numero)
          {
            case 1:
              aggiornamento1();
              if (errorenum == 1);
              {
                lcd.clear();
                lcd.print("errore");
                in = 0;
                goto riprova;
              }
              break;
            case 2:
              aggiornamento2();
              if (errorenum == 1);
              {
                lcd.clear();
                lcd.print("errore");
                in = 0;
                goto riprova;
              }
              break;
            case 3:
              aggiornamento3();
              if (errorenum == 1);
              {
                lcd.clear();
                lcd.print("errore");
                in = 0;
                goto riprova;
              }
              break;
            case 4:
              aggiornamento4();
              if (errorenum == 1);
              {
                lcd.clear();
                lcd.print("errore");
                in = 0;
                goto riprova;
              }
              break;
            case 5:
              aggiornamento5();
              if (errorenum == 1);
              {
                lcd.clear();
                lcd.print("errore");
                in = 0;
                goto riprova;
              }
              break;
            case 6:
              aggiornamento6();
              if (errorenum == 1);
              {
                lcd.clear();
                lcd.print("errore");
                in = 0;
                goto riprova;
              }
              break;
            case 7:
              aggiornamento7();
              if (errorenum == 1);
              {
                lcd.clear();
                lcd.print("errore");
                in = 0;
                goto riprova;
              }
              break;
            case 8:
              aggiornamento8();
              if (errorenum == 1);
              {
                lcd.clear();
                lcd.print("errore");
                in = 0;
                goto riprova;
              }
              break;
            case 9:
              aggiornamento9();
              if (errorenum == 1);
              {
                lcd.clear();
                lcd.print("errore");
                in = 0;
                goto riprova;
              }
              break;
          }

però mi da questo errore:

MAGAZZINO_18_03_2018:560: error: duplicate label 'riprova'

 riprova:

 ^

exit status 1
duplicate label 'riprova'

riuscite ad aiutarmi, per favore? mi fa male la testa ahahahaha (ovviamente questo non è tutto il programma, per adesso il programma è lungo 1600 righe e questo è l’unico problema che mi sta assillando)

Benvenuto. Essendo il tuo primo post, nel rispetto del regolamento, ti chiediamo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO... Grazie. Qui una serie di link utili, non inerenti al tuo problema: - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

2 grossi problemi: 1) se non ci dai l'intero sketch non possiamo capire l'errore. Quale é la riga 560? dal errore sembra che hai usato 2 volte lo stesso label. 2) in C non c'é bisogno di usare goto, anzi da un sacco di problemi. Ciao Uwe

non è affatto completo, molto probabilmente pieno di errori. Grazie mille

MAGAZZINO_18_03_2018.ino (42.9 KB)

uwefed: 2 grossi problemi: 1) se non ci dai l'intero sketch non possiamo capire l'errore. Quale é la riga 560? dal errore sembra che hai usato 2 volte lo stesso label. 2) in C non c'é bisogno di usare goto, anzi da un sacco di problemi. Ciao Uwe

ho risolto il problema: avevo usato questo label da altre parti. grazie mille!

>levdp18: ... dai retta, mettiti li e riscrivi il tuo codice SENZA usare il goto ... così è un abominio !!!

Ci sono un'infinità di strutture per fare quello che ti occorre senza usare il 'goto', [u]impara ad usarle[/u] ... verdai che in futuro ti eviterai un sacco di problemi e ... farai anche più bella figura ;)

Guglielmo

gpb01:
>levdp18: … dai retta, mettiti li e riscrivi il tuo codice SENZA usare il goto … così è un abominio !!!

Ci sono un’infinità di strutture per fare quello che ti occorre senza usare il ‘goto’, impara ad usarle … verdai che in futuro ti eviterai un sacco di problemi e … farai anche più bella figura :wink:

Guglielmo

hai qualche suggerimento? così sicuramente imparerò nuove tecniche. Grazie mille :slight_smile:

levdp18: hai qualche suggerimento? così sicuramente imparerò nuove tecniche. Grazie mille :)

Il reference, ed in particolare quello che trovi in "Control Structure" (... evitando come la peste la parte relativa al 'goto' che, pur esistendo, come detto, [u]è assolutamente da non usare[/u] ... la leggibilità e manutenibilità del programma ne trarrà enormi vantaggi) e, per approfondire ... un buon testo di 'C' (es. il kernighan & ritchie).

Guglielmo