Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jurassico

Problemas com resgistros

Recommended Posts

galera qual o problema com essse codigo??

 

 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
 
 
char nome [200] [50];
    char endereco [200] [50];
    int  cpf [200];
    int op;    
    void cadastro ();
    void pesquisa ();
 
int main (void)
{
  {{cadastro();
     pesquisa();}
 
do{
 
 
printf ("Informe uma opcao1: caixa=11  estoque=22  cadastro de clientes=66   \n");
scanf ("%d", &opcao1);
 
switch (opcao1){
 case 66:{
             void cadastro (){
static int linha;
do{
printf ("Digite nome:\n");
scanf ("%s", &nome[linha]);
printf ("Digite endereco:\n");
scanf ("%s", &endereco[linha]);
printf ("Digite cpf:\n");
scanf ("%d", &cpf[linha]);
printf ("Digite 1 para sair:\n");
scanf ("%d", &op);
linha ++;
}while (op==1);
 
}
void pesquisa (){
int cpfpesquisa;
char enderecopesquisa[50];
int i;
do {
printf ("Digite 1 para pesquisar o CPf ou 2 para pesquisar o endereco: \n");
scanf ("%d", &op);
 
switch (op){
case 1:
printf ("Digite o cpf:\n");
scanf ("%d", &cpfpesquisa);
for (i=0; i<200 ; i++){
 
if (cpf[i]==cpfpesquisa){
printf ("Nome:%s\nCpf:%d\nEndereco%s \n", nome [i], cpf [i], endereco[i]);
}
}
break;
 
case 2:
printf ("Digite o endereco: \n");
scanf ("%s", &enderecopesquisa);
for (i=0; i<200; i++){
 
if (strcmp(endereco[i], enderecopesquisa )==0){
printf ("Nome:%s\nCpf:%d\nEndereco%s \n", nome [i], cpf [i], endereco[i]);
}
}
break;
 
default:
printf ("Opcao invalida...");
break;
 
 
}
printf ("Digite 1 para continuar pesquisando: \n");
scanf ("&d", &op);
 
}while (op==1);
}
system ("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Repetindo: leia as mensagens do compilador:

 

 

 

pulse.c: In function ‘main’:
pulse.c:23:15: error: ‘opcao1’ undeclared (first use in this function)
scanf ("%d", &opcao1);
^
pulse.c:23:15: note: each undeclared identifier is reported only once for each function it appears in
pulse.c: In function ‘cadastro’:
pulse.c:31:8: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[50]’ [-Wformat=]
scanf ("%s", &nome[linha]);
^
pulse.c:33:8: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[50]’ [-Wformat=]
scanf ("%s", &endereco[linha]);
^
pulse.c: In function ‘pesquisa’:
pulse.c:64:8: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[50]’ [-Wformat=]
scanf ("%s", &enderecopesquisa);
^
pulse.c:80:8: warning: too many arguments for format [-Wformat-extra-args]
scanf ("&d", &op);
^
pulse.c: In function ‘main’:
pulse.c:85:1: error: expected declaration or statement at end of input
}
^
pulse.c:85:1: error: expected declaration or statement at end of input
pulse.c:85:1: error: expected declaration or statement at end of input
pulse.c:85:1: error: expected declaration or statement at end of input

Use a tag code pra postar código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como a isis falou, seu código tem erros de compilação, e esses erros o próprio compilador vai te dizer. (No code blocks, é na aba Build Messages).
Caso não seja erro de compilação, seu código rode, mas com algum defeito, o ideal é usar o debugger com a ferramenta Watches, que você visualiza o valor de cada variável do programa

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Olá!

 

olha sou inciante em C e tenho andado um pouco parado nestas semanas, então me desculpem algum equivoco de minha parte . . .

 

 

- os dois erros seguintes estão relacionados ao fato de você estar chamando uma variável que não foi declarada (opcao1), substitua-a pela variável correta ( op )

 

 

|23|error: ‘opcao1’ undeclared (first use in this function)

 

|25|error: ‘opcao1’ undeclared (first use in this function)

 

 

- Os três alertas seguintes estão relacionados, no caso de um vetor de caracteres ( string ), o primeiro item do vetor é um ponteiro que irá referenciar ao restante dos elementos do vetor, sendo assim o uso do ( & ) é desnecessário neste caso “ scanf () “, para (strings) ?

 

 

|33|warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[50]’ [-Wformat=]|

 

|35|warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[50]’ [-Wformat=]|

 

|68|warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[50]’ [-Wformat=]|

 

 

 

- |81|warning: too many arguments for format [-Wformat-extra-args]| - aqui muito provavelmente o compilador está interpretando que “&d” no scanf ("&d", &op); é um argumento, basta colocar o código de formatação adequado

 

 

BOM, ate aqui não é muita coisa, é mais uma questão de atenção, o maior problema é o que lhe direi a seguir:

 

 

1 - as funções de cadastro() e pesquisa() foram declaradas dentro do mesmo switch, quando o mais apropriado ( e como eu aprendi ate aqui ) seria que elas fossem declaradas fora de qualquer função incluindo main(), ainda mais dentro de um switch, retire as duas funções é as coloque ( declare ) preferencialmente, antes de main()

 

2 – existe uma diferença muito grande entre definir o protótipo de uma função e chamar uma função:

 

logo no inicio do main(), você está chamando as suas funções para serem usadas antes mesmo de ter declarado-as ou mesmo antes de definir os seus protótipos

 

isto é o protótipo de uma função: os quais você os define no inicio do bloco no qual as suas funções vão ser chamadas

 

void cadastro ( void );

void pesquisa ( void );

 

isto é a chamada a uma função: a qual foi declarada fora de main() e qualquer outra função, e onde está todo o código que vai ser efetivamente usado para fazer seja lá o que for, sendo assim você deve chamar as sua funções para serem usadas dentro dos case em seu switch

 

cadastro ();

pesquisa ();

 

- quanto a função system (“pause”); ela é uma função que faz chamadas ao sistema, e por isso dependendo das especificações do programa, pode reduzir a portabilidade do código, ou mesmo causar erros e/ou problemas difíceis de serem encontrados, por isso a não ser que você esteja certo do seu uso, é melhor evitar tais chamadas.

 

Se a sua intenção era o de evitar que a janela do programa se fechasse impedindo a visualização dos resultados, você pode tentar substituir system(“pause”); por getchar();

 

Bom por hora é só, veja se as dicas acima funcionam, e novamente me desculpem e corrijam, se eu disse algo errado

 

 

Ubuntu 14.04 GNU GCC 4.8 CodeBlocks 13.12

 

 

Espero Ter Ajudado ! ! !

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.