Ir ao conteúdo
  • Cadastre-se

Paula_Fabiana

Membro Júnior
  • Posts

    19
  • Cadastrado em

  • Última visita

posts postados por Paula_Fabiana

  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. 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

    • Curtir 1
  3. @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;
        }
    }

     

  4. 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;
    }
    
    

     

    • Curtir 1
  5. /*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"

    • Curtir 1
  6. @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);}  

     

    • Curtir 1
  7. @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 

    • Curtir 1
  8. @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

     

    • Curtir 1
  9.  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 

     

    • Curtir 1
  10. 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;
    }
     

    • Curtir 1
  11. 14 minutos atrás, isrnick disse:

    Para postar códigos no fórum sempre use a tag CODE apertando o botão <> no topo do campo de respostas, assim você preserva a formatação do código e evita que o fórum faça alterações nele.

     

    Por exemplo, o fórum "comeu" todos os [ i ] (sem espaços) do seu código, pois no fórum isso é a tag para deixar o texto em itálico, então o texto do seu código está em itálico a partir do primeiro que foi encontrado (os demais apenas somem porque o texto já tá em itálico).

     

     

     

    E o problema parece ser que você não limpou o buffer de entrada depois do primeiro scanf:

    
    scanf("%d", &x);

    Logo, está sobrando um '\n' na entrada padrão após o scanf, que então é entendido como uma entrada pelo gets ou fgets que vem a seguir, logo passa direto por ele... (Prefira usar o fgets.)

     

    Então precisa eliminar o '\n' da entrada com um %*c no scanf, ou um getchar após esse scanf.

    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.

    • Haha 1
  12. Então eu digito todos os dados, mas na hora de imprimir ele pula o nome, tentei usar getchar();      e o fflush(stdin); mas nada, sempre pula o nome da pessoa, (Uso o codeBlocks) 

    Codigo

    struct endereco
    {
        char rua[40];
        int numero;

    };
    struct Pessoa
    {
        char nome[50];
        int idade, telefone;
        struct endereco ender;
    };
    typedef struct Pessoa cadastro;
    int main()
    {
        int x, i;
        setlocale(LC_ALL, "portuguese");
        printf("Entre com a qnt de pessoas a serem cadastradas");
        scanf("%d", &x);
        cadastro p[x];
        for(i=0; i<x; i++)
        {
            printf("Nome: ");
            gets(p.nome);
            //fgets(p.nome, 50, stdin);
            getchar();
            fflush(stdin);
            printf("Idade: ");
            scanf("%d", &p.idade);
            printf("Telefone: ");
            scanf("%d", &p.telefone);
            getchar();
            fflush(stdin);
            printf("Rua: ");
            gets(p.ender.rua);
            printf("Número rua: ");
            scanf("%d", &p.ender.numero);

        }

        for(i=0; i<x; i++)
        {

            //getchar();
           // fflush(stdin);
            printf("\nNome: %s", p.nome);
            printf("\nIdade: %d", p.idade);
            printf("\nTelefone: %d", p.telefone);
            printf("\nRua: %s", p.ender.rua);
            printf("\nNúmero rua: %d", p.ender.numero);
        }

        return 0;
    }

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!