Ir ao conteúdo
  • Cadastre-se

Duvida em break laço for


zépoa57

Posts recomendados

Boa noite estou com um problema ao imprimir os dados de um candidato, pois quando eu não preencho todos os dados do #define dados_prefeito 2 ele imprimi o dado abaixo vazio, fiz o teste colocando o break mas apresenta só o primeiro no caso se eu vou cadastrar os dois candidatos. existe alguma maneira que quando eu for cadastrar 1 candidato não apareça este "lixo" de dados abaixo ??

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define dados_prefeito 2
struct prefeito_dados
{
char nome[300];
char partido[300];
char cargo[300];
int num;
int votos_prefeito[300] ;
};
struct prefeito_dados prefeito[dados_prefeito];
int indice_prefeito=0;
char cadastro_sair;

int main()
{
prefeito[indice_prefeito].votos_prefeito[indice_prefeito]=0;

do
{
system("cls");

printf("\t\t\t=================================");
printf("\n\t\t\t\tCADASTRO PREFEITO\n");
printf("\t\t\t=================================\n");

printf("Digite a quantidade de votos-->");
scanf("%d",&prefeito[indice_prefeito].votos_prefeito[indice_prefeito]);
fflush(stdin);
printf("Digite o cargo do candidato -->");
fflush(stdin);
fgets(prefeito[indice_prefeito].cargo,300,stdin);
fflush(stdin);
printf("Digite o numero do candidato -->");
scanf("%d",&prefeito[indice_prefeito].num);
fflush(stdin);
printf("Digite nome do candidato-->");
fgets(prefeito[indice_prefeito].nome,300,stdin);
fflush(stdin);
printf("Digite o partido do candidato -->");
fgets(prefeito[indice_prefeito].partido,300,stdin);
fflush(stdin);
indice_prefeito++;
if(indice_prefeito<=1)
{
printf("Deseja cadastrar novamente s-sim n-nao");
cadastro_sair=getch();
}
else
{
printf("sair");
getch();
}



}while(indice_prefeito<dados_prefeito&&cadastro_sair!='n');


system("cls");
//printf("\nCANDIDATO\t\tCARGO\t\tNUMERO\t\tPARTIDO\tVOTO");
printf("\n");
for(indice_prefeito=0;indice_prefeito<dados_prefeito;indice_prefeito++)
{


prefeito[indice_prefeito].votos_prefeito[indice_prefeito]=prefeito[indice_prefeito].votos_prefeito[indice_prefeito]+1;
printf("\nCANDIDATO %s\t",prefeito[indice_prefeito].nome);
printf("\nCARGO %s\t",prefeito[indice_prefeito].cargo);
printf("\nNUMERO %d\t",prefeito[indice_prefeito].num);
printf("\nPARTIDO %s\t",prefeito[indice_prefeito].partido);
printf("\nVOTO %d\t",prefeito[indice_prefeito].votos_prefeito[indice_prefeito]);


}






printf("\n");

system("pause");

}

Link para o comentário
Compartilhar em outros sites

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define dados_prefeito 2
struct prefeito_dados
{
char nome[300];
char partido[300];
char cargo[300];
int num;
int votos_prefeito[300];
};
struct prefeito_dados prefeito[dados_prefeito];
int indice_prefeito=0;
char cadastro_sair;

int main()
{
int c = 0;
prefeito[indice_prefeito].votos_prefeito[indice_prefeito]=0;

do
{
system("cls");

printf("\t\t\t=================================");
printf("\n\t\t\t\tCADASTRO PREFEITO\n");
printf("\t\t\t=================================\n");

printf("Digite a quantidade de votos-->");
scanf("%d",&prefeito[indice_prefeito].votos_prefeito[indice_prefeito]);
fflush(stdin);
printf("Digite o cargo do candidato -->");
fflush(stdin);
fgets(prefeito[indice_prefeito].cargo,300,stdin);
fflush(stdin);
printf("Digite o numero do candidato -->");
scanf("%d",&prefeito[indice_prefeito].num);
fflush(stdin);
printf("Digite nome do candidato-->");
fgets(prefeito[indice_prefeito].nome,300,stdin);
fflush(stdin);
printf("Digite o partido do candidato -->");
fgets(prefeito[indice_prefeito].partido,300,stdin);
fflush(stdin);
indice_prefeito++;
c = c+1;
if(indice_prefeito<=1)
{
printf("Deseja cadastrar novamente s-sim n-nao");
cadastro_sair=getch();
}
else
{
printf("sair");
getch();
}



}while(indice_prefeito<dados_prefeito&&cadastro_sair!='n');


system("cls");
//printf("\nCANDIDATO\t\tCARGO\t\tNUMERO\t\tPARTIDO\tVOTO");
printf("\n");
for(indice_prefeito=0;indice_prefeito<c;indice_prefeito++)
{


prefeito[indice_prefeito].votos_prefeito[indice_prefeito]=prefeito[indice_prefeito].votos_prefeito[indice_prefeito]+1;
printf("\nCANDIDATO %s\t",prefeito[indice_prefeito].nome);
printf("\nCARGO %s\t",prefeito[indice_prefeito].cargo);
printf("\nNUMERO %d\t",prefeito[indice_prefeito].num);
printf("\nPARTIDO %s\t",prefeito[indice_prefeito].partido);
printf("\nVOTO %d\t",prefeito[indice_prefeito].votos_prefeito[indice_prefeito]);


}






printf("\n");

system("pause");

}

Link para o comentário
Compartilhar em outros sites

Agumas dicas:

Constantes definidas por #define levam nomes em letras maisculos

Exemplo:

#define MAX 2

mude o nome do variaveis para coisas simples

dados_prefeito poderia ser TAM_MAX (letras miusculas por convenção)

indice_prefeito poderia ser i já que ésóuma variável de iteração

prefeito_dados poderia ser prefeito ou candidato(caberia no contexto);

vai aí seu código com nome de variáveis mais aplicaveis ao algoritmo (só mudei o nome das variáveis);


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define TAM_MAX 2 //tamanho máximo do vetor de cadidatos. candidato[TAM_MAX]
struct candidato
{
char nome[300];
char partido[300];
char cargo[300];
int num;
int votos[300];
};
struct candidato prefeito[TAM_MAX];
//int indice_prefeito=0; é só uma variável de iteração não precisa ser global
//char cadastro_sair; não precisa ser global

int main()
{
int i; //declara aqui
int n_candidatos; //numeros de candidatos cadastrados
char opcao; //declara aqui
//prefeito[i].votos[i]=0; Pra que isso?
//usaremos uma função init_prefeito() para iniciarmos os dados.

do
{
system("cls");

printf("\t\t\t=================================");
printf("\n\t\t\t\tCADASTRO PREFEITO\n");
printf("\t\t\t=================================\n");

printf("Digite a quantidade de votos-->");
scanf("%d",&prefeito[i].votos[i]);
fflush(stdin);
printf("Digite o cargo do candidato -->");
fflush(stdin);
fgets(prefeito[i].cargo,300,stdin);
fflush(stdin);
printf("Digite o numero do candidato -->");
scanf("%d",&prefeito[i].num);
fflush(stdin);
printf("Digite nome do candidato-->");
fgets(prefeito[i].nome,300,stdin);
fflush(stdin);
printf("Digite o partido do candidato -->");
fgets(prefeito[i].partido,300,stdin);
fflush(stdin);
i++;
c++;
if(i<=1)
{
printf("Deseja cadastrar novamente s-sim n-nao");
opcao=getch();
}
else
{
printf("sair");
getch();
}



}while(i<TAM_MAX&&opcao!='n');


system("cls");
//printf("\nCANDIDATO\t\tCARGO\t\tNUMERO\t\tPARTIDO\tVOTO");
printf("\n");
for(i=0;i<n_candidatos;i++)
{


prefeito[i].votos[i]=prefeito[i].votos[i]+1;
printf("\nCANDIDATO %s\t",prefeito[i].nome);
printf("\nCARGO %s\t",prefeito[i].cargo);
printf("\nNUMERO %d\t",prefeito[i].num);
printf("\nPARTIDO %s\t",prefeito[i].partido);
printf("\nVOTO %d\t",prefeito[i].votos[i]);


}






printf("\n");

system("pause");

}

Agora se você não quer mostrar lixo você cria uma função ou até mesmo um trecho de código que indique que a struct está vazia

void init_candidatos(prefeito vet[TAM_MAX]);

é só usar o nome para indicar que ele está vazio ou não. mas como?

o caractere '\0' é o terminador de string. então se ele estiver na primeira posição da string ela estará vazia. então:

char nome[300];

//se você lê

nome; //lixo

nome[0] = '\0'; \\ela está vazia simples não?

Então essa função precisa iniciar o nome de cada candidato em '\0'(nome[0] = '\0';) e colocar o numero de votos em zero.

AÍ três funções básicas

void init_candidatos(prefeito vet[TAM_MAX]);

int is_null(prefeito a); //verifica se está vazia e retorna 0 se não e 1 se estiver vazia

void del(prefeito vet[TAM_MAX], int pos); //deleta, é só iniciar nome[0] ='\0'; e votos com 0 da posição do vetor

Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!