Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) este programa executou uma operação ilegal e precisa ser f


NatinDF

Pergunta

erro.jpg

sempre que tento acessar o case 3 ou o case 4(que são cópias um do outro), aparece a imagem de erro do windows. segue o código:

#include <cstdlib>
#include <iostream>

using namespace std;
////////////////////////////////////////////////////////////////////////////////
int tamanho_vetor(int tamanho)
{
     printf("\ninforme o tamanho do vetor: \n");
     scanf("%d",&tamanho);
     return tamanho;
}
////////////////////////////////////////////////////////////////////////////////
int busca(int *vetor, int Busca, int tamanho)
{
   for(int i=0; i<tamanho; i++)
   {

           if(Busca == vetor[i])
                    return i; //valor foi localizado no vetor na posição i
   }
   return -1; //valor não localizado no vetor
}
////////////////////////////////////////////////////////////////////////////////
void  mult_k(int *vetor, int k, int  tamanho)
{
      for (int i=0; i<tamanho; i++)
      {
          vetor[i]=vetor[i]*k;
      }
      
}
////////////////////////////////////////////////////////////////////////////////
int maior(int *vetor, int tamanho, int Maior)
{
    for (int i=0; i<tamanho; i++)
      {
                 if(vetor[i]>Maior)
                 {
                                   Maior=vetor[i];
                 }
      }
      return Maior;
}
////////////////////////////////////////////////////////////////////////////////
int menor(int *vetor, int tamanho, int Menor)
{
    for (int i=0; i<tamanho; i++)
      {
                 if(vetor[i]>Menor)
                 {
                                   Menor=vetor[i];
                 }
      }
      return Menor;
}
////////////////////////////////////////////////////////////////////////////////
int main()
{
    int op;
    printf("                       feito por Jose Renato da Silva Barros\n");
    printf("\nESCOLHA UM PROCEDIMENTO\n\n 1 - Buscar no vetor\n 2 - Multiplica vetor");
    printf("\n 3 - Maior valor no vetor\n 4 - Menor valor do vetor\n\n ");
    scanf("%d",&op);

    switch (op)
      {
        case 1:
          {
            int tamanho;
            tamanho=tamanho_vetor(tamanho);
            int vetor[tamanho], Busca;
            for (int i=0; i<tamanho; i++)
            {
             printf("\ninforme um valor para a posicao %d: ",i);
             scanf("%d",&vetor[i]);
            }
            printf("\ninforme o valor a ser buscado: \n");
            scanf("%d",&Busca);
            int resposta=busca(vetor, Busca, tamanho);
            if (resposta != -1)
            printf("o numero %d esta no indice: %d \n",Busca ,resposta);
            else
            printf("o numero %d não foi localizado no vetor.\n",Busca);
          }
        break;
        case 2:    
         {    
          int tamanho;
          tamanho=tamanho_vetor(tamanho);
          int vetor[tamanho],k;
          for (int i=0; i<tamanho; i++)
          {
              printf("\ninforme um valor para a posicao %d: ",i);
              scanf("%d",&vetor[i]);
          }
          printf("\ninforme o valor a multiplicar: \n");
          scanf("%d",&k);
//          mult_k(&vetor, k, tamanho)
         }
       break;  
       case 3:
           {
              int vetor,tamanho,Maior;
              int resposta=maior(&vetor, tamanho, Maior);
              printf("o maior numero digitado foi: %d",resposta);
           }
       break;
       case 4:
           {
              int vetor,tamanho,Menor;
              int resposta=menor(&vetor, tamanho, Menor);
              printf("o menor numero digitado foi: %d",resposta);
           }
       break;
     }
          
     system("PAUSE");
   
   return EXIT_SUCCESS;
}

fico muito grato com as colaborações. imagino que seja um problema besta mas não acho.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

No case 3 você tá passando um inteiro pensando que é um vetor para a função.

...
              int vetor,tamanho,Maior;   <= Tinha que declarar vetor[tamanho]
              int resposta=maior(&vetor, tamanho, Maior);
              printf("o maior numero digitado foi: %d",resposta);
...

Conserta ai depois posta o resultado. Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

deixei assim:

case 3:
           {
              int tamanho;
              tamanho=tamanho_vetor(tamanho);
              int vetor[tamanho],Maior;
              int resposta=maior(&vetor, tamanho, Maior);  // <- NESTA PARTE
              printf("o maior numero digitado foi: %d",resposta);
           }

e o dev retornou:

cannot convert 'int(*)[((unsigned int)((int)tamanho))]' to 'int*' for argument '1' to 'int maior(int*,int,int)'

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...