Ir ao conteúdo
  • Cadastre-se

Paula_Fabiana

Membro Júnior
  • Posts

    19
  • Cadastrado em

  • Última visita

Reputação

15

1 Seguidor

  1. Então eu gostaria de inserir um vetor que vai de 10 a 1, contudo só sei colocar de formar crescente. Alguém sabe como colocar, por que depois eu tenho que orderna em forma crescente o o quicksort #include <stdio.h> #include <stdlib.h> #include <time.h> #define TAM 10 main() { int i, Vetor[TAM]; for(i= 0; i<TAM; i++) Vetor[i]= i; printf("\n"); for(i= 0; i<TAM; i++) printf("%d", Vetor[i]); } adicionado 22 minutos depois Esquece consegui aqui, obrigado int i, Vetor[TAM], j=TAM; for(i=0; i<TAM; i++){ Vetor[i]= (j); j--; }
  2. @devair1010 Devair muitíssimo obrigada, funcionou, era isso mesmo adicionado 1 minuto depois @vangodp Ok, obrigada
  3. Então sou nova nisso, mas preciso saber como contar uma palavra quantas vezes aparece no texto e sua linha, esta p #include <stdio.h> #include<string.h> int main() { int contador = 0; char palavra[1000][900]; FILE *f = fopen("arquivo.txt", "r"); while (fscanf(f, "%s", palavra[contador]) > 0) { if (strcmp(palavra[contador], "como") == 0) { printf("%s", palavra[contador]); printf("\n"); break; } else contador++; } return 0; } ensando em usar um while, mas nao sei como implementar
  4. @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; } }
  5. @Simon Viegas Entendi, obrigada
  6. 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; }
  7. /*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"
  8. @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 ;
  9. @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);}
  10. @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
  11. @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
  12. @Simon Viegas Não, era só para testar gravar mais de uma linha em arquivo, ainda sou nova em programação....mas muito obrigada
  13. 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

Sobre o Clube do Hardware

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

×
×
  • Criar novo...