Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di Iena87
    Registrato dal
    Dec 2003
    Messaggi
    429

    [C/C++] Problema con funzioni

    Ho provato a fare questo programma per simulare le porte logiche,dove vi riporto come funzione scrittta, solo quella and se no era troppo lungo:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <iostream.h>
    
    void and(void);
    void or(void);
    void nand(void);
    void nor(void);
    void xor(void);
    void xnor(void);
    
    int main(){
      int decisione;
      printf("Quale tipo di porta logica vuoi utilizzare?");
      printf("\n1 per \"and\"\n2 per \"or\"\n3 per \"nand\"\n4 per \"nor\"\n5 per \"xor\"\n6 per \"xnor\"\n");
      scanf("%d", decisione);
      if(decisione==1)
         and();
      if(decisione==2)
         or();
      if(decisione==3)
         nand();
      if(decisione==4)
         nor();
      if(decisione==5)
         xor();
      if(decisione==6)
         xnor();
      getch();
      return 0;
    }
    
    void and(void){
         int a, b, ris;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("d", b);
         printf("\nSecondo la relazione and, il risultato tra i due operandi e' ");
         ris=a&&b;
    }
    Premettendo che ho pochissima dimestichezza con procedure e funzioni, mi viene visualizzato questo errore (compilando il programma così come l'ho postato):
    codice:
    C:\DOCUME~1\Ciro\IMPOST~1\Temp\cc4idaaa.o(.text+0xe1): porte.cpp: undefined reference to `or(void)'
    C:\DOCUME~1\Ciro\IMPOST~1\Temp\cc4idaaa.o(.text+0xec): porte.cpp: undefined reference to `nand(void)'
    C:\DOCUME~1\Ciro\IMPOST~1\Temp\cc4idaaa.o(.text+0xf7): porte.cpp: undefined reference to `nor(void)'
    C:\DOCUME~1\Ciro\IMPOST~1\Temp\cc4idaaa.o(.text+0x102): porte.cpp: undefined reference to `xor(void)'
    C:\DOCUME~1\Ciro\IMPOST~1\Temp\cc4idaaa.o(.text+0x10d): porte.cpp: undefined reference to `xnor(void)'
    Se invece lo completo con tutte le funzioni mancanti (quindi or, nand, nor ecc), lo compila, me lo fa mandare in esecuzione, ma poi appena inserisco un dato per scegliere quale funzione eseguire, mi da una segnalazione d'errore e mi fa chiudere tutto.....help me please!

  2. #2

    Re: [C/C++] Problema con funzioni

    Originariamente inviato da Iena87
    codice:
    void and(void){
         int a, b, ris;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("d", b);
         printf("\nSecondo la relazione and, il risultato tra i due operandi e' ");
         ris=a&&b;
    }
    se vuoi fare l'and bit a bit devi usare

    ris = a & b;


    Premettendo che ho pochissima dimestichezza con procedure e funzioni, mi viene visualizzato questo errore (compilando il programma così come l'ho postato):
    codice:
    C:\DOCUME~1\Ciro\IMPOST~1\Temp\cc4idaaa.o(.text+0xe1): porte.cpp: undefined reference to `or(void)'
    C:\DOCUME~1\Ciro\IMPOST~1\Temp\cc4idaaa.o(.text+0xec): porte.cpp: undefined reference to `nand(void)'
    C:\DOCUME~1\Ciro\IMPOST~1\Temp\cc4idaaa.o(.text+0xf7): porte.cpp: undefined reference to `nor(void)'
    C:\DOCUME~1\Ciro\IMPOST~1\Temp\cc4idaaa.o(.text+0x102): porte.cpp: undefined reference to `xor(void)'
    C:\DOCUME~1\Ciro\IMPOST~1\Temp\cc4idaaa.o(.text+0x10d): porte.cpp: undefined reference to `xnor(void)'
    è un errore del linker, infatti non trova le definizioni (il corpo) delle fuzioni che ti segnala


    Se invece lo completo con tutte le funzioni mancanti (quindi or, nand, nor ecc), lo compila, me lo fa mandare in esecuzione, ma poi appena inserisco un dato per scegliere quale funzione eseguire, mi da una segnalazione d'errore e mi fa chiudere tutto.....help me please!
    anche la funzione and ?

    posta il codice completo delle sole funzioni

  3. #3

    Re: [C/C++] Problema con funzioni

    Originariamente inviato da Iena87
    Ho provato a fare questo programma per simulare le porte logiche,dove vi riporto come funzione scrittta, solo quella and se no era troppo lungo:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <iostream.h>
    
    void and(void);
    void or(void);
    void nand(void);
    void nor(void);
    void xor(void);
    void xnor(void);
    
    int main(){
      int decisione;
      printf("Quale tipo di porta logica vuoi utilizzare?");
      printf("\n1 per \"and\"\n2 per \"or\"\n3 per \"nand\"\n4 per \"nor\"\n5 per \"xor\"\n6 per \"xnor\"\n");
      scanf("%d", &decisione);
      if(decisione==1)
         and();
      if(decisione==2)
         or();
      if(decisione==3)
         nand();
      if(decisione==4)
         nor();
      if(decisione==5)
         xor();
      if(decisione==6)
         xnor();
      getch();
      return 0;
    }
    
    void and(void){
         int a, b;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", &a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("d", &b);
         printf("\nSecondo la relazione and, il risultato tra i due operandi e' %d", a & b);
    }
    hai dimenticato di passare gli indirizzi

  4. #4
    Utente di HTML.it L'avatar di Iena87
    Registrato dal
    Dec 2003
    Messaggi
    429
    Ho postato tutto il programmo così è meglio


    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <iostream.h>
    
    void and(void);
    void or(void);
    void nand(void);
    void nor(void);
    void xor(void);
    void xnor(void);
    
    int main(){
      int decisione;
      printf("Quale tipo di porta logica vuoi utilizzare?");
      printf("\n1 per \"and\"\n2 per \"or\"\n3 per \"nand\"\n4 per \"nor\"\n5 per \"xor\"\n6 per \"xnor\"\n");
      scanf("%d", decisione);
      if(decisione==1)
         and();
      if(decisione==2)
         or();
      if(decisione==3)
         nand();
      if(decisione==4)
         nor();
      if(decisione==5)
         xor();
      if(decisione==6)
         xnor();
      getch();
      return 0;
    }
    
    void and(void){
         int a, b, ris;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("d", b);
         printf("\nSecondo la relazione and, il risultato tra i due operandi e' ");
         ris=a&&b;
    }
    
    void or(void){
         int a, b, ris;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("d", b);
         printf("\nSecondo la relazione or, il risultato tra i due operandi e' ");
         ris=a||b;
    }
    
    void nand(void){
         int a, b, ris;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("d", b);
         printf("\nSecondo la relazione nand, il risultato tra i due operandi e' ");
         ris=!(a&&b);
    }
    
    void nor(void){
         int a, b, ris;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("d", b);
         printf("\nSecondo la relazione nor, il risultato tra i due operandi e' ");
         ris=!(a||b);
    }
    
    void xor(void){
         int a, b, ris;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("d", b);
         printf("\nSecondo la relazione xor, il risultato tra i due operandi e' ");
         ris=(a||b) && !(a&&b);
    }
    
    void xnor(void){
         int a, b, ris;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("d", b);
         printf("\nSecondo la relazione xnor, il risultato tra i due operandi e' ");
         ris=!((a||b) && !(a&&b));
    }

  5. #5
    metti un &
    ad ogni variabile di scanf

  6. #6
    Utente di HTML.it L'avatar di Iena87
    Registrato dal
    Dec 2003
    Messaggi
    429
    Originariamente inviato da internet
    metti un &
    ad ogni variabile di scanf
    mmmm....come mai questa costruzione??? cioè perchè devo passare gli indirizzi???

    Cmq ho fatto così, poi mandandolo in esecuzione, una volta che inserisco il primo operando di una qualsiasi delle varie funzioni, il programma termina, e nn mi fa inserire il secondo operando, quindi considerata la funzione and, io inserisco il primo operando a, mettiamo che inserisco 1, e poi nn mi fa inserire il secondo operando b, e mi restituisce come risultato (considerando la and) 1...dove sta il problema?

  7. #7
    codice:
    void and(void){
         int a, b, ris;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("d", b);
         printf("\nSecondo la relazione and, il risultato tra i due operandi e' ");
         ris=a&&b;
    }
    prova questa
    codice:
    void and(void){
         int a, b;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", &a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("%d", &b);
         printf("\nSecondo la relazione and, il risultato tra i due operandi e' %d\n", a && b);
    }

  8. #8
    Utente di HTML.it L'avatar di Iena87
    Registrato dal
    Dec 2003
    Messaggi
    429
    Originariamente inviato da internet
    codice:
    void and(void){
         int a, b, ris;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("d", b);
         printf("\nSecondo la relazione and, il risultato tra i due operandi e' ");
         ris=a&&b;
    }
    prova questa
    codice:
    void and(void){
         int a, b;
         printf("Inserire il valore del primo operando  ");
         scanf("%d", &a);
         printf("\nInserire il valore del secondo operando  ");
         scanf("%d", &b);
         printf("\nSecondo la relazione and, il risultato tra i due operandi e' %d\n", a && b);
    }
    Ok adesso va bene, grazie mille per l'aiuto

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    30
    ma perchè non usate il cin e cout invece che stare a scrivere tutto quel casino con printf e scanf???

  10. #10
    Utente di HTML.it L'avatar di mica81
    Registrato dal
    Nov 2003
    Messaggi
    87
    forse perchè questo deve essere un programma scritto in c...anche se assomiglia al c++. mettendo cin e cout funziona ugualmente

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 © 2025 vBulletin Solutions, Inc. All rights reserved.