Ciao a tutti!
Sono nuova nel Forum e vorrei gentilmente chiedervi aiuto, è tutto il pomeriggio che sto impazzendo su 2 errori che mi da' il compilatore,
il primo è: conflicting types for 'GeneraData'
il secondo è: unknown type name 'data'
VI ALLEGO CODICE
(Premetto che sto facendo pratica con le librerie create da me, quindi il main che allegherò è solo una prova che volevo fare)
CODICE LIBRERIA 'random.h'
#ifndef RANDOM_H_
#define RANDOM_H_
int GeneraMese ();
int GeneraGiorno (int mese);
int GeneraAnno ();
data GeneraData ();
char* GeneraNome ();
char* GeneraCognome ();
char* GeneraMail (char* nome, char* cognome);
char* GeneraPassword ();
int GeneraEta ();
float GeneraAltezza ();
int GeneraPeso ();
#endif /* RANDOM_H_ */
CODICE FILE .c RIGUARDANTE LA LIBRERIA
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "random.h"
#define ANNO_MAX 2000 // anno minimo che può essere generato random (ho scelto 2000 in modo che ogni utente deve essere almeno maggiorenne)
#define ANNO_MIN 1950 // anno max che può essere generato
#define MAX_COGNOMI 17 //indice max che può essere generato per i cognomi
#define MIN 0 //indice min che può essere generato
#define MESE_MAX 12 //anno max che può essere generato random
#define MESE_MIN 1 //anno min che può essere generato random
#define GIORNO_MIN 1 //GIORNO MIN PER RANDOMIZZARE I GIORNI
#define GIORNO_MAX_MESI31 31 //GIORNO MAX PER RANDOMIZZARE GIORNI PER MESI
#define MAX_DOMINI 9 //indice max dei domini che possono essere generati
#define MIN 0 //indice min che può essere generato
#define ASCII_MAX 126
#define ASCII_MIN 33
#define LUNG_PWD 9
#define MAX_ETA 120
#define MIN_ETA 18
#define MAX_PESO 150
#define MIN_PESO 40
#define MAX_ALTEZZA 200
#define MIN_ALTEZZA 100
//definizione tipo data con giorno, mese e anno come interi
typedef struct {
int giorno;
int mese;
int anno;
} data;
int GeneraAnno (){
//generazione random anno
return rand () % ( ANNO_MAX - ANNO_MIN + 1) + ANNO_MIN;
}
int GeneraMese (){
//genero un indice random che mi servirà per scegliere un mese randomicamente
return rand () % (MESE_MAX - MESE_MIN + 1) + MESE_MIN;
}
int GeneraGiorno (int mese){
switch ( mese ) { //controllo sulla correttezza complessiva della data (febbraio, mesi di 30 gg e mesi di 31gg)
//generazione random giorno per febbraio
case 2:
return rand () % ((GIORNO_MAX_MESI31 - 3) - GIORNO_MIN + 1) + GIORNO_MIN;
break;
//generazione random giorno per mesi di 30 gg
case 4:
case 6:
case 9:
case 11:
return rand () % ((GIORNO_MAX_MESI31 - 1) - GIORNO_MIN + 1) + GIORNO_MIN;
break;
//generazione random giorno per mesi di 31 gg
default:
return rand () % (GIORNO_MAX_MESI31 - GIORNO_MIN + 1) + GIORNO_MIN;
break;
}
}
char* GeneraCognome (){
char* cognomi[]= {"Stragapede", "Silletti", "Turchiano", "Matera", "Colucci", "Portacci", "Rossi", "Verdi", "Bianchi",
"Russo", "Ferrari", "Esposito", "Marino", "Greco", "Bruno", "Mancini", "Conti"}; //array di cognomi che possono essere generati randomicamente
int rand_cognome= rand () % ( MAX_COGNOMI - MIN + 1 ) + MIN; //genero un indice random che mi servirà per scegliere un cognome randomicamente
return cognomi [rand_cognome];
}
data GeneraData (){
data data;
data.mese = GeneraMese();
data.anno = GeneraAnno();
data.giorno = GeneraGiorno(data.mese);
return data;
}
char* GeneraMail (char* nome, char* cognome){
char* email = "";
char* domini []= {"@gmail.com", "@live.com", "@outlook.com", "@libero.it", "@yahoo.com", "@aruba.it", "@msn.com", "@hotmail.com", "@hotmail.it"};
// dichiarazione array di domini che possono essere generati randomicamente
int rand_dominio= rand () % ( MAX_DOMINI - MIN + 1 ) + MIN; //genero un indice random che mi servirà per scegliere un dominio randomicamente
strcat (email, nome); //metto il nome nella variabile vuota contenitore
strcat (email, cognome); //concateno il cognome alla variabile contenitore
strcat (email, domini[rand_dominio]); //concateno il dominio generato randomicamente alla variabile contenitore
return email;
}
char* GeneraPassword () {
char* password = "";
int seed = time (NULL);
srand (seed);
for ( int i = 0; i < LUNG_PWD - 1; i++ ){
password[i] = rand () % (ASCII_MAX - ASCII_MIN + 1) + ASCII_MIN;
}
return password;
}
int GeneraEta (){
int seed = time (NULL);
srand (seed);
return rand() % ( MAX_ETA - MIN_ETA + 1 ) + MIN_ETA ;
}
float GeneraAltezza (){
int seed = time (NULL);
srand (seed);
int random_altezza = rand() % ( MAX_ALTEZZA - MIN_ALTEZZA + 1 ) + MIN_ALTEZZA ;
float altezza = ((float)random_altezza) / 100;
return altezza;
}
int GeneraPeso (){
int seed = time (NULL);
srand (seed);
return rand() % ( MAX_PESO - MIN_PESO + 1 ) + MIN_PESO;
}
CODICE MAIN
#include <stdio.h>
#include <stdlib.h>
#include "random.h"
int main (){
int eta = 0, peso = 0, max_eta_over40 = 0, max_eta_under40 = 0, max_peso_over40 = 0, max_peso_under40 = 0;
float altezza = 0.0, BMI = 0.0, max_altezza_over40 = 0.0, max_altezza_under40 = 0.0, BMI_medio_under40 = 0.0, BMI_medio_over40 = 0.0;
eta = GeneraEta();
printf ("Eta: %d", eta);
}
Grazie a chi mi risponderà