Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C] Unione di insiemi

  1. #1

    [C] Unione Insiemi

    Salve ragazzi , sto studiando come implementare nel linguaggio C un Unione di Insiemi.
    Faccio un esempio ho due insiemi : A[1,2,3,6,7] B[1,2,4] quello unione risulta C[1,2,3,4,6,7]
    Ora ho un problema , USO DEV C++ . Il compilatore non da errori ma quando eseguo il programma la lista degli elementi da visualizzare che chiedo col Printf mi da strani numeri!

    poi anche una piccola cosa che non ho capito segnalata in rosso

    vi posto il codice del programma (dalla slide del prof. e copiato in DEV C) :

    int appartiene_af(float, float[], int);
    void unione_f(float[], int , float[] , int , float[] , int *);

    int main()
    {
    int n_a, n_b, n_c;
    float a[]={1.0,2.0,3.5,5.0,10.0};
    float b[]={1.0, 14.2 , 20.0};
    float c[8];
    int i;
    n_a=5;
    n_b=3;
    unione_f(a,n_a,b,n_b,c,&n_c);
    printf("numero degli elementi dell'unione = %d\n", n_c);
    for (i=0;i<n_c;i++)
    printf(" %f\n",c[i]);
    system("PAUSE");
    return 0;
    }
    int appartiene_aF (float chiave, float a[], int n)
    {
    int i=0;
    while (chiave!=a[i] && i<n-1)
    i=i+1;
    if (chiave == a[i])
    return 1;
    else
    return 0;
    }
    void unione_f(float a[], int n_a , float b[] , int n_b , float c[] , int *n_c)
    {
    int i, i_c;
    for (i=0;i<n_a;i++);
    c[i]=a[i];
    i_c=n_a-1; */ <--- qui non capisco perchè assegna all'indice C , il size di quello A -1 (non dovrebbe essere uguale ad A?)
    for (i=0;i<n_b;i++)
    {
    if (!appartiene_aF(b[i],a,n_a))
    {
    i_c++;
    c[i_c]=b[i];
    }
    }
    *n_c= i_c+1;
    }

  2. #2
    Così è illeggibile... ripostalo indentato correttamente e nel tag [code] ... [/code]
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Originariamente inviato da MItaly
    Così è illeggibile... ripostalo indentato correttamente e nel tag [code] ... [/code]
    So metterlo in CODE ma non so cosa significhi indentarlo..

  4. #4
    http://it.wikipedia.org/wiki/Indentazione
    Da quanto vedo comunque è già indentato, solo che se non lo posti nel tag CODE l'indentazione non si vede.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    codice:
    int appartiene_af(float, float[], int);
    void unione_f(float[], int , float[] , int , float[] , int *);
    
    int main()
    {
      int n_a, n_b, n_c;
      float a[]={1.0,2.0,3.5,5.0,10.0};
      float b[]={1.0, 14.2 , 20.0};
      float c[8];
      int i;
      n_a=5;
      n_b=3;
      unione_f(a,n_a,b,n_b,c,&n_c);
      printf("numero degli elementi dell'unione = %d\n", n_c);
      for (i=0;i<n_c;i++)
      printf(" %f\n",c[i]);
      system("PAUSE");	
      return 0;
    }
    int appartiene_aF (float chiave, float a[], int n)
    {
        int i=0;
        while (chiave!=a[i] && i<n-1)
        i=i+1;
        if (chiave == a[i])
        return 1;
        else 
        return 0;
    }
        void unione_f(float a[], int n_a , float b[] , int n_b , float c[] , int *n_c)
        {
             int i, i_c;
             for (i=0;i<n_a;i++);
             c[i]=a[i];
             i_c=n_a-1;
             for (i=0;i<n_b;i++)
             {
                 if (!appartiene_aF(b[i],a,n_a))
                 {
                   i_c++;
                   c[i_c]=b[i];
                   }
                   }
                   *n_c= i_c+1;
                   }
    ricordo ke il problema è che mi da in output (printf) la lista degli elementi dell'insieme unione C con numeri strani ... mentre mi appare giusto il size di C.

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.