Stock Laboratorio em C

Estou com um trabalho muito parecido, para não dizer igual, e preciso de ajuda.
Como altero os dados do utente? (pergunta para o So_SIMple_)
Sou um autêntico noob nisto...

para o caso de ser string:
strcpy(list_utente[x].nome_utente,novo_nome);

para caso de ser inteiro:
list_utente[x].numero_bi=novo_numero;

"x" - é a posição a modificar (int)
"novo_nome" - é a string k keres substituir pelo nome_utente (char)
"novo_numero" - o numero a substituir pelo numero_bi (int)
 
Boas! desculpa so vi hj!
De qqer foram toma o meu para te ajudar!





Código:
int alterar_utente (void)
{
 int numero;
 system("cls");
 printf ("\n\n     Por favor introduza o numero de utente:");
 scanf("%d", &numero);
 if (contador_utentes == 0)
  {printf("\n\n   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _    ");
   printf("  |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|   ");
   printf("  |_|_|                                                                 |_|_|   ");
   printf("  |_|_|                           ERRO!                                 |_|_|   ");
   printf("  |_|_|               Nao existem utentes registados!                   |_|_|   ");
   printf("  |_|_|                 Por favor registe utentes.                      |_|_|   ");
   printf("  |_|_|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_|_|   ");
   printf("  |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|  \n");
  system("pause");
  }
  else if (numero > contador_utentes)
 {  system("cls");
   printf("   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _    ");
   printf("  |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|   ");
   printf("  |_|_|                                                                 |_|_|   ");
   printf("  |_|_|                           ERRO!                                 |_|_|   ");
   printf("  |_|_|               Numero de utente nao registado!                   |_|_|   ");
   printf("  |_|_|                 Por favor registe utentes.                      |_|_|   ");
   printf("  |_|_|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_|_|   ");
   printf("  |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| \n");
   system("pause");
 }
 else
  {
 printf("\n\n              Dados actuais do utente:");
 printf("\n\n\n           Nome do utente: %s\n\n", list_utente[numero-1].nome_utente);
 printf("           Morada do utente: %s\n\n", list_utente[numero-1].morada_utente);
 printf("           Telefone do utente: %ld\n\n", list_utente[numero-1].telefone_utente);
 printf("           Numero de BI do utente: %ld\n\n\n", list_utente[numero-1].numero_bi);
 printf("\n\n\n          Introduza os seguintes dados a alterar:\n\n");
 printf("          Nome do utente:");
 fflush(stdin);
 gets(list_utente[numero-1].nome_utente);
 printf("\n\n          Morada do utente:");
 fflush(stdin);
 gets(list_utente[numero-1].morada_utente);
 printf("\n\n          Numero de telefone do utente:");
 scanf("%ld", &list_utente[numero-1].telefone_utente);
 printf("\n\n         Numero de BI do utente:");
 scanf("%ld", &list_utente[numero-1].numero_bi);
 system("pause");
 return gest_utente();
}
return gest_utente();
}

Tá aqui. Mas nao te esqueças que este usa a estrutura para armazenar os dados!
Abraço!
 
Última edição pelo moderador:
Boas!
Já agora, Como posso apagar a informacao de um equipamento?
Tenho um contador de equipamentos int contador_equipamento == 0.
e na parte de apagar pus:

int abater_equip (void)
{
int numeroequip;
system ("cls");
printf("introduza o numero de equipamento a abater");
scanf("%d", &numeroequip);


system ("pause");
return gest_equip();
}

A minha ideia era usar o numeroequip para depois igualar ao valor do contador_equipamento que quero apagar. Mas como? :D
Obrigado!
Abraço!
 
Como tas a usar array não podes apagar, podes é limpar essa posição no array, substituindo-o valores por valores de defeito, tipo:

Código:
list_utente[numeroequip].nome_utente = "";
list_utente[numeroequip].morada_utente = "";
ist_utente[numeroequip].telefone_utente = 0;
list_utente[numeroequip].numero_bi = 0;

outra coisa no return não precisas de ter "return gest_equi()", basta faz fazeres "return".

EDIT : Enganei-me a mim e a ti...sorry...para limpar as strings é melhor o strcpy.
 
Última edição:
Pois como esta funcao ta associada á do menu, ao fazer return ele volta ao menu associado ne?

O return no final de um procedimento returna a execução para o ponto anterior á chamada dessa mesma função. Ai o que estavas a fazer era a chamar novamente a funcao gest_utente() e só depois de sair dessa é que fazia esse return.

Provavelmento quando escolhia para sair do programa aparecia-te novamente uma janela de gestao de utentes.
 
Boas!
Já agora, Como posso apagar a informacao de um equipamento?
Tenho um contador de equipamentos int contador_equipamento == 0.
e na parte de apagar pus:

int abater_equip (void)
{
int numeroequip;
system ("cls");
printf("introduza o numero de equipamento a abater");
scanf("%d", &numeroequip);


system ("pause");
return gest_equip();
}

A minha ideia era usar o numeroequip para depois igualar ao valor do contador_equipamento que quero apagar. Mas como? :D
Obrigado!
Abraço!
fazes uma pesquisa pelo numeroequip que te devolva a sua posiçao de memoria

ao saber a posição de memoria do equipamento a abater, tens de puxar os outros equipamentos seguintes e depois decrementar o contador de equipamento, por exemplo se o equipamento k keres remover estiver na posição 2, puxas o da posição 3 para a 2, o da 4 para a 3, e assim sucessivamente (ciclo) e no fim decrementas o contador. e se estiver na ultima posição ocupada do array, ou seja, posição = contador-1, so precisas de decrementar o array.

Assim é a melhor forma de eliminar um campo do array em vez de estar a por valores k significam "nada".

peace out

Assim facilita nas ordenaçoes e pesquisa
 
Tenho-o já feito (pelo menos para ter 13 :freak3:), corre, mas muito mal. Dá-me vários erros 0xblabla.
Se quiserem ver o trabalho (um bocadinho fraco, mas pronto) está aí. Se puderem corrigir eu agradeço imenso (ai que noob que sou :P). Pelo menos até amanhã de manha (pois ainda tenho de gravar em cd, entregar manuais de utilização e o pseudocódigo).
 
Última edição:
boy, tava a ver o teu programa e tens aki muitos problemas:

-o contador de utentes e equipametos têm de ser declarados globalmente e incrementados kuando inseres ou decrementados quando removes;

-nao era preciso passar por parametro a estrutura nas funcoes k envolve utentes e equipamentos, era so declarar globalmente, ex: UTENTE ut[50]; <-- tens ai um array de 50 posiçoes ou seja no maximo podes ter 50 utentes;

-tas a emprimir os dados do utente mal, tas a ir a posiçoes k n estao acupadas (posiçoes com lixo).

faz o dwld aqui . fiz algumas alteraçoes mas nao o suficiente pra tudo funcionar(n tou com muito tempo) , mudei a declaraço da estrutura UTENTE, declarei algumas funçoes k n estavam declaradas e pus o adiçionar utente e ver informaçoes do utente a funcionar (nao estavam bem)

tenta fazer essas mudanças no equipameto tb
 
Obrigado, mais uma vez :)
Não consigo "sakar" o ficheiro. Tens alternativa? (mail ou outra coisa do genero vê a pm sff)

EDIT:Resolvido!
 
Última edição:
Back
Topo