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