Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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!?!?          
          
          

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";


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?)

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
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:

PM Quote