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++ - Errore programma conversione binario
Forum - C/C++ - Errore programma conversione binario

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 18:39
Mercoledì, 04/11/2009
L'errore è il seguente

error C2660: 'std::dec': la funzione non accetta 0 argomenti
ma non capisco il perchè sapete aitarmi?è ottimizzabile il programma secondo voi?
grazie a tutti:asd:






Codice sorgente - presumibilmente C++

  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class numerobinario
  6. {
  7. private:
  8.         int decimale;
  9.         int vett[50];
  10. public:
  11.         void dec(void);
  12.     friend void and();
  13.     friend void or ();
  14.         friend int complem();
  15. };
  16.  
  17. int main()
  18. {
  19.         int N;
  20.         int scelta;
  21.         do
  22.         {
  23.         cout<<"menu': "<<endl;
  24.         cout<<"0)per convertire da decimale a binario"<<endl;
  25.         cout<<"1)per convertire in decimale un numero binario"<<endl;
  26.     cout<<"2)per fare l' AND bit a bit di un numero binario"<<endl;
  27.     cout<<"3)per fare l' OR bit a bit di un numero binario"<<endl;  
  28.     cout<<"4)per fare il complemento a due di un numero binario"<<endl;
  29.         cout<<"5)uscire!"<<endl;
  30.     cin>>scelta;
  31.         switch(scelta)
  32.         {
  33.         case 1:
  34.                 dec();  //convertire un numero binario in intero
  35.         break;
  36.         case 2:
  37.         and();  //per fare AND bit a bit
  38.         break;
  39.         case 3:
  40.                 or();   //per fare l'or bit a bit
  41.                 break;
  42.         case 4:
  43.                 complem();//per fare complemento a due del numero
  44.                 break;
  45.         case 5:
  46.         system("pause");
  47.                 return EXIT_SUCCESS;
  48.                 break;
  49.         }
  50.         }
  51.         while(scelta!=5);
  52.         system("pause");
  53. }
  54. void numerobinario::dec()
  55. {
  56.         int num=32;
  57.         int de=0,pos=0,bit=0;
  58.         pos=num;
  59.         do
  60.         {
  61.                 cout<<"inserisci bit da sisnistra"<<endl;
  62.                 cin>>bit;
  63.                 de=de*2+bit;
  64.                 pos=pos-1;
  65.         }
  66.         while(pos!=0);
  67.         cout<<de;
  68. }
  69. void and()
  70. {
  71.         int num=32;
  72.         int de=0,pos=0,bit=0,bit2=0,vett[50],i=0;
  73.         pos=num;
  74.         for(i=0;i<num;i++)
  75.         {
  76.        vett[i]=0;
  77.         }
  78.         for(i=0;i<num;i++)
  79.         {
  80.                   cout<<"inserisci bit da sinistra del primo numero "<<endl;
  81.                   cin>>bit;
  82.           cout<<"inserisci bit da sinistra del secondo numero "<<endl;
  83.                   cin>>bit2;
  84.           int sam=(bit&bit2);
  85.                   vett[i]=sam;
  86.                   pos=pos-1;
  87.         }
  88.         for(i=0;i<num;i++)
  89.         {
  90.                 cout<<vett[i];
  91.         }
  92.  
  93. }
  94. void or()
  95. {
  96.         int num=32;
  97.         int de=0,pos=0,bit=0,bit2=0,vett[50],i=0;
  98.         pos=num;
  99.         for(i=0;i<num;i++)
  100.         {
  101.        vett[i]=0;
  102.         }
  103.         for(i=0;i<num;i++)
  104.         {
  105.                   cout<<"inserisci bit da sinistra del primo numero "<<endl;
  106.                   cin>>bit;
  107.           cout<<"inserisci bit da sinistra del secondo numero "<<endl;
  108.                   cin>>bit2;
  109.           int sam=(bit|bit2);
  110.                   vett[i]=sam;
  111.                   pos=pos-1;
  112.         }
  113.         for(i=0;i<num;i++)
  114.         {
  115.                 cout<<vett[i];
  116.         }
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123. }
  124. int complem()
  125. {
  126.         int num=32,i=0,app=0;
  127.         int vett[50];
  128.         bool flag=false;
  129.         for(i=0;i<num;i++)
  130.         {
  131.                 cout<<"inserisci il numero binario da destra verso sinistra carattere per carattere:"<<endl;
  132.         cin>>app;
  133.                 vett[i]=!app;
  134.         }
  135.         for(i=0;i<num;i++)
  136.         {
  137.                 if(i==0)
  138.                 {
  139.                         if(vett[i]==0)
  140.                         {
  141.                                 flag=true;
  142.                                 vett[i]=!(vett[i]);
  143.                         }
  144.                         else if(vett[i]==1)
  145.                         {
  146.                                 flag=false;
  147.                                 vett[i]=!vett[i];
  148.                         }
  149.                 }
  150.                 else if(i!=0)
  151.                 {
  152.                         if(flag==true)
  153.                         {
  154.                                 for(int k=num-1;k>=0;k--)
  155.                                 {
  156.                                         cout<<vett[k];
  157.                                 }
  158.                                 system("pause");
  159.                         return EXIT_SUCCESS;
  160.                         }
  161.                         else if(flag==false)
  162.                         {
  163.                                 if(vett[i]==0)
  164.                                 {
  165.                                         flag=true;
  166.                                         vett[i]=!vett[i];
  167.                                 }
  168.                                 else if(vett[i]==1)
  169.                                 {
  170.                                         flag=false;
  171.                                         vett[i]=!vett[i];
  172.                                 }
  173.                         }
  174.                 }
  175.         }
  176. }



EDIT by Hedo: Il titolo non è conforme la regolamento, non esiste scrivere nel titolo "ciao a tutti", ma dove pensi che siamo? al bar? Per questa volta sistemo io, ma dalla prox il ban è immediato.

Ultima modifica effettuata da HeDo il 05/11/2009 alle 11:31
PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 20:10
Mercoledì, 04/11/2009
Che cavolo di compilatore usi? Non ti dà la riga dell'errore? Spero che sia una tua dimenticanza, altrimenti cestinalo.
Al massimo prova a togliere dalla funzione 'dec' quel 'void' tra i parametri. Anche se guardando così non ti saprei dire dove si trova l'errore. E poi perché i prototipi sono in una classe se poi non dichiari alcun oggetto 'numerobinario' e quando scrivi il corpo delle funzioni non usi lo scope e la funzione? È onestamente un codice pessimo.

Ultima modifica effettuata da gio97 il 04/11/2009 alle 20:13
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 0:20
Giovedì, 05/11/2009
Gio97, non c'è lo scope perchè sono dei metodi friends... e in quanto tali non richiedono lo scope resolution operator ( :: ).

(Cerchiamo inoltre di non usare termini che potrebbero essere offensivi per favore...)

Matteog, potresti postarci l'intero messaggio di errore con la riga dove succede il problema? Penso anch'io che dovresti provare a sostituire

Codice sorgente - presumibilmente C/C++

  1. void dec(void);



con

Codice sorgente - presumibilmente C/C++

  1. void dec();



Il primo è scritto in stile C, ma qui stiamo scrivendo C++... quindi forse è quello che manda in errore il compilatore.


Il mio blog: https://piero.dev
PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 7:17
Giovedì, 05/11/2009
Testo quotato

Postato originariamente da pierotofy:

Gio97, non c'è lo scope perchè sono dei metodi friends... e in quanto tali non richiedono lo scope resolution operator ( :: ).

(Cerchiamo inoltre di non usare termini che potrebbero essere offensivi per favore...)



In effetti non mi ero accorto di come erano dichiarate le funzioni, e comunque non mi sembra offensivo dire di un sorgente che è pessimo, mi è stato detto molte volte e ho cercato di sistemarlo fino a quando non lo fosse più stato, soltanto gli spazi che ci sono fra una funzione e l'altra lo rendono "pessimo", non c'è ordine, ci sono 4 commenti (sono il primo che non mette un commento nel sorgente, però se va presentato ad altri è il caso di aggiungerli), poi ci sono variabili inizializzate in un modo e nella riga dopo inizializzate con un altro valore,

EDIT: Mi è caduto l'occhio qua
Codice sorgente - presumibilmente Plain Text

  1. cout<<"menu': "<<endl;


sicuramente non si collega all'errore che hai avuto, però manca lo slash per l'apostrofo '

Ultima modifica effettuata da gio97 il 05/11/2009 alle 7:24
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 11:35
Giovedì, 05/11/2009
Testo quotato

Postato originariamente da gio97:

EDIT: Mi è caduto l'occhio qua
Codice sorgente - presumibilmente Plain Text

  1. cout<<"menu': "<<endl;


sicuramente non si collega all'errore che hai avuto, però manca lo slash per l'apostrofo '



sbagli, l'apostrofo non è considerato un carattere speciale.

prima di editare pensaci :D

cmq anch'io credo sia un codice pessimo, sembra quasi un collage :) ad ogni modo ha ben poco senso dichiarare un classe e poi metterci i membri friend, sembra veramente una pezza "perchè non girava".

Non ho tempo di compilare il prog e a prima vista non trovo l'errore, se ci dicesse la riga sicuramente sapremmo aiutarlo meglio.

Ultima modifica effettuata da HeDo il 05/11/2009 alle 11:35
PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 13:19
Giovedì, 05/11/2009
Testo quotato

Postato originariamente da HeDo:

Testo quotato

Postato originariamente da gio97:

EDIT: Mi è caduto l'occhio qua
Codice sorgente - presumibilmente Plain Text

  1. cout<<"menu': "<<endl;


sicuramente non si collega all'errore che hai avuto, però manca lo slash per l'apostrofo '



sbagli, l'apostrofo non è considerato un carattere speciale.

prima di editare pensaci :D

cmq anch'io credo sia un codice pessimo, sembra quasi un collage :) ad ogni modo ha ben poco senso dichiarare un classe e poi metterci i membri friend, sembra veramente una pezza "perchè non girava".

Non ho tempo di compilare il prog e a prima vista non trovo l'errore, se ci dicesse la riga sicuramente sapremmo aiutarlo meglio.



Ne sei sicuro? Sui manuali che ho è scritto il contrario, ho controllato in questo momento.

Ultima modifica effettuata da HeDo il 05/11/2009 alle 13:54
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 13:54
Giovedì, 05/11/2009

Controlla che il manuale sia di C++

PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 15:03
Giovedì, 05/11/2009
Testo quotato

Postato originariamente da HeDo:


Controlla che il manuale sia di C++



Senti pensa quello che vuoi, però questa risposta è come se mi stessi dando dell'idiota, se parlo di C++ non dico del manuale di C, ma di quello di C++.
Se guardi il mio profilo sono uno dei pochi che non mette C e C++ come una cosa sola, proprio perché so che non sono la stessa cosa.

Ultima modifica effettuata da gio97 il 05/11/2009 alle 15:04
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:12
Giovedì, 05/11/2009
Si ' rientra nei caratteri speciali, ma quando usi i doppi apici lo slash non serve... prova a compilare:

Codice sorgente - presumibilmente Plain Text

  1. cout << "L'ora e' vicina..." << endl;



Vedrai che si eseguira' senza problemi...

Adesso fine dell'OT e aspettiamo che il nostro utente ci comunichi la riga dell'errore.

Ultima modifica effettuata da pierotofy il 05/11/2009 alle 16:13


Il mio blog: https://piero.dev
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo