Programma in C vettori

di il
41 risposte

41 Risposte - Pagina 3

  • Re: Programma in C vettori

    Potrebbe non essere l'hardware vecchiotto ma il software, controlla le righe
    
    ...
        printf ("inserire numero elemeti:\n");
        scanf ("%d", n);
    ...
    
    la scanf vuole un puntatore
  • Re: Programma in C vettori

    sebaldar ha scritto:


    Potrebbe non essere l'hardware vecchiotto ma il software, controlla le righe
    
    ...
        printf ("inserire numero elemeti:\n");
        scanf ("%d", n);
    ...
    
    la scanf vuole un puntatore
    messo ma il programma non va lo stesso
  • Re: Programma in C vettori

    Non hai capito come funziona un forum.

    Non puoi aprire thread tutti uguali perché "nessuno ti aiuta".

    Devi continuare nel thread dove ti hanno risposto e mettere in pratica i suggerimenti se e quando ti arrivano. Se speri che l'aiuto sia la totale scrittura del codice al posto tuo allora dimenticalo, non in questo forum.

    Stai facendo un sacco di confusione ... mai capitato...
  • Re: Programma in C vettori

    ceciceci ha scritto:


    oregon ha scritto:


    Non è lo stesso codice di cui hai già parlato nell'altro thread??
    si, perchè nessuno mi aiuta
    Direi che ti è stato dato tutto l'aiuto possibile, vedendo il precedente 3d.... l'unica cosa che non ti è ancora stata fornita è la pappa pronta...

    In ogni caso compilando il tuo codice il buon vecchio compilatore ti dovrebbe date un bel warning (che dovrebbe essere un error di default...)
    
    test.c: In function ‘shift’:
    test.c:264:2: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘char *’ [-Wformat=]
      scanf("%d", &scelta);
      ^
    
    Cosa può significare secondo te?


    Seconda cosa: nel codice postato la funzione shift non viene chiamata?....

    terza cosa se controlli bebe il seguente tuo codice
    
    	for (i = 0; i < n; i++)
    	{
    		printf("%d\n", V[i]);
    		system("PAUSE");
    	        return 0;
    	}
    
    puoi notare che al primo loop viene subito eseguito return 0; interrompendo quindi il ciclo e terminando il programma...
    Sposta le ultime due istruzioni fuori dal ciclo
    
    	for (i = 0; i < n; i++)
    	{
    		printf("%d\n", V[i]);
    	}
    	system("PAUSE");
    	return 0;
    
  • Re: Programma in C vettori

    Ho corretto, compila, ma nel programma non posso selezionare la mia scelta, non mi fa serlezionare D o S, mi esce sempre "scelta non valida", potreste aiutarmi a capire perchè?
    c'è qualche errore nella FUNZIONE 1?
    
    #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]); }
                shift(V,n); 
                    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("%c",&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[i-1];
                 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

    ceciceci ha scritto:


    Ho corretto, compila, ma nel programma non posso selezionare la mia scelta, non mi fa serlezionare D o S, mi esce sempre "scelta non valida", potreste aiutarmi a capire perchè?
    c'è qualche errore nella FUNZIONE 1?

    E' impossibile che ti compili:
    1) hai un ; alla fine della dichiarazione della funzione shift
    2) hai dichiarato int Vet[0]: non si possono dichiarare dei vettori di grandezza nulla
    3) sia il primo parametro passato alla funzione che l'array hanno lo stesso nome.......
  • Re: Programma in C vettori

    Concordo ... non può compilare ... Fai quelle correzioni e riprova.
  • Re: Programma in C vettori

    Coretto, ma quando lo mando mi fa lo stesso errore di prima
    
    #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]); }
                shift(V,n); 
                    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("%c",&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;
                 }
    }
    

    dopo ruontare a destra(D) o a sinistra (S)?
    non escono i casi, ma esce direttamente scelta non valida, non capisco perchè
  • Re: Programma in C vettori

    Il problema è nella scanf ... deve aggiungere uno spazio all'interno, così

    scanf("%c",&scelta);

    E poi mancano le due

    break;

    alla fine dei due case
  • Re: Programma in C vettori

    oregon ha scritto:


    Il problema è nella scanf ... deve aggiungere uno spazio all'interno, così

    scanf("%c",&scelta);

    E poi mancano le due

    break;

    alla fine dei due case
    mi da lo stesso errore
  • Re: Programma in C vettori

    Lo spazio non era chiaro... scanf(" %c",&scelta);
  • Re: Programma in C vettori

    oregon ha scritto:


    Lo spazio non era chiaro... scanf(" %c",&scelta);
    GRAZIE GRAZIE!
Devi accedere o registrarti per scrivere nel forum
41 risposte