Aiuto! non a far funzionare una funzione con un array

di il
10 risposte

Aiuto! non a far funzionare una funzione con un array

Buondì a tutti, e buona feste, gia che siamo in periodo natalizio
Sono un programmatore di c neofita e praticamente autodidatta. Ho appena finito di studiare le funzioni. Provando a fare qualche esercizio, mi accorgo di non aver capito bene come funzionano, così ho pensato di chiedere un aiuto su questo forum per svolgere questo esercizio:

Dato un vettore di dimensione n, scambiare il primo elemento con l'ultimo, il secondo col
penultimo e così via.

#include <stdio.h>
#include <stdlib.h>

//Dato un vettore di dimensione n, scambiare il primo elemento con l'ultimo, il secondo col
//penultimo e così via.

int scambio( int* vettore[], int* n, int h);

int main()
{
    int n;
    printf("Dato un vettore di dimensione a tua scelta, scambiare il primo elemento \n");
    printf("con l'ultimo, il secondo col penultimo e così via.\n");
    printf("Quanto lungo lo vuoi?\n");
    scanf("%d",&n);

    printf("Il vettore è lungo\n");
    printf("%d",n);
    printf("\n");
    int vettore[n],i;

    for(i=1;i<=n;i++)
    {
        scanf("%d", &vettore[i]);



    }
    for(i=1;i<=n;i++)
    {
        printf("%d", vettore[i]);
    }

    printf("ora il vettore è al contrario");
    /*for(i=1;i<=n;i++)
    {
       printf("%d",vettore[i]);
    }*/
    //printf("%d",vettore[]);
    scambio(vettore[n]);
    printf(vettore[i])





    return 0;
}

int scambio(int vettore[], int* n)
{
    int temp,h,i;

    for(i=1;i<=n;i++)
    {
        for(h=n;h>=1;h-1)
        {
            vettore[i]= vettore[h];
        }

    }

    return h;

}



Grazie in anticipo per l'aiuto

10 Risposte

  • Re: Aiuto! non a far funzionare una funzione con un array

    Lo so che avrei potuto cavarmela con un ciclo di for, ma il cambiamento non sarebbe rimasto
  • Re: Aiuto! non a far funzionare una funzione con un array

    zanzo18 ha scritto:


    lo so che avrei potuto cavarmela con un ciclo di for, ma il cambiamento non sarebbe rimasto
    Non capisco cosa intendi con questa frase ma intanto c'è un errore "grave" prima di tutto ...

    Gli indici degli elementi non vanno da 1 a n ma da 0 a n-1
  • Re: Aiuto! non a far funzionare una funzione con un array

    Intendo dire che se avessi utilizzato il for in questo modo
    
    for(i=n;i>=0;i--)
    {
      printf("%d", vettore[i]
    }
    
    avrei ottenuto l'array al contrario, ma non avrei avuto il risultato che volevo ottenere che è quello di scabiari i vlaori all'interno del vettore
  • Re: Aiuto! non a far funzionare una funzione con un array

    Ho provato a sistemare
    
    #include <stdio.h>
    #include <stdlib.h>
    
    //Dato un vettore di dimensione n, scambiare il primo elemento con l'ultimo, il secondo col
    //penultimo e così via.
    
    
    
    int main()
    {
        int n,temp;
        printf("Dato un vettore di dimensione a tua scelta, scambiare il primo elemento \n");
        printf("con l'ultimo, il secondo col penultimo e così via.\n");
        printf("Quanto lungo lo vuoi?\n");
        scanf("%d",&n);
    
        printf("Il vettore è lungo\n");
        printf("%d",n);
        printf("\n");
        int vettore[n],i;
    
        for(i=1;i<=n;i++)
        {
            scanf("%d", &vettore[i]);
    
    
    
        }
        for(i=1;i<=n;i++)
        {
            printf("%d", vettore[i]);
        }
    
        printf("ora il vettore è al contrario");
      
        for(i=0;i<=n;i++)
        {
        temp=vettore[i];
        vettore[i]=vettore[n];
        vettore[n]=temp;
        n=n-1;
    
        }
        for(i=0;i<=n;i++)
        {
            printf("%d",vettore[i]);
        }
    
    
    
    
        return 0;
    }
    


    ma mi da sempre qualche problema
  • Re: Aiuto! non a far funzionare una funzione con un array

    Ho provato a sistemare
    
    #include <stdio.h>
    #include <stdlib.h>
    
    //Dato un vettore di dimensione n, scambiare il primo elemento con l'ultimo, il secondo col
    //penultimo e così via.
    
    
    
    int main()
    {
        int n,temp;
        printf("Dato un vettore di dimensione a tua scelta, scambiare il primo elemento \n");
        printf("con l'ultimo, il secondo col penultimo e così via.\n");
        printf("Quanto lungo lo vuoi?\n");
        scanf("%d",&n);
    
        printf("Il vettore è lungo\n");
        printf("%d",n);
        printf("\n");
        int vettore[n],i;
    
        for(i=1;i<=n;i++)
        {
            scanf("%d", &vettore[i]);
    
    
    
        }
        for(i=1;i<=n;i++)
        {
            printf("%d", vettore[i]);
        }
    
        printf("ora il vettore è al contrario");
      
        for(i=0;i<=n;i++)
        {
        temp=vettore[i];
        vettore[i]=vettore[n];
        vettore[n]=temp;
        n=n-1;
    
        }
        for(i=0;i<=n;i++)
        {
            printf("%d",vettore[i]);
        }
    
    
    
    
        return 0;
    }
    


    ma mi da sempre qualche problema
  • Re: Aiuto! non a far funzionare una funzione con un array

    Ora il risultato me lo restituisce giusto, ma penso che abbia un nonsochè di sbagliato nelle ultime righe di codice
    
    #include <stdio.h>
    #include <stdlib.h>
    
    //Dato un vettore di dimensione n, scambiare il primo elemento con l'ultimo, il secondo col
    //penultimo e così via.
    
    
    
    int main()
    {
        int n,temp;
        printf("Dato un vettore di dimensione a tua scelta, scambiare il primo elemento \n");
        printf("con l'ultimo, il secondo col penultimo e così via.\n");
        printf("Quanto lungo lo vuoi?\n");
        scanf("%d",&n);
    
        printf("Il vettore è lungo\n");
        printf("%d",n);
        printf("\n");
        int vettore[n],i;
    
        for(i=1;i<=n;i++)
        {
            scanf("%d", &vettore[i]);
    
    
    
        }
        for(i=1;i<=n;i++)
        {
            printf("%d", vettore[i]);
        }
    
        printf("ora il vettore è al contrario");
        
        for(i=0;i<=n;i++)
        {
        temp=vettore[i];
        vettore[i]=vettore[n];
        vettore[n]=temp;
        n=n-1;
        printf("%d",vettore[i]);
    
        }
    
            printf("%d",vettore[i]);
    
    
    
    
    
        return 0;
    }
    
  • Re: Aiuto! non a far funzionare una funzione con un array

    Ti ho detto che le for non devono iniziare da 1 e terminare a n... Non te lo ripeterò più...
  • Re: Aiuto! non a far funzionare una funzione con un array

    Correggendo come dici te se scelgo che il mio vettore abbia 3 celle di memoria, mi chiede 4 numeri da dare in imput e tiene in considerazione solo gli ultimi 3
  • Re: Aiuto! non a far funzionare una funzione con un array

    Se ti potessi mostrare un immagine lo farei, ma non so come si fa, scusa l'ignoranza
  • Re: Aiuto! non a far funzionare una funzione con un array

    La for inizia a 0 e termina a n-1

    Quindi devi partire da 0 e deve e essere <n
Devi accedere o registrarti per scrivere nel forum
10 risposte