Usando medidas de comprimento

Publicado por euteste da silva (última atualização em 28/01/2011)

[ Hits: 5.402 ]

Download mcomprimento.c




Programa que faz transformação de uma unidade em uma unidade menor ou maior.

  



Esconder código-fonte

/*
 * Programa que trabalha com medidas de comprimento.
 * Como compilar:  gcc mcomprimento.c mcomprimento  
 * Data: 23/dez/2010 - Autor: foxbit3r
 *
 * Exemplo:    
 * Informe o comprimento em (km|hm|dam|m|dm|cm|mm)? 1m
 * Transformar em (km|hm|dam|m|dm|cm|mm)? cm
 * Resposta: 100.000000
 *
*/

#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>

enum { km, hm, dam, m, dm, cm, mm } unidades;

int unidadeInformada( char  sUnid[] ) {

   if(strcmp(sUnid,"km")==0)
       return(km);
     else if(strcmp(sUnid,"hm")==0)
       return(hm);
     else if(strcmp(sUnid,"dam")==0)
       return(dam);
     else if(strcmp(sUnid,"m")==0)
       return(m);
     else if(strcmp(sUnid,"dm")==0)
       return(dm);
     else if(strcmp(sUnid,"cm")==0)
       return(cm);
     else if(strcmp(sUnid,"mm")==0)
       return(mm);
}

main() {


     char strm1[256], im1[256], sUnidade[3],*p;
     char sUnidade2[5];

     int i, valUnidade, valUnidade2, acumDez;
     double val;
     

     printf("Informe o comprimento em (km|hm|dam|m|dm|cm|mm)? ");
     gets(strm1);
     printf("Transformar em (km|hm|dam|m|dm|cm|mm)? ");
     gets(sUnidade2);

     valUnidade2 = unidadeInformada(sUnidade2); 
         
     i=0;
     p = strm1;
     while(isdigit(strm1[i])|| strm1[i]=='.'){
        i++;
        p++;
      }
   
     strncpy(im1,strm1,i);
     im1[i]='{FONTE}';
     val = atof(im1);
     strcpy(sUnidade,p);
     valUnidade = unidadeInformada(sUnidade); 

     acumDez = 1;
     if(valUnidade < valUnidade2) {
           valUnidade+=1;
           for(i = valUnidade; i <= valUnidade2; i++)
              acumDez *= 10;
           val = val * acumDez;
      }
    else {        
           valUnidade2+=1;
           for(i = valUnidade; i >= valUnidade2; i--)
              acumDez *= 10;
           val = val / acumDez;

   }
    printf("Resposta: %f\n",val);
}

Scripts recomendados

Banco em C

Angelinux Scripts - Palpite para Megasena em C

Despertador em C

Gerando uma "number list" de 6 digitos

Desenhando uma curva de Bézier


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts