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++ - codice degli insiemi
Forum - C/C++ - codice degli insiemi

Avatar
zaire90 (Normal User)
Rookie


Messaggi: 46
Iscritto: 16/10/2009

Segnala al moderatore
Postato alle 13:42
Venerdì, 23/10/2009
Salve a tutti.
Leggete questo programma:
Codice sorgente - presumibilmente C++

  1. /*   QUESTO PROGRAMMA ACQUISISCE DA TASTIERA UN NUMERO INTERO POSITIVO N<=50
  2.      E SUCCESSIVAENTE n NUMERI INTERI CHE SUDDIVIDE IN QUATTRO INSIEMI A,B,C
  3.      E D, DOVE A E' L'INSIEME DEI NUMERI DISPARI, B E' L'INSIEME DEI MULTIPLI DI
  4.      4, C E' L'INSIEME DEI MULTIPLI DI 10 E D E' L'INSIEME CHE RACCHIUDE TUTTI
  5.      GLI ALTRI INTERI SCRITTI. INFINE IL PROGRAMMA SCRIVE SEPARATAMENTE I
  6.      QUATTRO INSIEMI DICHIARANDO ANCHE QUALE SIA L'EVENTUALE INSIEME VUOTO    */
  7.      
  8. #include <iostream>
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13.      int N,n[50],i;
  14.      cout<<"- 'A' Insieme dei numeri dispari\n";
  15.      cout<<"- 'B' Insieme dei multipli di 4\n";
  16.      cout<<"- 'C' Insieme dei multipli di 10\n";
  17.      cout<<"- 'D' Insieme dei numeri rimanenti";
  18.      cout<<"\n\nScrivi un numero N positivo minore o uguale a 50:";
  19.      cout<<"\n\n                   N = ";cin>>N;
  20.      while ((N<0)||(N>50))
  21.            {
  22.             cout<<"N deve essere positvo e minore o uguale a 50!";
  23.             cout<<"\n\nScrivi un numero N minore o uguale a 50:";
  24.             cout<<"\n\n                N = ";cin>>N;
  25.            }
  26.      cout<<"\nScrivi adesso gli n[N] numeri positivi:\n";
  27.      for (i=1;i<=N;i++)
  28.          {
  29.           cout<<"\nn["<<i<<"] = ";
  30.           cin>>n[i];
  31.          }
  32.      cout<<"\n\nAdesso il programma dividera' i numeri inseriti nei 4 insiemi.";
  33.      
  34.      cout<<"\n\nINSIEME 'A':\n";
  35.      for (i=1;i<=N;i++)
  36.           if (!(n[i]%2==0))
  37.              cout<<"\nn["<<i<<"] = "<<n[i];
  38.           else
  39.              cout<<"L'insieme 'A' e' vuoto";
  40.              
  41.      cout<<"\n\nINSIEME 'B':\n";
  42.      for (i=1;i<=N;i++)
  43.           if ((n[i]%4==0)&&(n[i]!=0))
  44.              cout<<"\nn["<<i<<"] = "<<n[i];
  45.      
  46.      cout<<"\n\nINSIEME 'C':\n";
  47.      for (i=1;i<=N;i++)
  48.           if ((n[i]%10==0)&&(n[i]!=0))
  49.              cout<<"\nn["<<i<<"] = "<<n[i];
  50.      
  51.      cout<<"\n\nINSIEME 'D':\n";
  52.      for (i=1;i<=N;i++)
  53.           if ((!(!(n[i]%2==0))) && (!(n[i]%4==0)) && (!(n[i]%10==0)) || (n[i]==0))
  54.              cout<<"\nn["<<i<<"] = "<<n[i];
  55.      
  56.      cout<<"\n\n\n";
  57.      system("PAUSE");
  58.      return 0;
  59. }



Devo riuscrire a completare il programma con un messaggio che dice  quando li insiemi sono vouti. Come vedete (solo per l'insieme 'A'), così come l'ho scritto io, ripete il messaggio tante volte quanto è il numero N!        
Non riesco a inserire bene questo dannato messaggio!
Mi potreste aiutare!?!?          
          
          


...La saggezza di un singolo somiglia ad un albero conficcato alla meno peggio nel terreno...( HAGAKURE, codice 15)
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 14:00
Venerdì, 23/10/2009
Saprai cosa sono i "flag" ... no ?

Per l'insieme A, ad esempio

Codice sorgente - presumibilmente C++

  1. bool aisempty = true;
  2.   cout<<"\n\nINSIEME 'A':\n";
  3.   for (i=1;i<=N;i++)
  4.     if (!(n[i]%2==0))
  5.     {
  6.       cout<<"\nn["<<i<<"] = "<<n[i];
  7.       aisempty = false;
  8.     }
  9.  
  10.   if (aisempty)
  11.     cout<<"L'insieme 'A' e' vuoto";



- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
zaire90 (Normal User)
Rookie


Messaggi: 46
Iscritto: 16/10/2009

Segnala al moderatore
Postato alle 14:05
Venerdì, 23/10/2009
Cavolo....! No mi dispiace non sono cosa sono i flag!
Mi potresti spiegare il loro uso??

PS (Cmq bool sta per "booleano" giusto?)


...La saggezza di un singolo somiglia ad un albero conficcato alla meno peggio nel terreno...( HAGAKURE, codice 15)
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 14:09
Venerdì, 23/10/2009
Nulla di speciale ... sì booleano ... vero ... falso.

Una semplice variabile che ti dice se e' vero che l'insieme e' vuoto o e' falso.

1) Assumi all'inizio che sia vero (ovvero che l'insieme sia vuoto)
2) Esegui il ciclo e se visualizzi almeno un elemento assumi che sia falso (ovvero che l'insieme NON e' vuoto)
3) All'uscita del ciclo controlli il valore del flag


Stiamo parlando di tecniche usate alle basi del C (anche se con semplici variabili intere valorizzate a 0 o 1 ..)

Ultima modifica effettuata da theprogrammer il 23/10/2009 alle 14:10


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
zaire90 (Normal User)
Rookie


Messaggi: 46
Iscritto: 16/10/2009

Segnala al moderatore
Postato alle 14:33
Venerdì, 23/10/2009
Ok grazie mille per la dritta. Ora il codice funziona perfettamente!:k:


...La saggezza di un singolo somiglia ad un albero conficcato alla meno peggio nel terreno...( HAGAKURE, codice 15)
PM Quote