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 procedura?
Forum - C/C++ - Errore procedura?

Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 20:09
Martedì, 04/03/2014
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. //#define K 10
  4.  
  5.  
  6. /*Prototipi Procedure*/
  7.  
  8. void MaggioreMinore(int *S,int N,int K,int *NM,int *Nm,int *SP,int *PD);
  9. void ControlloNPari(int N,int *SP,int *PD);
  10. void Media(float *M,int S,int K);
  11. void MassimoSpostamento(float M,int NM,float *MS);
  12.  
  13. /*Programma Principale*/
  14. int main()
  15. {
  16.     int N,SP,PD,S,NM,Nm,K;
  17.     float M,MS;
  18.    
  19.     K=10;
  20.     printf("Inserisci un numero: ");
  21.     scanf("%d",&N);
  22.     ControlloNPari(N,&SP,&PD);
  23.     S=S+N;
  24.     NM=N;
  25.     Nm=N;
  26.     MaggioreMinore(&S,N,K,&NM,&Nm,&SP,&PD);
  27.     Media(&M,S,K);
  28.     MassimoSpostamento(M,NM,&MS);
  29.     printf("La media aritmetica dei numeri inseriti e' di: %f\n",M);
  30.     printf("Il massimo spostamento e' di: %f\n",MS);
  31.     printf("Il numero maggiore e' di: %d\n",NM);
  32.     printf("Il numero minore e' di: %d\n",Nm);
  33.     printf("La somma dei numeri pari inseriti e' di: %d\n",SP);
  34.     printf("Il prodotto dei numeri dispari inseriti e' di: %d\n",PD);
  35.    
  36.     system("PAUSE");
  37.     return(0);
  38. }
  39.  
  40. /*Procedure:*/
  41.  
  42. void MaggioreMinore(int *S,int N,int K,int *NM,int *Nm,int *SP,int *PD){
  43.      int C;
  44.      C=1;
  45.      do {
  46.          printf("Inserisci un numero: ");
  47.          scanf("%d",&N);
  48.          S=S+N;
  49.          ControlloNPari(N,&SP,&PD);
  50.          if(N>NM){
  51.                     NM=N;
  52.                     }
  53.                     else{
  54.                          if(N<NM){
  55.                                     Nm=N;
  56.                                     }
  57.                          
  58.                          }
  59.          C=C+1;
  60.          }
  61.          while(C<K);
  62.      
  63.      return;
  64.      }
  65.  
  66. void ControlloNPari(int N,int *SP,int *PD){
  67.      float R;
  68.      R=N%2;
  69.      *PD=1;
  70.      if(R=0){
  71.              *SP=*SP+N;
  72.              }
  73.              else{
  74.                   *PD=*PD*(N);
  75.                   }
  76.  
  77.  
  78. return;
  79. }
  80.  
  81. void Media(float *M,int S,int K){
  82.      *M=S/K;
  83.      return;
  84.      }
  85.  
  86. void MassimoSpostamento(float M,int NM,float *MS){
  87.      *MS=NM-M;
  88.      return;
  89.      }



Quando vado a compilare mi identifica un errore:
49 E:\Informatica\Programmi C\LavoroLaboratorio04032014\LavoroLaboratorio04032014.cpp cannot convert `int**' to `int*' for argument `2' to `void ControlloNPari(int, int*, int*)'
50 E:\Informatica\Programmi C\LavoroLaboratorio04032014\LavoroLaboratorio04032014.cpp ISO C++ forbids comparison between pointer and integer
51 E:\Informatica\Programmi C\LavoroLaboratorio04032014\LavoroLaboratorio04032014.cpp invalid conversion from `int' to `int*'
54 E:\Informatica\Programmi C\LavoroLaboratorio04032014\LavoroLaboratorio04032014.cpp ISO C++ forbids comparison between pointer and integer
55 E:\Informatica\Programmi C\LavoroLaboratorio04032014\LavoroLaboratorio04032014.cpp invalid conversion from `int' to `int*'


Proprio non so come risolvere, ho provato in tutti i modi.. qualcuno può aiutarmi? :hail:

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6378
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:47
Martedì, 04/03/2014
Comincia dal primo errore

49 E:\Informatica\Programmi C\LavoroLaboratorio04032014\LavoroLaboratorio04032014.cpp cannot convert `int**' to `int*' for argument `2' to `void ControlloNPari(int, int*, int*)'

che si riferisce alla linea 49 ovvero

ControlloNPari(N,&SP,&PD);

e che dice che il secondo parametro che stai passando ovvero &SP è un puntatore doppio (int **) e non un puntatore semplice (int *)

Quindi correggi in modo da passare un puntatore semplice e non doppio.

Poi continui così con gli altri errori.



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote