oregon ha scritto:
Mostrami il codice del main.c, main.h e inserimento.h completo.
Probabilmente ci saranno vari errori, ti chiedo di parlare solo di quelli relativi al mio problema, grazie mille
main.c
#include "main.h"
#include "inserimento.h"
int main() {
srand(time(NULL));
int dimensioneLista;
printf("Quanti immobili vuoi inserire?\n");
scanf("%d", &dimensioneLista);
Immobile listaImmobili[dimensioneLista];
int i;
for (i = 0; i < dimensioneLista; i++) {
printf("INSERIMENTO NUMERO %d", i+1);
inserisciImmobile(listaImmobili[i]);
}
return 0;
}
main.h
#ifndef PROGETTO_B_MAIN_H
#define PROGETTO_B_MAIN_H
#include "inserimento.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#define DIM_STR_POSIZIONE 32
typedef struct{
char regione[DIM_STR_POSIZIONE];
char comune[DIM_STR_POSIZIONE];
char via[DIM_STR_POSIZIONE];
int numeroCivico;
}Posizione;
typedef enum{Indipendente, SemiIndipendente, Appartamento, Altro}Tipologia;
typedef enum{Abitativo, Ufficio, LocaleCommerciale}UsoImmobile;
typedef enum{Nuovo, Ristrutturato, ParzialmenteRistrutturato, DaRistrutturare, Rudere}StatoImmobile;
typedef struct{
int prezzo;
float metriQuadri;
int numeroVani;
Posizione posizioneImmobile;
char codiceID[9];
int numeroVerande;
Tipologia tipologiaImmobile;
_Bool ascensore;
_Bool postoAuto;
_Bool scantinato;
_Bool giardino;
UsoImmobile usoImmobile;
StatoImmobile statoImmobile;
}Immobile;
#endif //PROGETTO_B_MAIN_H
inserimento.c
#include "inserimento.h"
#include "main.h" //HO PROVATO CON E SENZA QUESTO, IN TEORIA CREDO NON CI SIA BISOGNO
int inserisciPrezzo(){
int prezzo;
//DA RICONTROLLARE FACENDO EVENTUALI PROVE
do{
printf("Inserisci il prezzo dell'immobile\n");
scanf("%d", &prezzo);
if(prezzo < 0 || prezzo > 10000000){
printf("ERRORE, INSERISCI UN NUMERO TRA 0 E 10.000.000!\n");
}
} while (prezzo >= 0 && prezzo <= 10000000);
return prezzo;
}
float inserisciMetriQuadri(){
float metriQuadri;
do{
printf("Inserisci i metri quadri dell'immobile\n");
scanf("%f", &metriQuadri);
if(metriQuadri < 1 || metriQuadri > 10000 ){
printf("ERRORE, INSERISCI UN NUMERO TRA 1 E 10.000!\n");
}
} while (metriQuadri >= 1 && metriQuadri <= 10000 );
return metriQuadri;
}
int inserisciNumeroVani(){
int numeroVani;
do{
printf("Inserisci il numero dei vani dell'immobile\n");
scanf("%d", &numeroVani);
if(numeroVani < 0 || numeroVani > 999){
printf("ERRORE, INSERISCI UN NUMERO TRA 0 e 999\n");
}
} while(numeroVani >= 0 && numeroVani <=999);
return numeroVani;
}
Posizione inserisciPosizione(){
Posizione posizioneImmobile;
printf("Inserisci la regione dell'immobile\n");
scanf("%s", posizioneImmobile.regione);
printf("Inserisci il comune dell'immobile\n");
scanf("%s", posizioneImmobile.comune);
printf("Inserisci la via dell'immobile\n");
scanf("%s", posizioneImmobile.via);
do{
printf("Inserisci il numero civico dell'immobile\n");
scanf("%d", &posizioneImmobile.numeroCivico);
if(posizioneImmobile.numeroCivico >999 || posizioneImmobile.numeroCivico < 1){
printf("ERRORE, INSERISCI UN NUMERO COMPRESO TRA 1 E 999\n");
}
}while (posizioneImmobile.numeroCivico <=999 && posizioneImmobile.numeroCivico>=1);
return posizioneImmobile;
}
int inserisciNumeroVerande(){
int numeroVerande;
do{
printf("Inserisci il numero delle verande dell'immobile\n");
scanf("%d", &numeroVerande);
if(numeroVerande < 0 || numeroVerande > 999){
printf("ERRORE, INSERISCI UN NUMERO COMPRESO TRA 0 E 999\n");
}
} while(numeroVerande >= 0 && numeroVerande <= 999);
return numeroVerande;
}
Tipologia inserisciTipologia(){
Tipologia tipoImmobile;
do{
printf("Inserisci una tipologia dell'immobile:\n");
printf("[0]Indipendente [1]Semi-Indipendente [2]Appartamento [3]Altro\n");
scanf("%d",&tipoImmobile);
if(tipoImmobile != 0 && tipoImmobile != 1 && tipoImmobile != 2 && tipoImmobile != 3){
printf("ERRORE, INSERISCI UN ENUMERAZIONE VALIDA\n");
}
}while(tipoImmobile == 0 || tipoImmobile == 1 || tipoImmobile == 2 || tipoImmobile == 3);
return tipoImmobile;
}
_Bool inserisciAscensore(){
int ascensore;
do{
printf("Indica se e' presente l'ascensore\n");
printf("[0]FALSO [1]VERO\n");
scanf("%d", &ascensore);
if(ascensore != 0 && ascensore != 1){
printf("ERRORE, INSERISCI IL NUMERO CORRISPONDENTE A VERO O FALSO\n");
}
}while(ascensore == 0 || ascensore == 1);
return ascensore;
}
_Bool inserisciPostoAuto(){
int postoAuto;
do{
printf("Indica se e' presente il posto auto\n");
printf("[0]FALSO [1]VERO\n");
scanf("%d", &postoAuto);
if(postoAuto != 0 && postoAuto != 1){
printf("ERRORE, INSERISCI IL NUMERO CORRISPONDENTE A VERO O FALSO\n");
}
}while(postoAuto == 0 || postoAuto == 1);
return postoAuto;
}
_Bool inserisciScantinato(){
int scantinato;
do{
printf("Indica se e' presente lo scantinato\n");
printf("[0]FALSO [1]VERO\n");
scanf("%d", &scantinato);
if(scantinato != 0 && scantinato != 1){
printf("ERRORE, INSERISCI IL NUMERO CORRISPONDENTE A VERO O FALSO\n");
}
}while(scantinato == 0 || scantinato == 1);
return scantinato;
}
_Bool inserisciGiardino(){
int giardino;
do{
printf("Indica se e' presente il giardino\n");
printf("[0]FALSO [1]VERO");
scanf("%d", &giardino);
if(giardino != 0 && giardino != 1){
printf("ERRORE, INSERISCI IL NUMERO CORRISPONDENTE A VERO O FALSO\n");
}
} while (giardino == 0 || giardino == 1);
return giardino;
}
UsoImmobile inserisciUsoImmobile(){
UsoImmobile usoImmobile;
do{
printf("Inserisci l'uso dell'immobile:\n");
printf("[0]Abitativo [1]Ufficio [2]Locale Commerciale\n");
scanf("%d",&usoImmobile);
if(usoImmobile != 0 && usoImmobile != 1 && usoImmobile != 2){
printf("ERRORE, INSERISCI UN VALORE DELL'ENUMERAZIONE\n");
}
}while (usoImmobile == 0 || usoImmobile == 1 || usoImmobile == 2);
return usoImmobile;
}
StatoImmobile inserisciStatoImmobile(){
StatoImmobile statoImmobile;
do{
printf("Inserisci lo stato dell'immobile:\n");
printf("[0]Nuovo [1]Ristrutturato [2]Parzialmente Ristrutturato [3]Da Ristrutturare [4]Rudere\n");
scanf("%d",&statoImmobile);
if(statoImmobile != 0 && statoImmobile != 1 && statoImmobile != 2 && statoImmobile != 3 && statoImmobile != 4){
printf("ERRORE, INSERISCI UN VALORE DELL'ENUMERAZIONE\n");
}
} while (statoImmobile == 0 || statoImmobile == 1 || statoImmobile == 2 || statoImmobile == 3 || statoImmobile == 4);
return statoImmobile;
}
void calcoloCodiceID(char codiceID[], char regione[], char comune[]){
int i;
codiceID[0] = toupper(regione[0]);
codiceID[1] = toupper(regione[1]);
codiceID[2] = toupper(comune[0]);
codiceID[3] = toupper(comune[1]);
codiceID[4] = rand()%10;
codiceID[5] = rand()%10;
codiceID[6] = rand()%10;
codiceID[7] = rand()%10;
codiceID[8] = rand()%10;
printf("E'STATO GENERATO IL CODICE IDENTIFICATIVO:\n");
for(i=0; i<9; i++){
printf("%c", codiceID[i]);
}
}
void inserisciImmobile(Immobile* immobile){
immobile->prezzo = inserisciPrezzo();
immobile->metriQuadri = inserisciMetriQuadri();
immobile->numeroVani = inserisciNumeroVani();
immobile->posizioneImmobile = inserisciPosizione();
calcoloCodiceID(immobile->codiceID, immobile->posizioneImmobile.regione, immobile->posizioneImmobile.comune);
immobile->numeroVerande = inserisciNumeroVerande();
immobile->tipologiaImmobile = inserisciTipologia();
immobile->ascensore = inserisciAscensore();
immobile->postoAuto = inserisciPostoAuto();
immobile->scantinato = inserisciScantinato();
immobile->giardino = inserisciGiardino();
immobile->usoImmobile = inserisciUsoImmobile();
immobile->statoImmobile = inserisciStatoImmobile();
}
inserimento.h
#ifndef PROGETTO_B_INSERIMENTO_H
#define PROGETTO_B_INSERIMENTO_H
#include "main.h"
void inserisciImmobile(Immobile* immobile);
int inserisciPrezzo();
float inserisciMetriQuadri();
int inserisciNumeroVani();
Posizione inserisciPosizione();
int inserisciNumeroVerande();
Tipologia inserisciTipologia();
_Bool inserisciAscensore();
_Bool inserisciPostoAuto();
_Bool inserisciScantinato();
_Bool inserisciGiardino();
UsoImmobile inserisciUsoImmobile();
StatoImmobile inserisciStatoImmobile();
void calcoloCodiceID(char codiceID[], char regione[], char comune[]);
#endif //PROGETTO_B_INSERIMENTO_H