Oppure

Loading
23/10/14 17:17
perillitommaso
void menu();//procedura menu
int choose();//procedura scelta
void gestione(int *c,int scelta,t_Dati *datianagrafici[]);//procedura che gestisce la banca dati
void inserisci_dati(int *c,t_Dati *datianagrafici[]);//procedura che inserisci i dati dei clienti nella banca dati
void ricerca_cognome(int *c,t_Dati *datianagrafici[]);//procedura che ricerca un cliente in base al cognome

/*Programma Principale*/
int main(int argc,char ** argv)
{
    t_Dati datianagrafici[max];//array di record
    int scelta;//variabile scelta
    int c=0;//contatore dei clienti inseriti

    printf("\t\t\t--BANCA DATI STUDIO DENTISTICO--");
    printf("\t\t\tPROGRAMMA REALIZZATO DA TOMMASO PERILLI");

    do{

    menu();//procedura menu
    scelta = choose();//procedura scelta
    gestione(&c,scelta,&datianagrafici );//procedura che gestisce la banca dati
    system("cls");//cancella lo schermo
    }while(scelta!=3);//cicla fin quando non usciamo 3=exit

    printf("\t\t\tPROGRAMMA REALIZZATO DA TOMMASO PERILLI");

    system("PAUSE");
    return(0);
}

ho messo solo un pezzo di codice perchè mi sembra inutile inserirlo tutto dato che l'errore è presente solo in questo pezzo. Innanzitutto datianagrafici è un array di record, voglio passarlo per riferimento ma mi da errore:
cannot convert `t_Dati (*)[100]' to `t_Dati**' for argument `3' to `void gestione(int*, int, t_Dati**)' ù
qualcuno potrebbe darmi una mano? grazie 8-|
aaa
24/10/14 5:31
nessuno
Dovrebbe essere

void gestione(int *c, int scelta, t_Dati *datianagrafici);

e quindi la chiamata

gestione(&c, scelta, datianagrafici);
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à.
24/10/14 13:33
perillitommaso
Ho provato ma nulla, stesso errore
aaa
24/10/14 13:54
perillitommaso
il problema sembra scomparire quando tolgo dal prototipo l' "*" diventando così:
void gestione(int *c, int scelta, t_Dati datianagrafici);
ma sembra che poi cambi proprio il senso, giusto?
mentre quando vado poi a sviluppare la procedura, è così:
void gestione(int *c, int scelta, t_Dati *datianagrafici){
----
return;
}
aaa
24/10/14 14:34
nessuno
Cosa è t_Dati ? Se non lo mostri non si può capire ...
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à.
24/10/14 15:42
perillitommaso
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 100

/*Variabili Globali*/
//Record contenente i campi per l'importo
typedef struct recImporti
 {
   float importo1;
   float importo2;
   float importo3;
 }t_Importo;

//Record contenente i campi per le prestazioni
typedef struct recPrestazioni
 {
   char Prestazioni1[20];
   char Prestazioni2[20];
   char Prestazioni3[20];
 }t_Prestazioni;
//Record contenente i campi per la data di nascita
typedef struct recDatidiNascita
 {
     int Giorno;
     char Mese[10];
     int Anno;
 }t_Data;
//record contenente i dati anagrafici RECORD PRINCIPALE
typedef struct recDatiAnagrafici
 {
    char Nome [12];
    char Cognome [12];
    char Telefono [9];
    t_Data Nascita;//record nascita composto da 3 campi
    t_Prestazioni prestazioni;//record prestazioni composto da 3 campi
    t_Importo importo;//record importo composta da 3 campi
 }t_Dati;

/*Prototipi Procedure*/

void menu();//procedura menu
int choose();//procedura scelta
void gestione(int *c,int scelta,t_Dati *datianagrafici[]);//procedura che gestisce la banca dati
void inserisci_dati(int *c,t_Dati *datianagrafici[]);//procedura che inserisci i dati dei clienti nella banca dati
void ricerca_cognome(int *c,t_Dati *datianagrafici[]);//procedura che ricerca un cliente in base al cognome

/*Programma Principale*/
int main(int argc,char ** argv)
{
    t_Dati datianagrafici[max];//array di record
    int scelta;//variabile scelta
    int c=0;//contatore dei clienti inseriti

    printf("\t\t\t--BANCA DATI STUDIO DENTISTICO--");
    printf("\t\t\tPROGRAMMA REALIZZATO DA TOMMASO PERILLI");

    do{

    menu();//procedura menu
    scelta = choose();//procedura scelta
    gestione(&c,scelta,&datianagrafici);//procedura che gestisce la banca dati
    system("cls");//cancella lo schermo
    }while(scelta!=3);//cicla fin quando non usciamo 5=exit

    printf("\t\t\tPROGRAMMA REALIZZATO DA TOMMASO PERILLI");

    system("PAUSE");
    return(0);
}

adesso è più chiaro?
aaa
24/10/14 18:25
nessuno
Ti confermo che deve essere così

void gestione(int *c, int scelta, t_Dati *datianagrafici);

e la chiamata

gestione(&c, scelta, datianagrafici);
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à.
25/10/14 13:23
perillitommaso
Postato originariamente da nessuno:

Ti confermo che deve essere così

void gestione(int *c, int scelta, t_Dati *datianagrafici);

e la chiamata

gestione(&c, scelta, datianagrafici);

Ok ho risolto, penso che mi provocavano fastidio le parentesi []
comunque, esiste un modo per stampare un record in una botta sola? senza scrivere esplicitamente tutti i campi?
aaa