Calcolo piastrelle di una stanza mediante programma in C

di il
6 risposte

Calcolo piastrelle di una stanza mediante programma in C

Salve,
sono nuovo nel forum e anche nella programmazione in C in quanto iniziata da un mesetto a scuola.
il prof ha assegnato il compito di scrivere un programma in C che acquisendo i 2 lati di una stanza (rettangolare) e un lato di una piastrella(quadrata)
calcoli quante piastrelle servono in totale,quante piastrelle devono essere tagliate e se si possono riutilizzare gli scarti(in questo caso utilizzarli nel calcolo).

non riesco a capire perche quando faccio i calcoli per le piastrelle da riutilizzare ne lato x vengono corretti ,invece nel lato y no

variabili:
pilx piastrelle intere per il lato x
pily piastrelle intere per il lato y
prx
pry
scartox sfrido sul lato x
scartoy sfrido sul lato y
lp lato una piastrella
lx lato x della stanza
ly lato y della stanza
sprecox pezzi delle piastrelle tagliate sul lato x da buttare
sprecoy pezzi delle piastrelle tagliate sul lato y da buttare
ptot piastrelle totali
pit piastrelle totali intere
pdt piastrelle da tagliare
ppsx piastrelle per o scarto sul lato x
ppsy piastrelle per lo scarto sul lato y


int main(int argc, char *argv[]) {
	
	int pilx,pily,prx,pry;
	float scartox,scartoy,lp,lx,ly,sprecox,sprecoy,ptot,pit,pdt,ppsx,ppsy;
	printf("\n\n");
	printf("===============================================================================\n");
	printf("\t   inserire primo lato della stanza in metri.....");
	scanf("%f",&lx);
	printf("\t   inserire secondo lato della stanza in metri...");
	scanf("%f",&ly);
	printf("\t   inserire lato della piastrella in centimetri..");
	scanf("%f",&lp);
	printf("\n");
	printf("===============================================================================\n\n");
	lp=lp/100;
	pilx=lx/lp;
	pily=ly/lp;
	scartox=lx-(lp*pilx);
	scartoy=ly-(lp*pily);
	if((scartox!=0) && (scartoy!=0))
	{
	prx=lp/scartox;
	pry=lp/scartoy;
	sprecox=lp-scartox;
	sprecoy=lp-scartoy;
	ppsx=(lx/lp)/prx;
	printf("\t piastrelle utilizzate per lo scarto primo lato......%.0f\n",ppsx);
	ppsy=((ly/lp)/pry)-1;
	printf("\t piastrelle utilizzate per lo scarto secondo lato....%.0f\n",ppsy);
	pdt=1+(ppsx+ppsy);
	printf("\t piastrelle tagliate.................................%.0f\n",pdt);
    }
    else
    {
    printf("\n\t nessuna piastrella da tagliare\n");	
	}
	pit=pilx*pily;
	printf("\t numero piastrelle intere............................%.0f\n",pit);
	ptot=(pit+pdt);
	printf("\t numero tot piastrelle...............................%.0f\n",ptot);
	system("pause");
	return 0;
}



mi scuso se ho sbagliato qualcosa nell'inserzione del post,come scritto prima sono nuovo nel forum

6 Risposte

  • Re: Calcolo piastrelle di una stanza mediante programma in C

    Ciao
    sinceramente non ho capito la logica che hai usato!
    secondo me ti sei complicato parecchio la vita
    perchè secondo me il problema lo avresti dovuto risolvere in questo modo:
    1) ti calcoli l'area della stanza che normalmente e un rettangolo.
    2) ti calcoli l'area occupata dalla mattonella che dai dati che vai ad accettare è un quadrato
    3) poi determini quante mattonelle entrano nella stanza dividendo le 2 aree
    dove il risultato parte intera sara il numero di mattonelle usate
    spero di esserti stato di aiuto
  • Re: Calcolo piastrelle di una stanza mediante programma in C

    Smalldragon, il problema non è affatto semplice come l'hai posto tu.

    Predi per esempio uno sgabuzzino di 1x1m con piastrella da 30cm. La superficie da pavimentare è di 1mq, l'area della piastrella è di 0.3x0.3m=0.09mq.

    Secondo la tua soluzione ci vogliono 1 /0.09 = 11.11 --> 11 piastrelle + 1 tagliata da 0.11 x 0.09 = 0.01mq

    In realtà te ne servono n.9 intere, n.6 10x30cm ed n.1 10x10cm ovvero 9 + 6 + 1 = 16 piastrelle ed avanzano n.7 piastrelle tagliate da buttare (0.44mq).
    Siccome non siamo spreconi, in questo caso le n.6 mattonelle 10x30cm possono essere ricavate da n.3 piastrelle, così le piastrelle necessarie passano a n.13 con n.4 piastrelle da buttare (0.17mq).
  • Re: Calcolo piastrelle di una stanza mediante programma in C

    Ciao
    il fatto che le piastrelle siano 10X30 non lo si capiva ne dal testo ne dal listato infatti
    nel testo dici
    "il prof ha assegnato il compito di scrivere un programma in C che acquisendo i 2 lati di una stanza (rettangolare) e un lato di una piastrella(quadrata)"
    e nel codice
    accetti solo 3 dati di input!
    comunque anche invertendo i dati la logica non cambia di molto!
    perchè prima era;
    1) ti calcoli l'area della stanza che normalmente e un rettangolo.
    2) ti calcoli l'area occupata dalla mattonella che dai dati che vai ad accettare è un quadrato
    3) poi determini quante mattonelle entrano nella stanza dividendo le 2 aree
    adesso diventa
    1) ti calcoli l'area]] della stanza quadrato
    2) ti calcoli l'area occupata dalla mattonella rettangolo
    3) poi determini quante mattonelle entrano nella stanza dividendo le 2 aree
    comunque se non ti fidi e non trovi qui la risposta che cercavi
    fatti spiegare meglio dal prof. la logica che devi usare
    per quanto riguarda l'esempio che hai fatto:
    area stanza = [1^2] = 1M
    area mattonella = [0,30 * 0,10] 0,03cm
    n mattonelle = area stanza / area mattonella = [1/0,03]= 33 mattonelle + 1 da sezionare
    nel caso pratico però
    avremo 30 mattonelle intere e 4 da tagliare
    << prova su un foglio a quadretti e noterai >>
    le prime tre dovranno essere tagliate ad 1/3 mentre la quarta 1/3 verrà usata mentre i 2/3 verranno buttati!
    comunque spero di esserti stato d'aiuto
  • Re: Calcolo piastrelle di una stanza mediante programma in C

    Perché non controllate meglio l'autore del post prima di rispondere?
  • Re: Calcolo piastrelle di una stanza mediante programma in C

    Nippolo ha scritto:


    Perché non controllate meglio l'autore del post prima di rispondere?
    hai ragione!
  • Re: Calcolo piastrelle di una stanza mediante programma in C

    Grazie per l'aiuto che mi avete dato ala fine ho discusso con il professore e mi ha spiegato che al posto di utilizzare normali divisioni di utilizzare le divisioni con il resto e verificare se il resto del primo lato è maggiore di 5 uso una piastrella intera altrimenti ne posso usare la metà di conseguenza sono riuscito a risolvere il preblema
Devi accedere o registrarti per scrivere nel forum
6 risposte