Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C]funzione di riempimento array e funzione di ricerca usando i puntatori

    l esercizio l ho risolto...voglio solo sapere se i puntatori sono stati usati in modo corretto....
    il ad ogni posizione dell array deve corrisponder il risultato di (i*2)+3 con i iesima posizione...posto il codice e mi dite se va bene..
    codice:
    //RIEMPIMENTO
    
    int *riempiArray(int array[100])
    {
    int *v;
    v=&array;
    int i=0;
    for(v=array;v<array+100;v++)
    {
    *v=((i*2)+3);  
    i++;                
    }
    return &v;
    }
    codice:
    //RICERCA, HO USATO UN PUNTATORE PER IL RISULTATO ANCHE QUI ANCHE SE NON ERA //NECESSARIO...
    int *cerca(int pos,int *v)
    {
    int i,*num,array[100];
    
    *v=riempiArray(array);
    i=0;
    for(v=array;v!=pos && v<array+100;v++){
    if(pos==i)
    {
    *num=*v;  
    return *num;
    }
    i++;
    }
    return 0;
    }

  2. #2
    Presumo che tu non abbia abilitato i warning del tuo compilatore.
    Altrimenti avresti visto da solo gli errori del codice:
    codice:
    v=&array;
    un vettore dichiarato "arra[50]" è gia di per se un puntatore e quindi nella tua versione assegni a v un puntatore a puntatore.
    La versione corretta è
    codice:
    v=array;
    proprio come risulta scritto bene all'interno del ciclo for.
    codice:
    *v=riempiArray(array);
    questo invece assegna a v l'indirizzo ritornato dalla funzione. avresti dovuto srivere:
    codice:
    v=riempiArray(array);
    Ci sono anche un pò di ridondanze che sarebbero da eliminare.
    Ridacci uno sguardo e riproponi.

  3. #3
    Quote Originariamente inviata da rossonero922 Visualizza il messaggio
    l esercizio l ho risolto...voglio solo sapere se i puntatori sono stati usati in modo corretto....
    il ad ogni posizione dell array deve corrisponder il risultato di (i*2)+3 con i iesima posizione...posto il codice e mi dite se va bene..
    codice:
    //RIEMPIMENTO
    
    int *riempiArray(int array[100])
    {
    int *v;
    v=&array;
    int i=0;
    for(v=array;v<array+100;v++)
    {
    *v=((i*2)+3);  
    i++;                
    }
    return &v;
    }
    codice:
    //RICERCA, HO USATO UN PUNTATORE PER IL RISULTATO ANCHE QUI ANCHE SE NON ERA //NECESSARIO...
    int *cerca(int pos,int *v)
    {
    int i,*num,array[100];
    
    *v=riempiArray(array);
    i=0;
    for(v=array;v!=pos && v<array+100;v++){
    if(pos==i)
    {
    *num=*v;  
    return *num;
    }
    i++;
    }
    return 0;
    }

    grazie per avermi risposto...ho aggiustato un paio di cose...ora dovrebbe andar meglio...
    codice:
    int *riempiArray(int array[100])
    {
    int *v;
    v=array;
    int i=0;
    for(v=array;v<array+100;v++)
    {
    *v=((i*2)+3);  
    i++;                
    }
    return v;
    }
    
    
    int *cerca(int pos,int *v)
    {
    int i,*num,array[100];
    
    v=riempiArray(array);
    i=0;
    for(v=array;v<array+100;v++){
    if(pos==i)
    {
    *num=*v;  
    return (int *)*num;
    }
    i++;
    }
    return 0;
    }
    una domanda...considera la funzione riempi array.......mi sono fatto restituire v.......questo equivale a &v???o ha un altro significato?

  4. #4
    un vettore es:v[] è alla stregua di un puntatore il cui suo indirizzo è v e non &v.
    ricontrolla il codice e togli le ridondanze.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.