Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Copia degli elementi pari di un vettore di double...
Forum - C/C++ - Copia degli elementi pari di un vettore di double...

Avatar
eliokls (Normal User)
Newbie


Messaggi: 4
Iscritto: 05/01/2009

Segnala al moderatore
Postato alle 12:31
Lunedì, 05/01/2009
Ciao a tutti, devo copiare gli elementi pari di un vettore di double vd in secondo vettore vd2 , ma non ho idea di come fare, dato che il resto della divisione con % non si puo fare sui double , ho provato a convertirli mettendo (int) ma mi viene sempre 0 . Se qualcuno puo anche darmi il contatto  msn per discutere meglio su come procedere ne sarei grato.

PM Quote
Avatar
iGuLy (Ex-Member)
Pro


Messaggi: 66
Iscritto: 17/05/2007

Segnala al moderatore
Postato alle 13:14
Lunedì, 05/01/2009
Testo quotato

Postato originariamente da eliokls:

Ciao a tutti, devo copiare gli elementi pari di un vettore di double vd in secondo vettore vd2 , ma non ho idea di come fare, dato che il resto della divisione con % non si puo fare sui double , ho provato a convertirli mettendo (int) ma mi viene sempre 0 . Se qualcuno puo anche darmi il contatto  msn per discutere meglio su come procedere ne sarei grato.


Ma se vuoi discuterne su msn perchè hai postato?
Comunque inizia a porti delle domande sul problema da risolvere e poi prova a mettere giù del codice.
Per esempio come fai a copiare tutti gli elementi
Codice sorgente - presumibilmente C/C++

  1. for (...)
  2.  vd2[i] = vd[i];


Come fai a verificare se un numero è pari:
Codice sorgente - presumibilmente C/C++

  1. if (numero % 2 == 0)
  2. ...


Edit: mi ero dimenticato che erano double gli elementi. Comunque per ovviare questo problema c'è la funzione fmod() inclusa nella math.h(cmath).
Per qualche info di più: http://www.cplusplus.com/reference/clibrary/cmath/fmod.html

PM Quote
Avatar
eliokls (Normal User)
Newbie


Messaggi: 4
Iscritto: 05/01/2009

Segnala al moderatore
Postato alle 14:32
Lunedì, 05/01/2009
posso usare solo stdlib.h e stdio.h  .... mi aggiungi su msn ? MSN: elio.kls @ gmail . com

PM Quote
Avatar
iGuLy (Ex-Member)
Pro


Messaggi: 66
Iscritto: 17/05/2007

Segnala al moderatore
Postato alle 18:22
Lunedì, 05/01/2009
Testo quotato

Postato originariamente da eliokls:

posso usare solo stdlib.h e stdio.h  .... mi aggiungi su msn ? MSN: elio.kls @ gmail . com


Scusa ho provato solo ora a fare il programmino perchè non ero al pc. Comunque ti basta fare anche una cosa del genere per verificare se è pari:
Codice sorgente - presumibilmente C/C++

  1. if ((int)vd[..] % 2 == 0)
  2.   vd2[..] = vd[..];
  3. }



PM Quote
Avatar
eliokls (Normal User)
Newbie


Messaggi: 4
Iscritto: 05/01/2009

Segnala al moderatore
Postato alle 19:23
Lunedì, 05/01/2009
avevo gia provato qst soluzione.. e mi da sempre 0 e dunque o sempre pari o sempre dispari

PM Quote
Avatar
iGuLy (Ex-Member)
Pro


Messaggi: 66
Iscritto: 17/05/2007

Segnala al moderatore
Postato alle 19:39
Lunedì, 05/01/2009
Testo quotato

Postato originariamente da eliokls:

avevo gia provato qst soluzione.. e mi da sempre 0 e dunque o sempre pari o sempre dispari


Scusa ma a me funziona perfettamente:
Codice sorgente - presumibilmente C

  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.         int y = 0;
  6.         double vd[10] = {0, 1, 2, 3, 4, 5, 6, 8, 9, 10};
  7.         double vd2[10] = {0};
  8.  
  9.         // Primo Vettore
  10.         printf("Vettore iniziale:\n");
  11.         for (int i = 0; i < 10; i++)
  12.                 printf("%f\n", vd[i]);
  13.        
  14.         // Copio gli elementi pari nell'altro
  15.         for (int i = 0; i < 10; i++)
  16.         {
  17.                 // Verifico se è pari
  18.                 if ((int)vd[i] % 2 == 0 && (int)vd[i] != 0)
  19.                   vd2[y++] = vd[i];
  20.         }
  21.  
  22.         // Secondo vettore
  23.         printf("\n\nVettore con elementi pari:\n");
  24.         for (int i = 0; i < y; i++)
  25.           printf("%f\n", vd2[i]);
  26.        
  27.         getchar();
  28.         return 0;
  29. }


Anche se credo sia meglio usare la fmod().

Ultima modifica effettuata da iGuLy il 06/01/2009 alle 0:13
PM Quote
Avatar
eliokls (Normal User)
Newbie


Messaggi: 4
Iscritto: 05/01/2009

Segnala al moderatore
Postato alle 20:20
Lunedì, 05/01/2009
non funziona

Codice sorgente - presumibilmente C

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define DIM_1 3
  4. #define DIM_2 3
  5. int menu ( int * p);
  6. void ins_vett(double * v, int d);
  7. void copia_pari(double * vd2, double * vd, int d);
  8. int main ()
  9. {
  10.     double vett[DIM_1];
  11.     double vett2[DIM_2];
  12.     int c;
  13.     do
  14.     { menu (&c);
  15.         if (c>3 || c <=0 )                  /*controllo se vengono inseriti */
  16.         { printf ("## scelta errata ##");  /*valori non inclusi nel menu*/
  17.               }
  18.        
  19.           switch (c)
  20.     {
  21.     case 1 : ins_vett(vett, DIM_1);
  22.          break;
  23.     case 2 : copia_pari(vett2,vett, DIM_2);
  24.          break;
  25.    
  26. }
  27.          }
  28.     while (c != 3) ;
  29.     printf ("ciao ciao");
  30.     system ("pause");
  31.     }
  32.    
  33. int menu (int *p)
  34. {
  35.     int h;
  36.     printf ("\n\n----------");
  37.     printf ("\n---MENU---");
  38.     printf ("\n----------");
  39.     printf ("\n1 - inserisci un vettore: ");
  40.     printf ("\n2 - copia i numeri pari del vettore inserito ");
  41.     printf ("\n3 - ESCI \n");
  42.     scanf ("%d", &h);
  43.     *p = h;
  44.     }  
  45.    
  46. void ins_vett(double * v, int d)
  47. {
  48.      int i;
  49.      for (i=0;i<d;i++)
  50.      {
  51.     printf("\n Inserisci l'elemento %d : ",i+1);
  52.         scanf("%d",&v[i]);
  53.          }
  54. }
  55.      
  56.      void copia_pari(double * vd2, double * vd, int d)
  57.      {  
  58.           int i;
  59.           int y;
  60.            for (i=0; i<d;i++)
  61.            {    
  62.          if ((int)vd[i] % 2 == 0)
  63.           vd2[i] = vd[i];
  64.  
  65.                 printf ("\n  %d° elemento pari del vettore che hai inserito  : %d \n", i+1, vd2[i]);
  66.  
  67.          
  68.           }
  69.          
  70.           }


PM Quote
Avatar
iGuLy (Ex-Member)
Pro


Messaggi: 66
Iscritto: 17/05/2007

Segnala al moderatore
Postato alle 0:14
Martedì, 06/01/2009
Il metodo che ti ho messo io funziona. Adesso tocca a te, se lo vuoi usare, adattarlo al tuo programma.

PM Quote