3 rettangoli
PROBLEMA
Scrivere un programma in "C" che acquisiti da tastiera le lunghezze della base e dell’alatezza di 3 rettangoli restituisce a video:
- le lunghezze delle basi e delle altezze acquisite;
- le aree ed I perimetri dei 3 rettangoli;
- rdina in maniera decrescente aree e perimetri.
(utilizzare per l’input e per l’output array)
CODICE SORGENTE
#include <stdio.h>
#include <stdlib.h>
#define NUMERO_RETTANGOLI 3
int main(int argc, char *argv[]){
//sezione dichiarativa
int i, j;
int temp1, temp2, temp3, temp4;
int altezza[NUMERO_RETTANGOLI];
int base[NUMERO_RETTANGOLI];
int perimetro[NUMERO_RETTANGOLI];
int area[NUMERO_RETTANGOLI];
for(i=0;i<NUMERO_RETTANGOLI;i++){
system("cls");
printf("Altezza del rettangolo numero: %i\n>", i+1);
scanf("%i", &altezza[i]);
do{
printf("[!] Valore diverso dall'altezza\n");
printf("Base del rettangolo numero: %i\n>", i+1);
scanf("%i", &base[i]);
}while(base==altezza);
}
//calcolo perimetro
for(i=0;i<NUMERO_RETTANGOLI;i++){
perimetro[i]=(altezza[i]+base[i])*2;
}
//calcolo area
for(i=0;i<NUMERO_RETTANGOLI;i++){
area[i]=altezza[i]*base[i];
}
//scambio di variabile per ordine decrescente
for(i=0;i<NUMERO_RETTANGOLI-1;i++){
for(j=i+1;j<NUMERO_RETTANGOLI;j++){
if(perimetro[j]>perimetro[i]){
temp1=perimetro[i];
temp2=area[i];
temp3=altezza[i];
temp4=base[i];
perimetro[i]=perimetro[j];
area[i]=area[j];
altezza[i]=altezza[j];
base[i]=base[j];
perimetro[j]=temp1;
area[j]=temp2;
altezza[j]=temp3;
base[j]=temp4;
}
}
}
//sezione di output
system("cls");
for(i=0;i<NUMERO_RETTANGOLI;i++){
printf("Rettagolo --> %i Altezza: %i, Base: %i, Perimetro: %i, Area: %i\n", i+1, altezza[i], base[i], perimetro[i], area[i]);
}
system("PAUSE");
return 0;
}