jurassico 0 Denunciar post Postado Agosto 11, 2015 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
_Isis_ 202 Denunciar post Postado Agosto 11, 2015 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
Carlos de Oliveira Júnior 1 Denunciar post Postado Agosto 12, 2015 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
jurassico 0 Denunciar post Postado Agosto 14, 2015 Repetindo: leia as mensagens do compilador: beleza eu li, mas nao sei como resolver os bugs :/ Compartilhar este post Link para o post Compartilhar em outros sites
Felipe-Petrópolis 11 Denunciar post Postado Agosto 14, 2015 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