Ir ao conteúdo
  • Cadastre-se

Dúvida em C na construção de vetores


Ronimar

Posts recomendados

Ola pessoal bom dia.Estou apredendo C , e uma parte do meu exercicio é criar um menu para inserir funcionario e a outra é exibir estes funcionarios já cadastrados . Mas não to conseguindo fazer o Case 2 que é a parte de exibir funcionario,na qual a pessoa digita um codigo de um funcionário ja cadastrado e exbibe as informações dele segue o codigo 

 case 2:        {          printf("Informe o codigo do funcionario");          scanf("%d",&codigoconsultado);                   for (i = 0 ; i<1 ; i++)         {                      if (strstr(cadastro[i]].nome,codigoconsultado)           {            printf("Codigo do funcionario %d" , codigo[i]);           printf("Nome do funcionario %s" , nome[i]);           printf("Salario do funcionario %f" , salario[i]);                               }//FIM DO SE CONSULTA FUNCIONARIO           }//FIM DO FOR REFERENTE A CONSULTA

Me ajudem onde estou errando !!!!!!!

Link para o comentário
Compartilhar em outros sites

Dê mais detalhes sobre o problema... Dá erro de compilação?

Olhando rapidamente o código, porque você usa um for que vai de 0 até i < 1?

E na linha do strstr, você está procurando um valor inteiro na string? Além disso há um colchete a mais....

O printf também parece estar errado, pois nome, codigo e salario, parecem ser elementos de uma struct...

Link para o comentário
Compartilhar em outros sites

#include <stdio.h>#include <stdlib.h>int main(){int opcao,voltar,i,codigoconsultado,j;int codigo[10];char nome[10];float salario[10]; do{      printf("1-->Incluir Funcionario----------------\n");  printf("2-->Consultar Funcionario--------------\n");  printf("3-->Alterar dados Funcionario--------- \n");  printf("4-->Excluir dados Funcionario--------- \n");  printf("5-->Reajustar Salario------------------\n");  printf("6-->Listar------------------\n");  printf("7-->Sair ");      printf("Entre com a opção desejada\n");  scanf("%d",&opcao);    switch (opcao){        case 1:        {                        for (i = 0 ; i<1 ; i++)            {                        printf("Informe o codigo do funcionario");            scanf("%d",&codigo[i]);                        printf("Informe o nome do funcionario");            scanf("%s",&nome[i]);                         printf("Informe o salario do funcionario");            scanf("%f",&salario[i]);                                                                        }//FIM DO FOR PARA GRAVAR O NOME E O SALRIO DO FUNCIONARIO                         printf("Deseja voltar ao Menu Principal 1-->Sim 2 -->Não");             scanf("%d",&voltar);             system("CLS");              break;        }//FIM DO CASE 1                          case 2:        {          printf("Informe o codigo do funcionario");          scanf("%d",&codigoconsultado);                  for (i = 0 ; i<1 ; i++)         {                      if (codigo[i] = codigoconsultado)           {            printf("Codigo do funcionario %d" , codigo[i]);           printf("Nome do funcionario %s" , nome[i]);           printf("Salario do funcionario %f" , salario[i]);                               }//FIM DO SE CONSULTA FUNCIONARIO           }//FIM DO FOR REFERENTE A CONSULTA                     break;             }//FIM DO CASE 2                  case 3:        {                                                           }//FIM DO CASE 3                  case 4:        {                                 }//FIM DO CASE 4                  case 5:        {                                 }//FIM DO CASE 5          case 6:        {                   for (i = 0 ; i<1 ; i++)          {           printf("Codigo do funcionario %d" , codigo[i]);           printf("Nome do funcionario %s" , nome[i]);           printf("Salario do funcionario %f" , salario[i]);             }                         break;        }//FIM DO CASE 6                   case 7:        {                                 }//FIM DO CASE 7         }//FIM DO SWITCH } while (voltar == 1);//FIM DO WHILE  system("PAUSE");        	 return 0;}

Este é o programa completo , preciso resolver esse Case 2 .O usuario vai digitar um código e tenho que falar para ele quais as informações do usuario que digitou determinado codigo !!!!!.Sem Usar Struct

Link para o comentário
Compartilhar em outros sites

Da forma que foi declarada a variável nome, não vai der certo. Pois você apenas declarou um vetor de 10 caracteres.

Para cadastrar os nomes, você vai ter que usar uma matriz.

Altere a declaração do nome para:
 

char nome[10][20];

Assim você vai poder cadastrar 10 nomes com no máximo 20 letras. E o operador & não é necessário apenas no scanf do nome.

Outra coisa que reparei agora é que a comparação do seu if está errada:
 

if (codigo[i] = codigoconsultado)

Dessa forma você está atribuindo codigoconsultado ao elemento do vetor.

A comparação de igualdade deve ser com ==
 

if(codigo[i] == codigoconsultado)
Link para o comentário
Compartilhar em outros sites

Você precisa de um valor de referência para a busca e retorno dos dados do funcionário.

Para isso, pode utilizar o nome como valor de busca.

char busca_nome[20];printf("Informe o nome do funcionario a ser encontrado");scanf(" %s", busca_nome);
A partir daí, basta criar a rotina para percorrer a lista de funcionários e comparar cada nome da lista, com o nome da busca.

if ( strcmp( nome[i], busca_nome ) == 0 )    printf("São iguais\n");
Link para o comentário
Compartilhar em outros sites

estou tendo dificuldade na opção de alterar o salario do funcionario do case 3 segue o codigo

 

onde estou errando ?

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){int opcao,voltar=1,i=0,codigoconsultado,j,alterar;int codigo[10];int codigoalterar[10];char nome[10][20];char nomenovo[10][20];char nomealterado[10][20];float salario[10];float salarionovo[10];float percentual_salario[10];float novo_salario[10];char busca_nome[20];int busca_codigo_alterar[10];while(voltar==1){     printf("1-->Incluir Funcionario----------------\n");  printf("2-->Consultar Funcionario--------------\n");  printf("3-->Alterar dados Funcionario--------- \n");  printf("4-->Excluir dados Funcionario--------- \n");  printf("5-->Reajustar Salario------------------\n");  printf("6-->Listar------------------\n");  printf("7-->Sair \n");      printf("Entre com a opção desejada\n");  scanf("%d",&opcao);   system("CLS");  switch (opcao){        case 1:                                                        printf("Informe o codigo do funcionario \n");            fflush(stdin);            scanf("%d",&codigo[i]);                        printf("Informe o nome do funcionario \n");            fflush(stdin);            scanf("%s",&nome[i]);                                     printf("Informe o salario do funcionario \n");            fflush(stdin);            scanf("%f",&salario[i]);                         printf("Deseja voltar ao Menu Principal 1-->Sim 2 -->Não");             	scanf("%d",&voltar);             	system("CLS");                break;      // fim do case 1                          case 2:                  printf("Informe o nome do funcionario");          scanf("%s",&busca_nome);                  for (i = 0 ; i<2 ; i++)         {                      if (strcmp(nome[i] ,busca_nome)==0)           {                       printf("Codigo do funcionario %d \n" , codigo[i]);           printf("Nome do funcionario %s \n" , nome[i]);           printf("Salario do funcionario %f \n" , salario[i]);                                      	                        }//FIM DO SE CONSULTA FUNCIONARIO             else{          			printf("Funcionario não encontrado");             	/*	scanf("%d",&voltar);             		system("CLS"); */		  		   }	         }//FIM DO FOR REFERENTE A CONSULTA                             printf("Deseja voltar ao Menu Principal 1-->Sim 2 -->Não");             		scanf("%d",&voltar);             		system("CLS");                     break;             //FIM DO CASE 2                  case 3:                    /*   printf("Informe o codigo do funcionario que deseja alterar \n");               scanf("%d",&busca_codigo_alterar);  */                                  		printf("Informe o que voce deseja alterar \n");           		printf("1---->Nome \n");           		printf("2---->Salario \n");                     		printf("Escolha o que voce deseja alterar \n");          		scanf("%d",&alterar);                            if(alterar ==1)          {                    printf("********Alterando nome do vetor********* \n");                    printf("Informe o codigo do funcionario que deseja alterar \n");               		scanf("%d",&busca_codigo_alterar);                                       for (i = 0 ; i<2 ; i++)                  {                      if (strstr(codigo[i] ,busca_codigo_alterar)==0)                                             {                         printf("Escreva o novo nome: ");                          scanf("%s",&nomealterado[i]);                         strcpy(nome[i],nomealterado[i]);                         system("CLS");                                        }                                           }//FIM DO FOR PERCORRENDO                                                              } //FIM DO ALTERAR nOME                   if(alterar ==2)          {            printf("********Alterando o salario do vetor********* \n");                                       for (i = 0 ; i<2 ; i++)                    {                       if (strstr(codigo[i] ,busca_codigo_alterar)==0)                                             {                                                                    /*  printf("Escreva o novo salario: ");                          scanf("%f" , &salarionovo[i]);                       	 strcpy(salario[i] , salarionovo[i]);                         system("CLS");*/                                                                 }                                            }//FIM DO FOR PERCORRENDO                                       }//fim do alterar salario*/                   break;           //FIM DO CASE 3                  case 4:        {                       printf("Informe o codigo do funcionario que deseja excluir \n");               scanf("%d",&busca_codigo_alterar); 			   			   for (i = 0 ; i<2 ; i++)                  {                      if (strstr(codigo[i] ,busca_codigo_alterar)==0)                                             {                         strcpy(nome[i],"");						 						 salario[i]=0;						 						 codigo[i]=0;                                       }                                           }//FIM DO FOR PERCORRENDO                   system("CLS");                           break;            }//FIM DO CASE 4                  case 5:        {              printf("Informe o percentual de reajuste \n");               scanf("%f",&percentual_salario); 			   			   for (i = 0 ; i<2 ; i++)                  {                      if (strstr(codigo[i] ,busca_codigo_alterar)==0)                                             {                         						 												//strcpy(salario[i], salario[i] * percentual_salario / 100); 											                                      }                                           }//FIM DO FOR PERCORRENDO                   system("CLS");                     }//FIM DO CASE 5          case 6:        {                   for (i = 0 ; i<4 ; i++)          {           printf("Codigo do funcionario %d \n" , codigo[i]);           printf("Nome do funcionario %s \n" , nome[i]);           printf("Salario do funcionario %f \n" , salario[i]);            printf("******************************************* \n");                                  }                        break;        }//FIM DO CASE 6                   case 7:        {                      exit(0);           }//FIM DO CASE 7      }//FIM DO SWITCHi=i+1;}//FIM DO WHILE   system("PAUSE");        	 return 0;}
Link para o comentário
Compartilhar em outros sites

Você está usando função de string para comparar conteúdo do tipo inteiro:

strstr(codigo[i] ,busca_codigo_alterar)
São coisas diferentes.

Para comparar valores inteiros, a comparação é direta:

if ( codigo[i] == busca_codigo_alterar[i] )
Outro erro: A variável 'busca_codigo_alterar' foi criada como vetor, mas está sendo utilizada como variável simples.

Troque de:int busca_codigo_alterar[10];Para:int busca_codigo_alterar;Ficando a comparação:if ( codigo[i] == busca_codigo_alterar )
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!