Questão:
Duvidas linguagem C, trabalho facul, ajudemmm?
André
2012-06-26 22:43:26 UTC
gente eu e um amigo fizemos um trabalho de programação.. mas a gnt ta no primeiro periodo
e vimos coisas basicas... mas ele falou qe a gnt podia pegar na net codigos.. desde qe soubesse explicar... a gnt pegou um codigo pra fzer cadastro.. so qe nao entendemos mto bem... alguem pode ajudar,,, vou postar aki algumas duvidas...

int vazio; //VAZIO = 0 e DISPONIVEL = 1. ( n entendi pq ele declarou essa variavel )

printf("\n\t\t\tEntre com a senha desejada (numeros)\n\t\t\t\t\t");
scanf("%d",&codaux);fflush(stdin);

retorno=verifica_cod(codaux);
if (retorno==1)
cadastrar(codaux,posicao);
else
printf("\n\t\t\tCodigo ja existente\n"); ( nao entendi essa parte do cadastro)


void cadastrar(int cod, int pos) {
pos=verifica_pos();
registros[pos].cod=cod;
printf("\n\t\t\tNome:\n\t\t\t");
gets(registros[pos].nome);
printf("\n\t\t\tTelefone\n\t\t\t");
scanf("%d",®istros[pos].tel);
registros[pos].vazio=1;
printf("\n\t\t\tCadastro Realizado com Sucesso!\n\n"); ( tbm n entendi essa parte do cadastro)


int verifica_pos() {
int cont=0;
while (cont<=100) {
if (registros[cont].vazio==0)
return(cont);
cont++;
}
return(-1);
}

void zerar() {
int cont;
for (cont=0;cont<=100;cont++)
registros[cont].vazio=0;
}

int verifica_cod(int cod) {
int cont=0;
while (cont<=100) {
if (registros[cont].cod==cod)
return(0);
cont++;
}
return(1);
}

void excluir() {
int cod, cont=0; ( vuei aki nessa parte toda )


alguem pode ajudar???
Trzy respostas:
?
2012-06-28 08:42:00 UTC
Existe um erro ai, tem que declarar a struct como 101 e nao 100, porque esse codigo ta considerando que comeca em 1 e nao em 0

Voce nao entende nem o que um "for" faz? Prefira reprovar do que passar pra frente sem saber. Essa materia é muito importante

As funções auxiliares vem depois da main

- void cadastrar(int cod, int pos) recebe uma posicao pra inserir na agenda, verifica se ela ta vazia pra poder inserir nessa posicao (por isso registro[pos].cod = cod, por exemplo, o quinto registro ta vazio, entao registro[5].cod vai receber o codigo que o usuario informou. gets(registros[pos].nome) é o mesmo que scanf() so que pra string com espaco. E ai coloca que vazio é 1 pra indicar que nao ta vazio. Esse vazio funciona como boolean(0 o resgistro ta vazio, 1 nao ta vazio).

- void consultar() é lido um codigo e ai percorre todo vetor de registros procurando por esse codigo e verificando se nao ta vazio. while(cont<=100) significa que percorre o vetor de 100 elementos (enquanto tiver elementos pra percorrer), ele anda de 1 em 1 que é o mesmo que cont++ (cont = cont+1). Pode acontecer de percorrer os 100 e nao achar o codigo

- int verifica_pos() vai percorrer todos os registros do tipo struct, que sao 100, e verificar se tem algum vazio(atraves do elemento "vazio" da struct), se estiver vazio vai retornar a posição pra que possa ser preenchida, se nao vai retorna -1 que indica que a agenda ta cheia

- void zerar() percorre todos os registros, os 100, e no elemento "vazio" coloca 0, o que indica que o registro ta vazio

- int verifica_cod(int cod) vai percorrer todo o vetor de struct, procurando pela que tiver o codigo passado por parametro, se achar retorna 0, senao retorna 1, é na ideia no boolean tambem



A função main chama essa funçoes

por exemplo

zerar(); nao ter retorno, nem parametro.. ela vai zerar todos os registros



retorno=verifica_cod(codaux); vai chamar a funcao, passando um codigo como parametro e o que essa funcao retornar, fica guardado em retorno



cadastrar(codaux,posicao); vai chamar a funcao, passando um cod e uma posicao, como nao tem retorno, nao guarda em variavel nenhuma.. ela apenas cadastra o que foi passado
?
2012-06-27 05:53:12 UTC
Caro colega,

Isso daí envolve até o assunto Funções.

Se você não souber trabalhar os laços while, do while, for, ou mesmo de condição if/else, não vai entender lhufas.



Até que parte você já aprendeu?

Saberia explicar esse códigozinho daqui...





#include

#include



int main(){

//Variáveis

int anonascimento,anoingresso;

int tempotrabalho,ano=2012;



//Entrada de dados

printf("digite seu ano de nascimento\n");

scanf("%d", &anonascimento);

printf("digite seu ano de ingresso\n");

scanf("%d",&anoingresso);



//Processamento e saída de dados

if(anonascimento-ano >= 65 || anoingresso-ano >= 30) //Para esta condição "IF", como só há uma instrução, não há necessidade do uso de chaves {}

printf("requerer aposentadoria\n");

else

printf("nao requerer aposentadoria\n");



//Final do código

system("pause");

}



Abraço.



//observação... foram declaradas 4 variáveis em 2 int's. poderia colocar num int só, mas pra ficar mais legível, já que o yahoo "escondeu" o resto do int, fiz em dois, ok?

//2ª obs... programar pra linux é diferente de programar pra windows. percebeu o uso do system("pause"), né? Sugiro ter cautela na programação e no usuário a que se destina o programa.
Isaac Newton
2012-06-27 07:16:39 UTC
Amigão, se você está com dificuldade de enteder laços, condicionais.. eu te recomendaria começar do ZERO, uma boa opção que tenho certeza que vai te ajuda é um cursinho chamado " Curso C - Marcos Aurélio Thopsom" baixe ele no 4shared ele é leve.. e pra quem ta aprendendo é muito bom, eu indiquei ele pro meu primo de 14 anos, ele em menos de um mês ja tinha uma boa noção, lembrando comecando sempre pela programação ESTRUTURADA ! boa sorte !


Este conteúdo foi postado originalmente no Y! Answers, um site de perguntas e respostas que foi encerrado em 2021.
Loading...