• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fezinn

[Ajuda] Optimizar Código

11 mensagens neste tópico

Olá pessoal! Gostaria de saber o meu erro neste código:

main(){
       int opcao,opcaoc1,opcaot1,opcaov1,;
       double mm,cm,km,m,valorc,valort,valorv,s,min,h,dia,mes,ano,kmh,ms;
       char medida[12]="quilometros";

       
       
    
       printf("\t   - MENU -\n\n");
       printf("   1 - Conversao de Comprimento\n");
       printf("   2 - Conversao de Tempo\n");
       printf("   3 - Conversao de Velocidade\n");
       scanf("%d",&opcao);
       scanf("%*[^\n]"); scanf("%*c");

       
       switch (opcao){
              case 1:
                   system("cls");
                   printf("\n\t\t\t- CONVERSAO DE COMPRIMENTO -\n\n\n\n\n");

                   printf("   > Qual o valor que se deseja converter? ");
                   scanf("%lf",&valorc);
                   scanf("%*[^\n]"); scanf("%*c");
                   
                   printf("\n\n\n   > Qual a unidade de medida deste valor?\n");
                   printf("\n   1 - Milimetros");
                   printf("\n   2 - Centimetros");
                   printf("\n   3 - Metros");
                   printf("\n   4 - Quilometros\n");
                   scanf("%d",&opcaoc1);
                   scanf("%*[^\n]"); scanf("%*c");
                   
                          switch (opcaoc1){
                                 case 1:
                                      km=valorc/1000000;
                                      cm=valorc/10;
                                      m=valorc/1000;
                                      mm=valorc;
                                      medida='quilometros'; // O ERRO ESTÁ AQUI SEGUNDO O COMPILADOR                          
                                     
                                 break;
                                 case 2:
                                      mm=10*valorc;
                                      m=valorc/100;                        
                                      km=valorc/100000;
                                      cm=valorc;
                                   
                                 break;
                                 case 3:
                                      mm=valorc*10000;
                                      cm=valorc/100;
                                      km=valorc/1000;
                                      m=valorc;
                                    
                                 break;
                                 case 4:
                                      mm=valorc*1000000;
                                      cm=valorc*100000;
                                      m=valorc*1000;
                                      km=valorc;
                                      
                                 break;
                                 default:
                      printf("\n\n  Opcao invalida! Reinicie programa...\n\n");
                                 break;
                                 }
                   
                               system("cls");
                               printf("\n\n\n\n\n   Resultados obtidos para %lf%s\n\n   Em milimetros: a %.2lfmm\n",valorc,medida,mm);
                               printf("   Em centimetros: %lfcm\n",cm);
                               printf("   Em metros: %lfm\n",m);
                               printf("   Em quilometros: %lfkm\n\n",km);
                     system("PAUSE");     
                     break;
}// E o código continua, mas o erro é aqui ...

Quando o programa vai imprimir "\n\n\n\n\n  Resultados obtidos para %lf%s\n\n  Em milimetros: a %.2lfmm\n",valorc,medida,mm)" o programa dá erro, e fecha. O que aconteceu?

Obrigado desde já!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O erro é bastante óbvio. Mas antes de alguém te dizer qual é o problema, precisas de colocar aqui a mensagem de erro do compilador. Quando vamos pedir ajuda temos que indicar toda a informação acerca do nosso problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dá aquele problema do Windows: Enviar Relatório de Erros...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Devias fazer debug em vez de executar. Ajudava-te a compreender onde está o erro e possivelmente a corrigi-lo :thumbsup:

Devias também ler sobre caracteres e strings em c (sobretudo como copiar cadeias de caracteres), e a diferença entre aspas e plicas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

assim sem preceber nada de C diria que isto: medida='quilometros'

é assim: medida="quilometros"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

assim sem preceber nada de C diria que isto: medida='quilometros'

é assim: medida="quilometros"

Já fiz isso, não mudou nada. =/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já fizeste debug para descobrir em que linha acontece o erro...?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Microsoft Visual C++ Compiler:

1>------ Build started: Project: Conversor de Medidas, Configuration: Debug Win32 ------

1>Linking...

1>LINK : fatal error LNK1561: entry point must be defined

1>Build log was saved at "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\Project1\Conversor de Medidas\Conversor de Medidas\Debug\BuildLog.htm"

1>Conversor de Medidas - 1 error(s), 0 warning(s)

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Bloodshed Dev C++:

Line: 50:46 C:\Documents and Settings\Administrator\Desktop\Stuff\Programação\Programas\Conversor.cpp [Warning] character constant too long for its type

C:\Documents and Settings\Administrator\Desktop\Stuff\Programação\Programas\Conversor.cpp In function `int main()':

Line: 50 C:\Documents and Settings\Administrator\Desktop\Stuff\Programação\Programas\Conversor.cpp incompatible types in assignment of `int' to `char[12]'

A linha 50 é esta (LINE 50): medida='quilometros';  --> Eu já coloquei entre aspas normais, e dá isso:

Line: 50 C:\Documents and Settings\Administrator\Desktop\Stuff\Programação\Programas\Conversor.cpp ISO C++ forbids assignment of arrays

O que eu faço?! Algum problema quando declarei a string? O que é?!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora