Ir ao conteúdo

Ajuda agenda em c++ falta só excluir


andressa.funes

Posts recomendados

Postado

Oi Galera ò eu aqui de novo to com um programa de cadastro bem legal ele esta funcionando direitinho eu só não estou conseguido fazer o meu celebro funcionar para ativar a função excluir do programa.

#include<string.h>

#include<conio.h>

#include<stdio.h>

#include <stdlib.h>

struct agenda {

char nome[50];

int idade;

char profissao[30];

} registros[20];

int main() {

int i;

int opcao=1;

int x=0;

char busca[50];

char vazio=0;

int codigo=0;

int resultado;

while (opcao!=5) {

printf("MENU \n");

printf("1 - Inserir Dados \n");

printf("2 - Pesquisar \n");

printf("3 - Alterar Dados \n");

printf("4 - Excluir \n");

printf("5 - Sair \n");

printf("\n opcao: ");

scanf("%d", &opcao);

switch(opcao){

case 1: { // Cadastrar

for(i = 0; i <= 20; i++){

if ((registros.nome != "") && (registros.idade != 0) && (registros.profissao != "")) {

x=i;

break;

}

}

if (x > -1 ){

printf("Digite o seu nome: ");

scanf("%s", &registros[x].nome);

printf("Digite o sua idade: ");

scanf("%d", &registros[x].idade);

printf("Digite o sua profissao: ");

scanf("%s", &registros[x].profissao);

}

else {

printf("A agenda esta cheia \n");

}

} break;

case 2: { // consultar

printf("Digite o nome a ser pesquisado: ");

scanf("%s", &busca);

for(i = 0; i <= 20; i++){

resultado = strcmp(busca,registros.nome);

if (resultado==0) {

printf("Nome encontrado: %s\n", registros.nome);

printf("Idade encontrada: %d\n", registros.idade);

printf("Profissao encontrada: %s\n", registros.profissao);

break;

}

}

}

break;

case 3:{ // alterar

printf("Digite o nome a ser alterado: ");

scanf("%s", &busca);

for(i = 0; i <= 20; i++){

resultado = strcmp(busca,registros.nome);

if ((resultado==0)&&(x > -1 )){

printf("Digite o seu nome: ");

scanf("%s", &registros[x].nome);

printf("Digite o sua idade: ");

scanf("%d", &registros[x].idade);

printf("Digite o sua profissão: ");

scanf("%s", &registros[x].profissao);

}

}

}

break;

}

}

}

Espero q vocês possam me ajudar estou precisando com um poquinho de urgencia quero nem q for só uma dica pra começar a função excluir porque meu celebro já pifo.

Faleu Galera

Postado

Como o vetor 'registro' foi alocado estaticamente, para remover um elemento terá de copiar o conteúdo da posição seguinte para essa que deseja remover, e vai fazendo assim para as demais posições, até chegar na última, e então decremente a quantidade de elementos existentes no vetor.

Postado

Cara,

Copiei o seu código, deu uma modificada básica nele e na opção case '4', coloquei um código que eu tenho aqui na minha máquina, pois você terá que mudar conforme a sua estrutura, porque eu apenas copiei de um outro e colei dentro da sua:



#include<string.h>
#include<conio.h>
#include<stdio.h>
#include <stdlib.h>

struct agenda {
char nome[50];
int idade;
char profissao[30];
} registros[20];

int main() {
int i;
int opcao=1;
int x=0;
char busca[50];
char vazio=0;
int codigo=0;
int resultado;


while (opcao!=5 || opcao >=6) {
printf("MENU \n");
printf("1 - Inserir Dados \n");
printf("2 - Pesquisar \n");
printf("3 - Alterar Dados \n");
printf("4 - Excluir \n");
printf("5 - Sair \n");
printf("\n opcao: ");
scanf("%d", &opcao);
fflush(stdin);
system("cls");
switch(opcao){

case 1: { // Cadastrar
for(i = 0; i <= 20; i++){
if ((registros[i].nome != "") && (registros[i].idade != 0) && (registros[i].profissao != "")) {
x=i;

break;
}
}
if (x > -1 ){
printf("Digite o seu nome: ");
scanf("%s", &registros[x].nome);
fflush(stdin);
printf("Digite o sua idade: ");
scanf("%d", &registros[x].idade);
fflush(stdin);
printf("Digite o sua profissao: ");
scanf("%s", &registros[x].profissao);
fflush(stdin);
printf("\n Cadastro salvo com sucesso !\a");
getch();
system("cls");
}
else {
printf(" A agenda esta cheia ! \a");
getch();
system("cls");
}
}
break;


case 2: { // consultar

printf("Digite o nome a ser pesquisado: ");
scanf("%s", &busca);
fflush(stdin);

for(i = 0; i <= 20; i++){
resultado = strcmp(busca,registros[i].nome);
if (resultado==0) {
printf("Nome encontrado: %s\n", registros[i].nome);
printf("Idade encontrada: %d\n", registros[i].idade);
printf("Profissao encontrada: %s\n", registros[i].profissao);
getch();
system("cls");
break;
}
else{
printf(" Nome não encontrado !");
getch();
system("cls");
}
}
}

break;

case 3:{ // alterar

printf("Digite o nome a ser alterado: ");
scanf("%s", &busca);
fflush(stdin);

for(i = 0; i <= 20; i++){

resultado = strcmp(busca,registros[i].nome);
if ((resultado==0)&&(x > -1 )){
printf("Digite o seu nome: ");
scanf("%s", &registros[x].nome);
fflush(stdin);
printf("Digite o sua idade: ");
scanf("%d", &registros[x].idade);
fflush(stdin);
printf("Digite o sua profissão: ");
scanf("%s", &registros[x].profissao);
fflush(stdin);
printf("\n Cadastro Alterado com sucesso ! \a");
getch();
system("cls");
}
else{
printf(" Nome Invalido !");
getch();
system("cls");
}
}
}
break;
case '4': { //Excluir
printf("\n\n Nome do Funcion%crio: ", 160);
gets(Cadastro.sNomeUsuario);
stoupper(Cadastro.sNomeUsuario);

for(i=0;i<=num;i++)
{
if(strcmp(Cadastro.sNomeUsuario, Cadastro.sNome[i]) == 0)
{
for( ;i<=iGuardaCadastro;i++)
{
strcpy(Cadastro.sNome[i], Cadastro.sNome[i+1]);
Cadastro.iSalario[i] = Cadastro.iSalario[i+1];
strcpy(Cadastro.End.rua[i], Cadastro.End.rua[i+1]);
Cadastro.End.numero[i] = Cadastro.End.numero[i+1];
strcpy(Cadastro.End.cidade[i], Cadastro.End.cidade[i+1]);
strcpy(Cadastro.End.uf[i], Cadastro.End.uf[i+1]);

iGuardaCadastro = iGuardaCadastro--;
iNumeroCadastro = iNumeroCadastro++;
iClientes = iClientes--;

strcpy(Cadastro.sNome[i+1],"");
Cadastro.iSalario[i+1]= 0;
strcpy(Cadastro.End.rua[i+1],"");
Cadastro.End.numero[i+1]= 0;
strcpy(Cadastro.End.cidade[i+1],"");
strcpy(Cadastro.End.uf[i+1],"");

if(i==iGuardaCadastro-1)
{
printf("\n\n Funcion%crio Excluido com Sucesso !\a", 160);
}

break;
}
else if(i==num-1)
{
printf("\n\n Funcion%crio n%co cadastrado !\a", 160, 132);
}
}

}
}
break;

}

}
}

Arquivado

Este tópico foi arquivado e está fechado para 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...