Usando medidas de comprimento

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

[ Hits: 5.719 ]

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

Simple Pomerode Time Counter

Teste de desempenho com números primos em C

Um pouco de fisica

OpenGL - Planeta em Órbita

Cálculo de Fatorial usando Loop


  

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