[Ajuda] C++/CLI

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

[Ajuda] C++/CLI

Mensagempor Jedi Gu@rdi@n » Sábado Mar 21, 2009 21:02

Boas tou a criar um programa e deparei-me com uns erros k n entendo de onde vem :P

Da erro no ciclo "for" e tenho a certeza k esta bem feito.
E diz k tenho variaveis k n estao declarads e k estao.
Precisava k me ajudassem sff.


Código: Seleccionar todos
using namespace System;

void menu();
int funcao_validar_peso(float peso);
float ler_peso();
int funcao_validar_racao(float racao);
float ler_racao();
float funcao_processo(float peso);


void main()
{

   char opcao;
   int x, i;
   String ^tamanho;
   float erro, rcorrecta;
   array<int> ^racas = gcnew array<int> (4);

do
{
   menu();
   opcao=char::Parse(Console::ReadLine());
   if (opcao=='1')
   {
      Console::WriteLine("Quantos animais deseja inserir?");
      x = int::Parse(Console::ReadLine());
      array<float> ^peso = gcnew array<float> (x);
      array<float> ^racao = gcnew array<float> (x);
      
      Console::WriteLine("Qual a raca do animal?");
      tamanho = Console::ReadLine();
      String^ ToLower(tamanho);
      
      do{
         if (tamanho=="pequena")
         {
            racas[0]=racas[0]+1;
         }
         else if (tamanho=="media")
         {
            racas[1]=racas[1]+1;   
         }
         else if (tamanho=="grande")
         {
            racas[2]=racas[2]+1;
         }
         else if (tamanho=="gigante")
         {
            racas[3]=racas[3]+1;   
         }
         else
            Console::WriteLine("Por favor escolha uma raca valida (pequena,media,grande ou gigante");
      while (tamanho!="pequena" && tamanho!="media" && tamanho!="grande" && tamanho!="gigante");
      }   

      for(int i=0;i<x;i++)
      {
         peso[i] = ler_peso();   
         racao[i]= ler_racao();
         
      }
   
   }
      else if(opcao=='2')
      {       
           
                for(int i=0;i<x;i++)
            {     
                    Console::WriteLine("{0} o. animal\n",(i+1));
                 rcorrecta = funcao_processo(peso[i]);
                   
                    Console::WriteLine ("A racao correcta e: {0} gramas \n", rcorrecta);
                 if (racao[i] > rcorrecta)
                 {
                  erro = (racao[i] - rcorrecta);
                  Console::WriteLine ("Racao dada excede em {0} gramas \n", erro);
                 }
                 else if (racao[i] < rcorrecta)
                 {
                 erro = (rcorrecta - racao[i]);
                 Console::WriteLine ("Racao insuficiente em {0} gramas \n", erro);
                 }
                 else
               {
                   Console::WriteLine ("Racao dada correctamente! \n");
               }

            }
      }
         else if(opcao!='3')
         Console::WriteLine("Digite uma opcao valida!\n");
      
     }
      while(opcao!='3');       
}



/////////////funcoes utilizadas pelo programa principal//////////////////

void menu(){
     //System("cls");
     Console::WriteLine ("*************CANIL**************\n");
     Console::WriteLine ("** 1 - inserir dados          **\n");
     Console::WriteLine ("** 2 - calcular               **\n");
     Console::WriteLine ("** 3 - sair                   **\n");
     Console::WriteLine ("********************************\n\n");
     Console::WriteLine ("Digite a sua opcao: ");
}



int funcao_validar_peso(float peso)
{
   if (peso>0)
   {
      return 1;
   }
   else
   {
      return 0;
   }
}



float ler_peso()
{
    float peso;

    do{
           Console::WriteLine("Digite o peso: ");
         peso = float::Parse(Console::ReadLine());
    }       
   while (funcao_validar_peso(peso) == 0);
   return peso;   
}



int funcao_validar_racao(float racao)
{
   if (racao>0)
   {
      return 1;
   }
   else
   {
      return 0;
   }
}

   
float ler_racao()
{
    float racao;

    do{
      Console::WriteLine("Digite a racao: ");
        racao = float::Parse(Console::ReadLine());
    }       
   while (funcao_validar_peso(racao) == 0);
   return racao;   
}



float funcao_processo(float peso, String ^tamanho)
{
      float racao_correcta,pmedio;
        int rmedia;

       
      if (peso <= 10)
      {
         rmedia = 100;
         pmedio=5;
      }
      else if (peso >10 && peso <=25)
      {
         rmedia = 250;
         pmedio=7;
      }
      else if (peso >25 && peso <=45)
      {
         rmedia = 400;
         pmedio=9.5;
      }
      else if (peso >45)
      {
         rmedia = 500;
      }



         if (tamanho=="pequena" && pmedio<5)
         {
            racao_correcta=(rmedia-(0.005*peso*1000));   
         }
         else if (tamanho=="pequena" && pmedio>5)
         {
            racao_correcta=(rmedia+(0.005*peso*1000));      
         }
         else if (tamanho=="media" && pmedio<7)
         {
            racao_correcta=(rmedia-(0.005*peso*1000));   
         }
         else if (tamanho=="media" && pmedio>7)
         {
            racao_correcta=(rmedia+(0.005*peso*1000));      
         }
         else if (tamanho=="grande" && pmedio<9.5)
         {
            racao_correcta=(rmedia-(0.005*peso*1000));
         }
         else if (tamanho=="grande" && pmedio>9.5)
         {
            racao_correcta=(rmedia+(0.005*peso*1000));
         }
         else if (tamanho=="gigante")
         {
            racao_correcta=(rmedia+(0.005*peso*1000));
         }

         return (racao_correcta);
   
}





Erros:
Código: Seleccionar todos
Error   1   error C2059: syntax error : 'for'   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   57
Error   2   error C2065: 'i' : undeclared identifier   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   57
Error   3   error C2065: 'i' : undeclared identifier   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   57
Error   4   error C2143: syntax error : missing ';' before ')'   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   57
Error   5   error C2143: syntax error : missing ';' before ')'   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   57
Error   6   error C2143: syntax error : missing ';' before '{'   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   58
Error   7   error C2065: 'i' : undeclared identifier   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   59
Error   8   error C3262: invalid array indexing: -1 dimension(s) specified for 1-dimensional 'cli::array<Type> ^'   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   59
Error   9   error C2065: 'i' : undeclared identifier   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   60
Error   10   error C3262: invalid array indexing: -1 dimension(s) specified for 1-dimensional 'cli::array<Type> ^'   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   60
Error   11   error C2065: 'peso' : undeclared identifier   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   71
Error   12   error C2065: 'racao' : undeclared identifier   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   74
Error   13   error C2065: 'racao' : undeclared identifier   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   76
Error   14   error C2065: 'racao' : undeclared identifier   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   79
Error   15   error C2065: 'racao' : undeclared identifier   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   81
Error   16   error C2181: illegal else without matching if   c:\Users\Bruno\Documents\Visual Studio 2008\Projects\loja\loja\loja.cpp   90



Quem poder corre isto num compilador para verificar se qual e o problema disto era porreiro.


Abraço ;)
Editado pela última vez por Jedi Gu@rdi@n em Sábado Mar 21, 2009 23:13, num total de 1 vez.
Imagem
Jedi Gu@rdi@n
Membro de Prata
Membro de Prata
 
Mensagens: 401
Registado: Domingo Mar 13, 2005 19:36

Mensagempor Jedi Gu@rdi@n » Sábado Mar 21, 2009 22:37

Experimentei comentar o ciclo do...while p ver o k dava, e n e k o ciclo for ja n da erro.
Se tiver o do...while a dar, no output do "for" dá isto ( '<' operator has no effect; expected operator with side-effect).


Podiam dizer-me o porque disto??


Cumps ;)


Edit: Axo k o problema do "for" ta resolvido, so falta resolver o problema das variaveis k aparecem como se n estivesse definidas e estao.



O erro dá aqui nas variaveis peso e racao (neste caso sao vectores definidos no incio do programa).

Código: Seleccionar todos
else if(opcao=='2')
      {       
           
                for(int i=0;i<x;i++)
            {     
                    Console::WriteLine("{0} o. animal\n",(i+1));
                 rcorrecta = funcao_processo(peso[i]);
                   
                    Console::WriteLine ("A racao correcta e: {0} gramas \n", rcorrecta);
                 if (racao[i] > rcorrecta)
                 {
                  erro = (racao[i] - rcorrecta);
                  Console::WriteLine ("Racao dada excede em {0} gramas \n", erro);
                 }
                 else if (racao[i] < rcorrecta)
                 {
                 erro = (rcorrecta - racao[i]);
                 Console::WriteLine ("Racao insuficiente em {0} gramas \n", erro);
                 }
                 else
               {
                   Console::WriteLine ("Racao dada correctamente! \n");
               }

            }
      }
         else if(opcao!='3')
         Console::WriteLine("Digite uma opcao valida!\n");



Foram definidos aki os vectores:

Código: Seleccionar todos
Console::WriteLine("Quantos animais deseja inserir?");
      x = int::Parse(Console::ReadLine());
      array<float> ^peso = gcnew array<float> (x);
      array<float> ^racao = gcnew array<float> (x);



Agora, nao sei se e ignorancia minha, mas penso k estando declarados os vectore n devia dar o erro de nao estarem declarados.
Am I right???
Imagem
Jedi Gu@rdi@n
Membro de Prata
Membro de Prata
 
Mensagens: 401
Registado: Domingo Mar 13, 2005 19:36


Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron