Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    25

    [C] Posizione della ripetizione in un array

    Buon giorno a tutti!

    Oggi pongo un altro quesito....
    Ho creato un programma che stampa un array con elementi definiti dall'utente e cerca un elemento scelto dall'utente se è ripetuto nell'array.
    Dovrei però far stampare anche la posizione della prima ripetizione nell'array qualora ci fosse... Come posso fare?

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define max 30
    
    
    void leggi_v (int v1[], int dim) {
        int i;
        
        printf ("Inserire gli elementi del vettore\n\n");
        for (i=0; i<dim; i++) {
            printf ("Elemento %d: ", i+1);
            scanf ("%d", &v1[i]);
        }
        
    }
    
    
    
    
    void stampa_v (int v1[], int dim) {
        int i;
    
    
        printf ("Il mio vettore sara' composto dai seguenti numeri \n");
        for (i=0; i<dim; i++) {
            printf ("Elemento n.%d: %d\n", i+1, v1[i]);
        }
    }
    
    
    
    
    void cerca_rip (int v1[], int dim) {
        int trovato = false;
        int i = 0;
        int a;
        
        printf ("Inserire l'elemento che si desidera controllare: ");
        scanf ("%d", &a);
            
        while ((i<dim) && !trovato) {
            if (v1[i] == a)
                trovato = true;
            else
                i++;
        }
        
        if (trovato) {
            printf ("Elemento ripetuto nel vettore: %d\n\n", a);
        printf ("L'elemento si trova in posizione: %d", v1[a]); // ???????    
    }
        else {
            printf ("Non ci sono ripetizioni.");
        }
    }
    
    
    typedef int vet1[max];
    
    
    int main() {
        vet1 v1;
        int dim;
        
        printf ("Inserisci il numero di elementi dei vettori: ");
        scanf ("%d", &dim);
    
    
        leggi_v (v1, dim);
        stampa_v (v1, dim);
        cerca_rip (v1, dim);
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non so se ho capito bene ma dovresti semplicemente memorizzare la posizione e visualizzarla.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    25
    Ad esempio ho un vettore = {1,3,5,3,6,7}
    Io inserisco il numero 3 da controllare
    Il programma mi dice il numero 3 è ripetuto
    La posizione della prima ripetizione è 3 (Poichè pos0=1 pos1=3 pos3=5 pos3=3)
    Non so come far stampare la posizione della prima ripetizione

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Come pensavo ... devi utilizzare una variabile per conservare la prima posizione ... mi sembra semplicissimo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    25
    Potresti farmi un esempio per favore?
    Non saprei davvero come fare.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non c'è esempio che tenga ... sempre questo esempio ... non si può fare un esempio e non si chiede il codice pronto altrimenti non si impara.

    1) dichiara una variabile e assegna il valore -1
    2) cerca il valore nel vettore
    3) se trovi il valore e la variabile vale -1 vuol dire che è la prima volta che trovi il valore e quindi assegna alla variabile l'indice
    4) se la variabile è diversa da -1 non fai nulla

    Alla fine nella variabile avrai il primo indice
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    25
    Ma se ho capito bene così mi dice dove compare il valore per la prima volta giusto?
    A me servirebbe per la seconda volta perchè devo sapere dov'è la ripetizione.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Pensavo volessi la posizione in cui compare la prima volta.

    Allora modifica di poco il ragionamento ...

    Parti da -2
    Se lo incontri e vale -1, assegni il valore dell'indice
    Se lo incontri e vale -2, assegni -1
    Ultima modifica di oregon; 11-09-2016 a 13:42
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    25
    Ok ho capito il ragionamento, non so bene come scriverlo nel compilatore ma ci provo! Spero i riuscire a concluderlo il prima possibile

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dichiari una variabile e poi usi due if ... non è difficile ... (occhio all'ordine delle if)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.