Accedi

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:

  1. le lunghezze delle basi e delle altezze acquisite;
  2. le aree ed I perimetri dei 3 rettangoli;
  3. 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;
}