Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Controllare se un numero è già presente in un array e in caso richiederlo
Forum - C/C++ - Controllare se un numero è già presente in un array e in caso richiederlo

Avatar
Arat (Normal User)
Newbie


Messaggi: 8
Iscritto: 24/09/2014

Segnala al moderatore
Postato alle 17:59
Mercoledì, 22/10/2014
Ciao a tutti, mi trovo davanti a questo problema che in teoria è abbastanza banale, ma in pratica sto avendo non poche difficoltà a realizzarlo. In pratica ho un array di 10 elementi e devo chiedere all'utente di riempirlo. Inoltre, se un elemento è già presente devo stampare un errore e chiederlo nuovamente effettuando sempre il controllo.

Per esempio quello che avevo realizzato è il seguente codice:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.  
  6.     int vet[10] = {0}, i, j, ele, conta;
  7.  
  8.     printf("Elementi da utilizzare: ");
  9.     scanf("%d", &ele);
  10.  
  11.     for (i=0; i < ele; i++) {
  12.         printf("Inserisci elemento: ");
  13.         scanf("%d", &vet[i]);
  14.         conta = 0;
  15.         for (j=0; j < ele; j++)
  16.             if (vet[j] == vet[i]) {
  17.                 conta++;
  18.             }
  19.             if (conta > 1) {
  20.                 printf("Errore, inserisci nuovamente il valore: ");
  21.                 scanf("%d", &vet[i]);
  22.                 j = 0;
  23.             }
  24.  
  25.     }
  26.  
  27.     return 0;
  28. }



Il programma giustamente richiede il valore se è già presente, ma se una volta che me lo richiedo reinserisco lo stesso valore, me lo passa senza problemi.
Esempio:
Inserisci elemento: 2 OK
Inserisci elemento: 2 MI STAMPA ERRORE
Errore, inserisci nuovamente il valore: 2 MI DOVREBBE STAMPARE ERRORE MA MI ACCETTA IL DUE.


Come posso risolvere?
Grazie mille

Ultima modifica effettuata da Arat il 22/10/2014 alle 18:00
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 18:39
Mercoledì, 22/10/2014
Prova con:

Codice sorgente - presumibilmente C/C++

  1. for (j=0; j < ele; j++){
  2.             if (vet[j] == vet[i]) {
  3.                 conta++;
  4.             }
  5. }
  6. if (conta > 0) {
  7.             printf("Errore, inserisci nuovamente il valore: ");
  8.             i--;
  9. }



Il mio blog: https://piero.dev
PM Quote
Avatar
Arat (Normal User)
Newbie


Messaggi: 8
Iscritto: 24/09/2014

Segnala al moderatore
Postato alle 21:50
Mercoledì, 22/10/2014
Grazie mille, così funziona. L'unica cosa è che bisogna cambiare conta > 0 a conta > 1 in quanto almeno una volta ci sarà una corrispondenza con se stesso.

Grazie ancora

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 22:33
Mercoledì, 22/10/2014
Testo quotato

Postato originariamente da Arat:
bisogna cambiare conta > 0 a conta > 1 in quanto almeno una volta ci sarà una corrispondenza con se stesso.



:k:


Il mio blog: https://piero.dev
PM Quote