Programma in C vettori

di il
41 risposte

41 Risposte - Pagina 2

  • Re: Programma in C vettori

    Alan_Reloaded ha scritto:


    Il C (o almeno il mio MinGW) non accetta la dichiarazione delle variabili prima dell'uso. In pratica, ho:

    1) dichiarato "i" assieme alle altre variabili;
    2) eliminato il refuso su "void lettura(int*Vet;int a)", ci vuole la virgola invece del ";" ovvero: "void lettura(int*Vet, int a)"

    e a me compila.

    Questo è il sorgente che a me compila:
    
    #include <stdio.h>
    #include <stdlib.h>
    void shift (int*, int n);
    void lettura (int*, int a);
    // PROGRAMMA PRINCIPALE
    int main ()
    {
        int n;
        int i ;
    
        printf ("inserire numero elemeti:\n");
        scanf ("%d", n);
        int V[n];
        lettura (V,n);
        printf ("prima dello shift:\n");
        for(i=0;i<n;i++){
                scanf("%d", &V[i]); }
                for ( i=0;i<n;i++){
                    printf ("%d",V[i]);
                    system ("PAUSE");
                    return 0;
                    }
    // FUNZIONE 1
    void shift (int *Vet, int n){
         printf ("di quanti posti vuoi traslare gli elementi?\n");
         int k, i, j;
         scanf("%d",&k);
         printf("ruotare a destra(D) i sinistra(S)?\n");
         char scelta;
         scanf("%d",&scelta);
         switch(scelta){  //SCELTA IN BASE AL VALORE DELLA VARIABILE CHAR "scelta"
         case ('S'):{  //ROTAZIONE SINISTRA
         for(j=0;j<k;j++){
                 int temp=Vet[0];
                 for( i=0;i<n-1;i++){
                         Vet[i]=Vet[i+1];
                         Vet[n-1]=temp;
                         }
                         }
                 break;
                 }
         case ('D'):{  //ROTAZIONE VERSO DESTRA
         for(j=0;j<k;j++){
                 int temp=Vet[n-1];
                 for(i=n-1;i>0;i--);{
                 Vet[i]=Vet[j];
                 Vet[0]=temp; }
                 }
         break;
         }
         default: {  // nel caso in cui venga inserito un valore diverso da D o S
         printf ("Scelta non valida\n");
         break;
         }
         }
    }
         printf ("Dopo lo shift\n"); }
    // FUNZIONE 2
    
    void lettura(int*Vet, int a){
    int i ;
         for( i=0;i<a;i++){
                 Vet[i]=i;
                 }
    }
    

    in
     break; 
    in
     case ('D') : { 
    in
     default: { 
    mi da errore, alcuni gli ho corretti da sola, questi non riesco, mi potresti aiutare?
  • Re: Programma in C vettori

    ceciceci ha scritto:


    Alan_Reloaded ha scritto:


    Il C (o almeno il mio MinGW) non accetta la dichiarazione delle variabili prima dell'uso. In pratica, ho:

    1) dichiarato "i" assieme alle altre variabili;
    2) eliminato il refuso su "void lettura(int*Vet;int a)", ci vuole la virgola invece del ";" ovvero: "void lettura(int*Vet, int a)"

    e a me compila.

    Questo è il sorgente che a me compila:
    
    #include <stdio.h>
    #include <stdlib.h>
    void shift (int*, int n);
    void lettura (int*, int a);
    // PROGRAMMA PRINCIPALE
    int main ()
    {
        int n;
        int i ;
    
        printf ("inserire numero elemeti:\n");
        scanf ("%d", n);
        int V[n];
        lettura (V,n);
        printf ("prima dello shift:\n");
        for(i=0;i<n;i++){
                scanf("%d", &V[i]); }
                for ( i=0;i<n;i++){
                    printf ("%d",V[i]);
                    system ("PAUSE");
                    return 0;
                    }
    // FUNZIONE 1
    void shift (int *Vet, int n){
         printf ("di quanti posti vuoi traslare gli elementi?\n");
         int k, i, j;
         scanf("%d",&k);
         printf("ruotare a destra(D) i sinistra(S)?\n");
         char scelta;
         scanf("%d",&scelta);
         switch(scelta){  //SCELTA IN BASE AL VALORE DELLA VARIABILE CHAR "scelta"
         case ('S'):{  //ROTAZIONE SINISTRA
         for(j=0;j<k;j++){
                 int temp=Vet[0];
                 for( i=0;i<n-1;i++){
                         Vet[i]=Vet[i+1];
                         Vet[n-1]=temp;
                         }
                         }
                 break;
                 }
         case ('D'):{  //ROTAZIONE VERSO DESTRA
         for(j=0;j<k;j++){
                 int temp=Vet[n-1];
                 for(i=n-1;i>0;i--);{
                 Vet[i]=Vet[j];
                 Vet[0]=temp; }
                 }
         break;
         }
         default: {  // nel caso in cui venga inserito un valore diverso da D o S
         printf ("Scelta non valida\n");
         break;
         }
         }
    }
         printf ("Dopo lo shift\n"); }
    // FUNZIONE 2
    
    void lettura(int*Vet, int a){
    int i ;
         for( i=0;i<a;i++){
                 Vet[i]=i;
                 }
    }
    

    in
     break; 
    in
     case ('D') : { 
    in
     default: { 
    mi da errore, alcuni gli ho corretti da sola, questi non riesco, mi potresti aiutare?

    ho corretto altre cose, ora mi da errore in
     printf (" dopo lo shift\n") } 
    ma non capisco perchè, forse qualche parentesi, mi potresti aiutare?
  • Re: Programma in C vettori

    "li" ho corretti non "gli" ho corretti...

    Nel printf manca qualcosa alla fine ... Secondo te quale carattere manca?
  • Re: Programma in C vettori

    Puoi postare il tuo nuovo codice ?
  • Re: Programma in C vettori

    oregon ha scritto:


    "li" ho corretti non "gli" ho corretti...

    Nel printf manca qualcosa alla fine ... Secondo te quale carattere manca?

    il ';' ce l'ho messo, ma non va lo stesso
  • Re: Programma in C vettori

    vuott ha scritto:


    Puoi postare il tuo nuovo codice ?


    si appena posso lo posto subito
  • Re: Programma in C vettori

    vuott ha scritto:


    Puoi postare il tuo nuovo codice ?
    eccolo:
    
    
    #include <stdlib.h>
    void shift (int*, int n);
    void lettura (int*, int a);
    // PROGRAMMA PRINCIPALE
    int main ()
    {
        int n;
        int i ;
    
        printf ("inserire numero elemeti:\n");
        scanf ("%d", n);
        int V[n];
        lettura (V,n);
        printf ("prima dello shift:\n");
        for(i=0;i<n;i++){
                scanf("%d", &V[i]); }
                for ( i=0;i<n;i++){
                    printf ("%d",V[i]);
                    system ("PAUSE");
                    return 0;
                    }
    // FUNZIONE 1
    void shift (int *Vet, int n); {
         printf ("di quanti posti vuoi traslare gli elementi?\n");
         int k, i, j;
         int Vet[0];
         int temp; 
         scanf("%d",&k);
         printf("ruotare a destra(D) i sinistra(S)?\n");
         char scelta;
         scanf("%d",&scelta);
         switch(scelta){  //SCELTA IN BASE AL VALORE DELLA VARIABILE CHAR "scelta"
         case ('S'):{  //ROTAZIONE SINISTRA
         for(j=0;j<k;j++){
                 int temp=Vet[0];
                 for( i=0;i<n-1;i++){
                         Vet[i]=Vet[i+1];
                         Vet[n-1]=temp;
                         }
                        }
              case ('D'):{  //ROTAZIONE VERSO DESTRA
         for(j=0;j<k;j++){
                 int temp=Vet[n-1];
                 for(i=n-1;i>0;i--);{
                 Vet[i]=Vet[j];
                 Vet[0]=temp; }
                 }
         }
         default: {  // nel caso in cui venga inserito un valore diverso da D o S
         printf ("Scelta non valida\n");
        }
         }
    }
         printf ("Dopo lo shift\n"); }
    // FUNZIONE 2
    
    void lettura(int*Vet, int a){
    int i ;
         for( i=0;i<a;i++){
                 Vet[i]=i;
                 }
    }
    

    Se mi aiuti mi faresti un grandissimo favore, il testo di questo problema dice "scrivi un programma che dato un numero intero k, ruoti un vettore di k posizioni a destra e sinistra in base alla scelta dell'utente, visualizzando il vettore iniziale e finale sullo schermo.
  • Re: Programma in C vettori

    Il compilatore mi riscontra ancora diversi problemi.

    Una grafa di troppo qua:
    for ( i=0;i<n;i++) {
    Un punto e virgola di troppo qua:
    void shift (int *Vet, int n); {
    Una doppia dichiarazione qua:
    void shift (int *Vet, int n)
    ....
    int Vet[0];
    Inoltre ancora irrisolti i due avvertimenti:

    warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
    scanf ("%d", n);
    ^
    warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘char *’ [-Wformat=]
    scanf("%d",&scelta);
    ^
  • Re: Programma in C vettori

    Un'altra questione ancora: come e da dove si accede alla funzione shift ( ) ?
  • Re: Programma in C vettori

    Ragazzi non lo so, sarà il mio compilatore che sbaglia, perchè questi errori a me non li da più.
  • Re: Programma in C vettori

    Ragazzi penso che il mio compilatore non vada, potete provare a compilare questo programma voi per favore?
    
    #include<stdio.h>
    #include <stdlib.h>
    void shift (int*, int n);
    void lettura (int*, int a);
    // PROGRAMMA PRINCIPALE
    int main ()
    {
        int n;
        int i ;
    
        printf ("inserire numero elemeti:\n");
        scanf ("%d", n);
        int V[n];
        lettura (V,n);
        printf ("prima dello shift:\n");
        for(i=0;i<n;i++){
                scanf("%d", &V[i]); }
                for ( i=0;i<n;i++){
                    printf ("%d",V[i]);
                    system ("PAUSE");
                    return 0;
                    }
    // FUNZIONE 1
    void shift (int *Vet, int n); {
         printf ("di quanti posti vuoi traslare gli elementi?\n");
         int k, i, j;
         int Vet[0];
         int temp; 
         scanf("%d",&k);
         printf("ruotare a destra(D) i sinistra(S)?\n");
         char scelta;
         scanf("%d",&scelta);
         switch(scelta){  //SCELTA IN BASE AL VALORE DELLA VARIABILE CHAR "scelta"
         case ('S'):{  //ROTAZIONE SINISTRA
         for(j=0;j<k;j++){
                 int temp=Vet[0];
                 for( i=0;i<n-1;i++){
                         Vet[i]=Vet[i+1];
                         Vet[n-1]=temp;
                         }
                        }
              case ('D'):{  //ROTAZIONE VERSO DESTRA
         for(j=0;j<k;j++){
                 int temp=Vet[n-1];
                 for(i=n-1;i>0;i--);{
                 Vet[i]=Vet[j];
                 Vet[0]=temp; }
                 }
         }
         default: {  // nel caso in cui venga inserito un valore diverso da D o S
         printf ("Scelta non valida\n");
        }
         }
    }
         printf ("Dopo lo shift\n"); }
    // FUNZIONE 2
    
    void lettura(int*Vet, int a){
    int i ;
         for( i=0;i<a;i++){
                 Vet[i]=i;
                 }
    }
    
  • Re: Programma in C vettori

    Il tuo compilatore va benissimo, sei tu che non sai quello che stai facendo. Mi dispiace ma la tua è una richiesta di pappa pronta alla faccia del regolamento...
  • Re: Programma in C vettori

    Ma solo io vedo il sorgente così disordinato nell'indentazione? Va bene che sono un po' estremista in questo senso ma... Comunque confermo che il compilatore va bene Del resto che io sappia, compilatori cattivi non hanno una grande visibilità in rete, se mai ce ne sono.
  • Re: Programma in C vettori

    ceciceci ha scritto:


    Ragazzi non lo so, sarà il mio compilatore che sbaglia, perchè questi errori a me non li da più.
    Credo di poterti rassicurare sul fatto che al 99.9999% dei casi il compilatore non sbaglia; a quanto ne so un compilatore può essere messo alle corde con opzioni di ottimizzazione un po' estreme, per un uso normale è molto improbabile. Del resto anche il mio mi segnala errore, ci sono anzitutto graffe non appaiate, poi il resto puoi analizzarlo in uno step successivo.
  • Re: Programma in C vettori

    Ragazzi ho corretto il programma, si compila, ma il mio computer, essendo un po' vecchiotto, mi chiude tutto.
    potete provare voi e dirmi cosa esce? per favore?
    
    #include <stdio.h>
    #include <stdlib.h>
    void shift (int*, int n);
    void lettura (int*, int a);
    // PROGRAMMA PRINCIPALE
    int main ()
    {
        int n;
        int i ;
    
        printf ("inserire numero elemeti:\n");
        scanf ("%d", n);
        int V[n];
        lettura (V,n);
        printf ("prima dello shift:\n");
        for(i=0;i<n;i++){
                scanf("%d", &V[i]); }
                for ( i=0;i<n;i++){
                    printf ("%d",V[i]);
                    system ("PAUSE");
                    return 0;
                    }
                    }
    // FUNZIONE 1
    void shift (int *Vet, int n){
         printf ("di quanti posti vuoi traslare gli elementi?\n");
         int k, i, j;
         scanf("%d",&k);
         printf("ruotare a destra(D) i sinistra(S)?\n");
         char scelta;
         scanf("%d",&scelta);
         switch(scelta){  //SCELTA IN BASE AL VALORE DELLA VARIABILE CHAR "scelta"
         case ('S'):{  //ROTAZIONE SINISTRA
         for(j=0;j<k;j++){
                 int temp=Vet[0];
                 for( i=0;i<n-1;i++){
                         Vet[i]=Vet[i+1];
                         Vet[n-1]=temp;
                         }
                         }
                 break;
                 }
         case ('D'):{  //ROTAZIONE VERSO DESTRA
         for(j=0;j<k;j++){
                 int temp=Vet[n-1];
                 for(i=n-1;i>0;i--);{
                 Vet[i]=Vet[j];
                 Vet[0]=temp; }
                 }
         break;
         }
         default: {  // nel caso in cui venga inserito un valore diverso da D o S
         printf ("Scelta non valida\n");
         break;
         }
         }
         printf ("Dopo lo shift\n"); }
    // FUNZIONE 2
    
    void lettura(int*Vet, int a){
    int i ;
         for( i=0;i<a;i++){
                 Vet[i]=i;
                 }
    }
    
    
Devi accedere o registrarti per scrivere nel forum
41 risposte