Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    101

    [C]Compattamento di un'array

    Dato un array devo eliminare tutti gli elementi nulli(0)ed inserire quelli non nulli in un secondo array attraverso una function.


    il problema è che arrivati alla messa a video di "l'array compattato e'" il ciclo for non riesce a riferirsi al j della function void.

    codice:
    #include<stdio.h>
    void compatta(float x[],float k[],int i,int j,int n);
    main()
     {
        int i,n,j,t;
        float x[100];
        float k[100];
          printf("Inserisci la dimensione dell'array ");
          scanf("%d",&n);
          for(i=0;i<n;i++)
          {
                          printf("Inserisci il %d numero ",i+1);
                          scanf("%f",&x[i]);
          }
    compatta(x,k,i,j,n);
      printf("l'array compattato e': ");
       for(i=0;i<j;i++)
       {
                      printf("%f \n",k[i]);
       }
                      
      
      system("pause");
      return 0;
     }
    
    
    void compatta(float x[],float k[],int i,int j,int n)
    {
     j=0;
            for(i=0;i<n;i++)
         {
                         if(!(x[i]==0))
                           {
                           k[j]=x[i];
                            j++;
                            }
         }
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Se vuoi che una variabile venga modificata da una funzione, devi passarla per puntatore e trattarla di conseguenza.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    101
    potresti indicarmi come si fa?i puntatori li ho letti ma non capiti!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da Zanzy
    potresti indicarmi come si fa?i puntatori li ho letti ma non capiti!
    Non faresti bene a studiarli approfonditamente e capirli? A cosa ti servirebbe del codice che non capisci?

    In ogni caso, prova da solo ... vediamo gli errori che commetti ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    101
    L'esercizio corretto è questo U.U


    codice:
    #include<stdio.h>
    void compatta(float x[],float k[],int *j,int n);
    main()
     {
        int i,n,j,t;
        float x[100];
        float k[100];
          printf("Inserisci la dimensione dell'array ");
          scanf("%d",&n);
          for(i=0;i<n;i++)
          {
                          printf("Inserisci il %d numero ",i+1);
                          scanf("%f",&x[i]);
          }
    j=0;
    compatta(x,k,&j,n);
      printf("l'array compattato e': ");
       for(i=0;i<j;i++)
       {
                      printf("%f \n",k[i]);
       }
                      
      
      system("pause");
     }
    
    
    void compatta(float x[],float k[],int *j,int n)
    {
      int i;
            for(i=0;i<n;i++)
         {
                         if(!(x[i]==0))
                           {
                           k[*j]=x[i];
                            *j=*j+1;
                            }
         }
    }

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.