Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Paula_Fabiana

Membros Juniores
  • Total de itens

    16
  • Registro em

  • Última visita

  • Qualificações

    N/D

Reputação

12

1 Seguidor

Sobre Paula_Fabiana

  1. C Buscar na lista em C

    @Simon Viegas Olá, meu professor fez, ficou assim /* * Agenda Telefônica usando Lista Simplesmente Encadeada */ #include <locale.h> #include <stdio.h> #include <stdlib.h> // nome do arquivo onde programa irá salvar os dados da lista telefônica #define NOME_ARQUIVO "ListaTelefonica.txt" // estrutura que irá armazenar os dados de um contato typedef struct strContato { char nome[80]; char fone[15]; struct strContato *prox; // apontador para próximo elemento da lista }Contato; // Protótipos das funções locais void LerArquivo(void); void GravarArquivo(void); void Inserir(void); void Alterar(void); void Eliminar(void); void Pesquisar(void); void ListarTodos(void); char* ProcuraSubstring(char *, char *); void DestroiLista(void); void InsereFinalLista(Contato *novo); void AlteraContato(Contato *); // apontador para início da lista que contém os dados da agenda Contato *inicio; void main() { // permitir uso de acentuação setlocale(LC_ALL, ""); // inicialmente a lista está vazia inicio = NULL; // leitura dos dados previamente cadastrados, caso // o usuário tenha usado o programa anteriormente LerArquivo(); // opções do menu int op; do { printf("\n===========================\n"); printf("Agenda Telefônica - Opções:\n"); printf("===========================\n"); printf("1. Inserir\n"); printf("2. Alterar\n"); printf("3. Eliminar\n"); printf("4. Pesquisar\n"); printf("5. Listar Todos\n"); printf("6. Sair\n\n"); printf("---------------------------\n"); printf("Digite a sua opção (1..6): "); scanf("%d", &op); switch(op) { case 1: Inserir(); break; case 2: Alterar(); break; case 3: Eliminar(); break; case 4: Pesquisar(); break; case 5: ListarTodos(); break; } }while (op != 6); // ao terminar o programa, o usuário tem a oportunidade // de fazer a gravação dos dados cadastrados printf("Salva agenda (S/N)? "); char resp; do { scanf("%c", &resp); }while ((tolower((unsigned char)resp )!= 's') && (tolower((unsigned char)resp )!= 'n')); if (tolower((unsigned char)resp )== 's') GravarArquivo(); // desaloca memória alocada para a lista, senão teremos MEMORY LEAK DestroiLista(); } // // Insere novo contato na lista // void Inserir() { Contato *novo = (Contato *)malloc(sizeof(Contato)); if (novo == NULL) { printf("ERRO FATAL: Falta memória!\n"); return; } printf("\nInsere novo contato na lista telefônica:\n"); printf(" Nome: "); do { gets(novo->nome); }while (*novo->nome == 0x00); printf(" Fone: "); do { gets(novo->fone); }while (*novo->fone == 0x00); // novo contato será inserido no final da lista novo->prox = NULL; InsereFinalLista(novo); } void InsereFinalLista(Contato *novo) { // verifica se lista de contatos está vazia if (inicio == NULL) { inicio = novo; return; } // posiciona no último elemento da lista Contato *ultimo = inicio; while(ultimo->prox != NULL) ultimo = ultimo->prox; // insere novo elemento após o último elemento da lista ultimo->prox = novo; } void Alterar() { printf("\nAltera contato na lista telefônica:\n"); int n; char resp, nome[80]; Contato *contato; while(1) { printf("Nome a ser alterado (ou FIM para terminar): "); do { gets(nome); }while(*nome == 0x00); if (stricmp(nome, "fim") == 0) return; // percorre toda a lista n = 0; contato = inicio; while (contato) { // verifica se nome cadastrado na lista contém // o nome informado pelo usuário if (ProcuraSubstring(contato->nome, nome) != NULL) { ++n; // contador de contatos encontrados // mostra dados e pede confirmação do usuário para alterar os dados printf(" %s - Fone: %s\n", contato->nome, contato->fone); printf("Altera (S/N)?"); do { scanf("%c", &resp); }while ((tolower((unsigned char)resp )!= 's') && (tolower((unsigned char)resp )!= 'n')); if (tolower((unsigned char)resp )== 's') AlteraContato(contato); } // próximo contato da lista contato = contato->prox; } // mostra mensagem de erro caso nenhum contato tenha sido encontrado if (n == 0) printf(" Contato não encontrado!\n"); } } void AlteraContato(Contato *contato) { printf(" Nome: "); do { gets(contato->nome); }while (*contato->nome == 0x00); printf(" Fone: "); do { gets(contato->fone); }while (*contato->fone == 0x00); } void Eliminar() { printf("\nElimina contato na lista telefônica:\n"); int n, eliminou; char resp, nome[80]; Contato *contato, // apontador para contato atual *prox, // apontador para contato anterior *ant; // apontador para próximo contato while(1) { printf("Nome a ser eliminado (ou FIM para terminar): "); do { gets(nome); }while(*nome == 0x00); if (stricmp(nome, "fim") == 0) return; // percorre toda a lista de contatos n = 0; contato = inicio; ant = NULL; prox = inicio->prox; while (contato) { eliminou = 0; // flag indicando que contato não foi eliminado // verifica se nome do contato contém nome informado pelo usuário if (ProcuraSubstring(contato->nome, nome) != NULL) { ++n; // contador de contatos encontrados // mostra contato e pede confirmação do usuário para eliminá-lo printf(" %s - Fone: %s\n", contato->nome, contato->fone); printf("Elimina (S/N)?"); do { scanf("%c", &resp); }while ((tolower((unsigned char)resp )!= 's') && (tolower((unsigned char)resp )!= 'n')); if (tolower((unsigned char)resp )== 's') { // salva apontador para próximo contato prox = contato->prox; // libera contato eliminado free(contato); // elemento anterior apontará para o próximo elemento if(ant == NULL) inicio = prox; // eliminando o primeiro elemento da lista else ant->prox = prox; // próximo contato contato = prox; // flag indicando que contato foi eliminado eliminou = 1; } } // pega o próximo contato caso o contato não tenha sido eliminado if (eliminou == 0) { ant = contato; contato = contato->prox; } } // mostra mensagem caso nenhum contato tenha sido encontrado if (n == 0) printf(" Contato não encontrado!\n"); } } void Pesquisar() { printf("\nPesquisa contato na lista telefônica:\n"); int n; char nome[80]; Contato *contato; while(1) { printf("Nome a ser procurado (ou FIM para terminar): "); do { gets(nome); }while(*nome == 0x00); if (stricmp(nome, "fim") == 0) return; // percorre toda a lista n = 0; contato = inicio; while (contato) { // verifica se nome do contato contém o nome informado pelo usuário if (ProcuraSubstring(contato->nome, nome) != NULL) { // mostra dados do contato encontrado printf(" %s - Fone: %s\n", contato->nome, contato->fone); ++n; // atualiza contador de contatos encontrados } contato = contato->prox; } // mostra mensagem indicando que nenhum contato foi encontrado if (n == 0) printf(" Contato não encontrado!\n"); } } // // Mostra todos os contatos cadastrados na lista telefônica // void ListarTodos() { printf("\nMostra todos os contatos na lista telefônica:\n"); if (inicio == NULL) { printf(" Lista está vazia\n"); return; } // percorre toda a lista mostrando os dados de cada contato Contato *contato = inicio; while(contato != NULL) { printf(" Nome: %s - Fone: %s\n", contato->nome, contato->fone); contato = contato->prox; } } // // Pesquisa substring em uma string, ignorando // diferenças entre letras maiúsculas e minúsculas // obs.: a função padrão strstr() considera letras MAI e min diferentes // // Valor Retornado: // Apontador onde substring se encontra na string // NULL, se substring não for encontrada // char* ProcuraSubstring(char *string, char *substring) { char *s, *sub; char *str = string; do { s = str; sub = substring; while (tolower((unsigned char)*s) == tolower((unsigned char )*sub) && *sub) { ++s; ++sub; } if (*sub == 0) return str; }while (*str++); return NULL; } // leitura do arquivo texto contendo, em cada linha, os dados dos // contatos cadastrados. Os campos NOME e FONE estão separados por '|' void LerArquivo() { // abre arquivo texto para leitura FILE *arq = fopen(NOME_ARQUIVO, "r"); if (arq == NULL) return; Contato *novo; char buffer[250], *nome, *fone, *separador; // leitura do arquivo, linha a linha, até que não existam mais linhas while(fgets(buffer, 250, arq) != NULL) { // elimina '\n' no final do buffer *(buffer + strlen(buffer) - 1) = 0x00; // separa os campos separador = strchr(buffer, '|'); if (separador != NULL) { *separador = 0x00; fone = separador + 1; // primeiro caractere depois de '|' // cria novo contato e insere ele no final da lista novo = (Contato *)malloc(sizeof(Contato)); if (novo != NULL) { strcpy(novo->nome, buffer); strcpy(novo->fone, fone); novo->prox = NULL; InsereFinalLista(novo); } } } // fecha arquivo fclose(arq); } // gravação do arquivo texto contendo, em cada linha, os dados dos // contatos cadastrados. Os campos NOME e FONE serão separados por '|' void GravarArquivo() { // abre arquivo texto para gravação. Se arquivo existir, ele será // sobrescrito; caso contrário, ele será criado FILE *arq = fopen(NOME_ARQUIVO, "w"); if (arq == NULL) return; // percorre toda a lista de contatos char buffer[250]; Contato *contato = inicio; while(contato) { // monta linha com nome e fone do contato separador por '|' sprintf(buffer, "%s|%s\n", contato->nome, contato->fone); // grava linha no arquivo fputs(buffer, arq); // próximo contato contato = contato->prox; } // fecha arquivo fclose(arq); } // percorre toda a lista, liberando espaço alocado pela // função malloc() para cada contato void DestroiLista() { Contato *prox; // próximo elemento // percorre toda a lista while (inicio) { // salva próximo elemento, pois o elemento corrente será descartado prox = inicio->prox; // libera memória do elemento corrente free(inicio); // pega o próximo elemento inicio = prox; } }
  2. C Buscar na lista em C

    @Simon Viegas Entendi, obrigada
  3. C Buscar na lista em C

    @tysquare89 obrigada
  4. C Buscar na lista em C

    Então, esse é meu primeiro programa com lista e eu vi feito por um prof no you tube, minha duvida é como chamar a função busca posição na função principal #include <stdio.h> #include <stdlib.h> const int MAXTAM = 1000; int Frente, Tras; int Lista[MAXTAM]; void Lista_Construtor(){ Frente=0; Tras=-1; } bool Lista_Inserir_Inicio(int valor){ if(Lista_Cheia()){ return false; }else{ for(int i=Tras+1;i>Frente;i--) Lista[i]=Lista[i-1]; Lista[Frente]=valor; Tras++; return true; } } bool Lista_Inserir_Fim(int valor){ if(Lista_Cheia()){ return false; }else{ Tras++; Lista[Tras]=valor; return true; } } bool Lista_Inserir(int valor, int Posicao){ if(Lista_Cheia()){ return false; }else{ if(Posicao>=Frente && Posicao<=Tras){ for(int i=Tras+1;i>Posicao;i--) Lista[i]=Lista[i-1]; Lista[Posicao]=valor; Tras++; return true; }else{ return false; } } } bool Lista_Busca_Valor(int valor, int &Posicao){ int i; if(Lista_Vazia()){ return false; }else{ for(i=Frente;i<Tras;i++){ if(Lista[i]==valor){ break; } } if(i==Tras){ return false; }else{ Posicao=i; return true; } valor=Lista[Posicao]; return true; } } int main(){ int valor; Lista_Construtor(); Lista_Inserir_Fim(5); Lista_Inserir_Inicio(10); Lista_Inserir_Fim(7); Lista_Inserir(20,1); Lista_Inserir_Inicio(8); //Lista_Busca_Posicao(*8, 1); system("pause"); return 0; }
  5. C Problema com gravação de arquivo em c

    /*Faça um programa que armazene em um registro de dados (estrutura composta) os dados de um funcionário de uma empresa, compostos de: Nome, Idade, Sexo (M/F), CPF, Data de Nascimento, Código do Setor onde trabalha (0-99), Cargo que ocupa (string de até 30 caracteres) e Salário. Os dados devem ser digitados pelo usuário, armazenados na estrutura e exibidos na tela.*/ #include <stdio.h> #include <stdlib.h> #include <locale.h> struct pessoa { char nome[50]; int idade; char sexo; unsigned long int cpf; char dataNas[15]; }; typedef struct funcionario { char cep[15]; char cargo[30]; float salario; struct pessoa Pessoa; } Funcionario; int main() { setlocale(LC_ALL, "portuguese"); FILE *arq; arq = fopen("arquivo.txt", "a"); if (arq == NULL) { printf("Erro na gravação de dados\n\n"); system("pause"); exit(1); } int n, i; printf("Digite qnts funcionarios gostaria de inserir: "); scanf("%d", &n); Funcionario x[n]; for (i = 0; i < n; i++) { getchar(); printf("Nome: "); fgets(x[i].Pessoa.nome, 50, stdin); printf("Idade: "); scanf("%d", &x[i].Pessoa.idade); printf("Sexo(F/M): "); scanf("%s", &x[i].Pessoa.sexo); printf("CPF: "); scanf("%d", &x[i].Pessoa.cpf); printf("DataNascimento (ddmmaaa):"); scanf("%s", &x[i].Pessoa.dataNas); printf("CEP: (00000000): "); scanf("%s", &x[i].cep); printf("Cargo: "); scanf("%s", &x[i].cargo); printf("Salário: "); scanf("%f", &x[i].salario); } printf("\n----DADOS---\n"); for (i = 0; i < n; i++) { printf("Nome: %s", x[i].Pessoa.nome); printf("Idade: %d", x[i].Pessoa.idade); printf("\nSexo: %c", toupper(x[i].Pessoa.sexo)); printf("\nCPF: %ld", x[i].Pessoa.cpf); printf("\nDataNascimento: %s", x[i].Pessoa.dataNas); printf("\nCEP: %s", x[i].cep); printf("\nCargo: %s", x[i].cargo); printf("\nSalário: %.2f\n", x[i].salario); printf("------------------------------\n"); } for (i = 0; i < n; i++) { fprintf(arq, x[i].Pessoa.nome); fprintf(arq, " ; "); } for (i = 0; i <n; i++){ fprintf(arq, " ", x[i].Pessoa.idade);} printf("\n DADOS GRAVADOS EM ARQUIVOS \n "); /* for (i = 0; i <x[i].Pessoa.idade; i++) fprintf(arq, " ", x[i].Pessoa.idade); for (i = 0; i <strlen(x[i].Pessoa.sexo); i++) fprintf(arq, x[i].Pessoa.sexo); for (i = 0; i <strlen(x[i].Pessoa.cpf); i++) fprintf(arq, " ",x[i].Pessoa.cpf); for (i = 0; i <strlen(x[i].Pessoa.dataNas); i++) fprintf(arq, x[i].Pessoa.dataNas ); for (i = 0; i <strlen(x[i].cep); i++) fprintf(arq,x[i].cep ); for (i = 0; i <strlen(x[i].cargo); i++) fprintf(arq, x[i].cargo); for (i = 0; i <10; i++) fprintf(arq, "valor: R$", x[i].salario); //*/ fclose(arq); return 0; } @Simon Viegas Por enquanto eu tentei gravar só o nome e a idade, depois quero gravar o resto que esta no comentário adicionado 5 minutos depois @devair1010 @Simon Viegas Ué funcionou...haha, o que o Devair falou Agora gravou, agora vou tentar colocar as outras funções, obrigada gente arq txt-> SILVA COSTA ; paula ; 22 adicionado 7 minutos depois @devair1010 e com float ? também é assim ? com "%f"
  6. C Problema com gravação de arquivo em c

    @Simon Viegas Acabei de tentar, continua gravando apenas o nome mesmo, compila normal, mas la não fica gravado arq txt-> paula fabiana ; SILVA COSTA ;
  7. C Problema com gravação de arquivo em c

    @Simon Viegas Não consigo gravar int ou float, apenas string , Tentei colocar idade, mas continua gravando só string arq txt -> paula Fabiana Rosa ; paula fabiana ; for (i = 0; i < strlen(x[i].Pessoa.nome); i++) { fprintf(arq, x[i].Pessoa.nome); fprintf(arq, " ; "); } for (i = 0; i <x[i].Pessoa.idade; i++){ fprintf(arq, " ", x[i].Pessoa.idade);}
  8. C Problema com gravação de arquivo em c

    @Simon Viegas Ah entendi, pois eh...eu tentei fazer sem o vetor anteriormente, para pelo menos gravar, tentei outra vez aqui (porque tenho muitos exercícios para entregar e como não consegui, eu pulei ele ), mas continua dando errado, tipo grava o nome(string), mas para gravar os outros não esta dando certo,, nem idade , cpf... então desisti, vou arrumar mais livros para estudar arquivos, porque na net é muito vago, so mostra como gravar uma linha
  9. C Problema com gravação de arquivo em c

    @Simon Viegas /*Faça um programa que armazene em um registro de dados (estrutura composta) os dados de um funcionário de uma empresa, compostos de: Nome, Idade, Sexo (M/F), CPF, Data de Nascimento, Código do Setor onde trabalha (0-99), Cargo que ocupa (string de até 30 caracteres) e Salário. Os dados devem ser digitados pelo usuário, armazenados na estrutura e exibidos na tela.*/ #include <stdio.h> #include <stdlib.h> #include <locale.h> struct pessoa { char nome[50]; int idade; char sexo; unsigned long int cpf; char dataNas[15]; }; typedef struct funcionario { char cep[15]; char cargo[30]; float salario; struct pessoa Pessoa; } Funcionario; int main() { setlocale(LC_ALL, "portuguese"); FILE *arq; arq = fopen("arquivo.txt", "a"); if (arq == NULL) { printf("Erro na gravação de dados\n\n"); system("pause"); exit(1); } int n, i; printf("Digite qnts funcionarios gostaria de inserir: "); scanf("%d", &n); Funcionario x[n]; for (i = 0; i < n; i++) { getchar(); printf("Nome: "); fgets(x[i].Pessoa.nome, 50, stdin); printf("Idade: "); scanf("%d", &x[i].Pessoa.idade); printf("Sexo(F/M): "); scanf("%s", &x[i].Pessoa.sexo); printf("CPF: "); scanf("%d", &x[i].Pessoa.cpf); printf("DataNascimento (ddmmaaa):"); scanf("%s", &x[i].Pessoa.dataNas); printf("CEP: (00000000): "); scanf("%s", &x[i].cep); printf("Cargo: "); scanf("%s", &x[i].cargo); printf("Salário: "); scanf("%f", &x[i].salario); } printf("\n----DADOS---\n"); for (i = 0; i < n; i++) { printf("Nome: %s", x[i].Pessoa.nome); printf("Idade: %d", x[i].Pessoa.idade); printf("\nSexo: %c", toupper(x[i].Pessoa.sexo)); printf("\nCPF: %ld", x[i].Pessoa.cpf); printf("\nDataNascimento: %s", x[i].Pessoa.dataNas); printf("\nCEP: %s", x[i].cep); printf("\nCargo: %s", x[i].cargo); printf("\nSalário: %.2f\n", x[i].salario); printf("------------------------------\n"); } printf("\n DADOS GRAVADOS EM ARQUIVOS \n "); for (i = 0; i < strlen(x[i].Pessoa.nome); i++) { fprintf(arq, x[i].Pessoa.nome); fprintf(arq, " ; "); } /* for (i = 0; i <x[i].Pessoa.idade; i++) fprintf(arq, " ", x[i].Pessoa.idade); for (i = 0; i <strlen(x[i].Pessoa.sexo); i++) fprintf(arq, x[i].Pessoa.sexo); for (i = 0; i <strlen(x[i].Pessoa.cpf); i++) fprintf(arq, " ",x[i].Pessoa.cpf); for (i = 0; i <strlen(x[i].Pessoa.dataNas); i++) fprintf(arq, x[i].Pessoa.dataNas ); for (i = 0; i <strlen(x[i].cep); i++) fprintf(arq,x[i].cep ); for (i = 0; i <strlen(x[i].cargo); i++) fprintf(arq, x[i].cargo); for (i = 0; i <10; i++) fprintf(arq, "valor: R$", x[i].salario); //*/ fclose(arq); return 0; } Não precisa gravar em arq, só estava tentando
  10. C Problema com gravação de arquivo em c

    @Simon Viegas Não, era só para testar gravar mais de uma linha em arquivo, ainda sou nova em programação....mas muito obrigada
  11. C Problema com gravação de arquivo em c

    @devair1010 Hmm entendi, obrigada
  12. C Problema com gravação de arquivo em c

    for(i=0; i<strlen(x);i++){ fprintf(arq,x.Pessoa.nome ); fprintf(arq, "\n"); fprintf(arq,x.Pessoa.idade ); } Minha dúvida é como colocar no argumento dentro do for, porque quando é apenas uma linha posso colocar o i<strlen(x), mas quero gravar nome e idade. Como fazer
  13. C Problema com ordernação em c

    Entendi, obrigada devair1010
  14. C Problema com ordernação em c

    Então minha dúvida é o que esta acontecendo, quando eu coloco 3 pessoas ele compila e ordena, mas se eu colocar 4 ou mais ele buga, aparece coisas estranhas, estou usando o qsort Novo Documento de Texto.txt typedef struct coisas { int number; int pessoas; char nome[50]; } Coisas; int comparaNome(const void *a, const void *b) { int r = strcmp((*(struct coisas*)a).nome, (*(struct coisas*)b).nome); if(r==0) return 0; //iguais else if(r<0) return -1; //vem antes else return 1; //vem depois } int main() { setlocale(LC_ALL, "portuguese"); int x; printf("Digite a quantidade de pessoas : "); scanf("%d", &x); Coisas c[x]; int i=0; getchar(); for(; i<x; i++) { printf("Digite o %d° nome: ", (i+1)); fgets(c.nome, 50, stdin); printf("Digite a %d° idade: ", (i+1)); scanf("%d", &c.number); qsort(c, x, sizeof(struct coisas), comparaNome); } printf("\t-DADOS EM ORDEM ALFABETICA-\n"); for(i=0; i<x; i++) { printf("%s\n", c.nome); } return 0; }
  15. Problema na hora de imprimir na tela

    Funcionou, era só colocar o getchar(); depois do scanf("%d", &x); super obrigada e pela dica do fgets também. PS: Ah.... e a respeito de como colocar no site obg também , primeiro post... haha.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×