Usando medidas de comprimento

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

[ Hits: 5.420 ]

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

Rand_bg

Simple Pomerode Time Counter

Leitura de Senhas

Calculadora elementar com ponto flutuante

Função fatorial recursiva


  

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