Aiuto! non a far funzionare una funzione con un array

di Anonimizzato18637 il
10 risposte
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

  • Lo so che avrei potuto cavarmela con un ciclo di for, ma il cambiamento non sarebbe rimasto
  • 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
  • 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
  • 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
  • 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
  • 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;
    }
    
  • Ti ho detto che le for non devono iniziare da 1 e terminare a n... Non te lo ripeterò più...
  • 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
  • Se ti potessi mostrare un immagine lo farei, ma non so come si fa, scusa l'ignoranza
  • 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