Ir para conteúdo
Fórum Script Brasil

denin

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Sobre denin

denin's Achievements

0

Reputação

  1. cara muito obrigado, você me ajudou muito realmente eu estou me enrolando muito nesses parametros '&' '*' não to sabendo muito bem usar, mas vou dar uma estudada nisso, vou terminar as outras rotinas qualquer coisa eu te peço outras ajudas se for possivel vlw fera abrass
  2. o primeiro problema relacionado ao foto do cursor estar ignorando o cadastro do nome foi resolvido com o codigo que você me falou, mt obrigado porém o 2° problema na hora de listar o nome e telefone do usuario ainda continua conforme você disse, eu tentei tirar o operando '&', porem na hora de compilar o compilador acusa o seguinte erro: C:\Documents and Settings\Denis Andrade\Meus documentos\testes\começo.c In function `Cadastro': 67 C:\Documents and Settings\Denis Andrade\Meus documentos\testes\começo.c [Warning] passing arg 2 of `strcpy' makes pointer from integer without a cast 67 C:\Documents and Settings\Denis Andrade\Meus documentos\testes\começo.c [Warning] passing arg 2 of `strcpy' makes pointer from integer without a cast fazendo novamente outro teste ao cadastrar nome: junior telefone : 123 na hora de listar o programa esta apresentando na tela: j1j (mt estranho) segue todo o codigo é o programa que tenho que fazer sobre listas estatica ainda tenho que implementar outras rotinas, porem estou tendo problemas na rotina de listagem, e quero resolver esse problema primeiro pra depois partir para proximas rotinas //Programa exemplo de implementacao de Lista Encadeada Estatica //Autor: Prof. Alessandro de Castro Borges //Data: fevereiro de 2011 #include <stdio.h> //Bibliotecas #include <stdlib.h> //ESTRUTURAS typedef struct { //Definindo a estrutura do no char nome[50]; char tel[15]; //O campo onde será armazenada a informação do no int prox; //O apontador para o próximo no da lista } Tno; //O nome do tipo associado ao no - Tno typedef struct { //Definindo a estrutura da lista, com vetor, prim e dispo Tno l[100]; //Vetor de nos int prim; //Apontador para o primeiro elemento da lista int dispo; //Apontador para o primeiro no disponivel para insercao } Tlista; //Nome do tipo associado aa lista - Tlista Tlista list; //Declaração da lista a ser usada no programa int i; //Variável para uso como indice char c; //Variavel auxiliar para aguardar o pressionar do <ENTER> //ROTINAS void iniciaLista(Tlista *lista) { for(i=0; i<99; i++) {lista->l.prox = i+1;} //cada no aponta seu proximo lista->l[9].prox = -1; //Ultimo no aponta como proximo o final da lista lista->prim = -1; //Primeiro elemento aponta vazio (lista vazia) lista->dispo = 0; //Primeiro disponivel aponta primeiro no do vetor } int cheia(Tlista lista) //Rotina que verifica se uma lista esta cheia //Parametro de entrada: a lista a ser verificada //Parametro de saida: inexistente //Retorno: retorna 1 se estiver cheia, e 0 caso contrario { if(lista.dispo == -1) return(1); //Se a lista esta cheia, não há no disponivel else return(0); } int vazia(Tlista lista) //Rotina que verifica se uma lista esta vazia //Parametro de entrada: a lista a ser verificada //Parametro de saida: inexistente //Retorno: retorna 1 se estiver vazia, e 0 caso contrario { if(lista.prim == -1) return(1); //Uma lista vazia não possui primeiro elemento else return(0); } void Cadastro(Tlista*lista, char sujeito, char fone) { int p; p = lista->dispo; lista->dispo = lista->l[lista->dispo].prox; lista->l[p].prox = lista->prim; lista->prim = p; strcpy(lista->l[p].nome, &sujeito); strcpy(lista->l[p].tel, &fone); } void imprimeLista(Tlista lista) //Rotina para impressao da lista na tela //Parametro de entrada: a lista a ser impressa //Parametro de saida: inexistente //Retorno: inexistente - funcao void { int p; //Variavel auxiliar que percorre a lista para imprimir as informacoes p = lista.prim; //A partir do primeiro elemento... while (p != -1) { //Enquanto não encontra o final da lista... printf("%s", lista.l[p].nome);//Imprime cada elemento, e printf("%s", lista.l[p].tel); p = lista.l[p].prox; //Salta para o proximo no } //Fim do while(p != -1) } int menu(void) //Rotina para apresentacao do menu e leitura da opcao do usuario //Parametro de entrada: inexistente //Parametro de saida: inexistente //Retorno: o numero da opcao escolhida pelo usuario { int opcao; do { system("cls"); //Limpa a tela - biblioteca <stdlib.h> printf("Listas Encadeadas Implementadas Estaticamente\n"); //Titulo do menu printf("Programa de Testes e Aprendizado\n\n"); printf("MENU\n\n"); printf(" 1 - Cadastrar participante\n"); printf(" 3 - Listar todos os participantes\n"); printf(" 7 - Sair\n"); printf("\n\nOpcao: "); scanf("%d", &opcao); if((opcao<1)||(opcao>7)) { //Caso o usuario digite uma opcao invalida printf("\n\nOpcao '%d' invalida! Escolha entre <1> e <11>.\n", opcao); printf("\nTecle <ENTER> para continuar e tentar novamente..."); c = getche(); } } while((opcao<1)||(opcao>7)); //Repete ate ler uma opcao valida return(opcao); } main (void) //Programa Principal { int op; //Variavel para receber a opcao do menu iniciaLista(&list); //Inicialização da lista com todos os nos disponiveis do { op = menu(); //Chamada da rotina do menu switch(op){ case 1: //Opcao de insercao de um elemento no inicio da lista if (cheia(list)) printf("ERRO! Lista cheia. Impossivel inserir."); else { char sujeito[50]; char fone[15]; printf("\nDigite o nome a ser cadastrado: "); fflush(stdin); // <------------- limpa o buffer de entrada gets (sujeito); printf("\n"); printf("\nDigite o telefone: "); fflush(stdin); // <------------- limpa o buffer de entrada gets (fone); printf("\n"); Cadastro(&list, *sujeito, *fone); printf("Insercao realizada com sucesso!\n"); } break; case 3://IMPRIME if (vazia(list)) printf("\nLista vazia! não há elementos para imprimir.\n"); else { imprimeLista(list); printf("\n\nImpressao concluida!\n"); } break; case 7: //Opcao de saida do programa printf("\nATENCAO! Tem certeza de que deseja sair do programa?\n"); printf("Para confirmar, tecle (S) ou (s): "); c = getche(); //Pedido de confirmacao if((c == 's') || (c == 'S')) { iniciaLista(&list); //Se confirmado, o programa é encerrado printf("\n\nFIM DE PROGRAMA.\n"); } else { printf("\n\nOperacao não confirmada - acao cancelada\n"); op++; //Alteracao do valor da opcao para diferenciar de 7 (saida) } break; } //Fim do switch(op) printf("\npressione <ENTER> para continuar..."); c = getche(); printf("\n"); } while(op != 7); //Repete o processo ate ser escolhida a opcao de saida - 9 printf("Tecle <ENTER> para encerrar\n"); c = getche(); } //Fim do programa.
  3. olá galera, sou novato na linguagem C e estou com dois problemas pra criar um programa tenho que fazer uma lista para cadastrar nome e telefone de usuarios, e criar rotinas para cadastro de usuario, remoção de usuario, listagem e busca por usuario. o primeiro problema está quando solicito ao usuario o nome e telefone a ser cadastrado, atraves desse codigo case 1: if (cheia(list)) printf("ERRO! Lista cheia. Impossivel inserir."); else { char sujeito[50]; char fone[15]; printf("\nDigite o nome a ser cadastrado: "); gets (sujeito); printf("\n"); printf("\nDigite o telefone: "); gets (fone); printf("\n"); Cadastro(&list, *sujeito, *fone); printf("Insercao realizada com sucesso!\n"); } break; rotina de cadastro que é chamada: void Cadastro(Tlista*lista, char sujeito, char fone) { int p; p = lista->dispo; //dispo é a posição disponivel lista->dispo = lista->l[lista->dispo].prox; // prox é o proxima posição lista->l[p].prox = lista->prim; // prim é a posição q inicia a lista lista->prim = p; strcpy(lista->l[p].nome, &sujeito); // copiando o nome q usuario digitou para a lista strcpy(lista->l[p].tel, &fone); //copiando o telefone que o usuario digitou para a lista } porem ao executar, na tela aparece: Digite o nome a ser cadastrado: Digite o telefone: *o problema é que o cursor para apos a palavra telefone, ignorando o cadastro do nome e pulando para linha de baixo esperando o usuario cadastrar o telefone, o que pode ser isso? _____________ o segundo problema esta na listagem, quando o usuario escolhe a opçao de listagem. o programa deveria apresentar o nome e telefone de todos os usuarios cadastrados, porém o programa apenas apresenta o primeiro caracter do telefone, a rotina de listagem do codigo é a seguinte: void imprimeLista(Tlista lista)//ARRUMAR OS 20 DE CADA VEZ //Rotina para impressao da lista na tela //Parametro de entrada: a lista a ser impressa //Parametro de saida: inexistente //Retorno: inexistente - funcao void { int p; //Variavel auxiliar que percorre a lista para imprimir as informacoes int cont = 0; p = lista.prim; //A partir do primeiro elemento... while ((p != -1){ //Enquanto não encontra o final da lista... printf("%s", lista.l[p].nome);//Imprime nome e telefone printf("%s", lista.l[p].tel); p = lista.l[p].prox; //Salta para o proximo no } //Fim do while(p != -1) } Por exemplo se o usuario digita o telefone 123456, na hora de apresentar o telefone na tela, o programa apresenta apenas o primeiro caracter da string ou seja, apresenta o numero '1', galera, sou muito leigo ainda em C, então por favor se puderem paciencia comigo, e ficarei muito grato com qualquer ajuda agradeço desde já
×
×
  • Criar Novo...