Ir ao conteúdo
  • Cadastre-se

oromotoceu

Membro Pleno
  • Posts

    27
  • Cadastrado em

  • Última visita

posts postados por oromotoceu

  1. boa noite pode me ajuda eu fiz esse exercício e queria 
    saber se está certo de acordo com o enunciado 

    4) Faça um programa que calcule e imprima o CR do período para os alunos de Sistemas de
    Informação. Para cada aluno o programa devera ler:
    a) Matrícula;
    b) Quantidade de disciplinas cursadas;
    c) Soma das médias finais das disciplinas.
    Além do CR de cada aluno, o programa deverá imprimir o maior CR dos alunos que cursaram 5
    disciplinas ou mais.

    #include <stdio.h>
    #include <stdlib.h>

     void main()
     {
     int matricula, disciplinas, i;
     float cr, maior=0, nota, notas;

     do {
     notas = 0;
     printf("\nDigite a matricula: ");
     scanf("%d", &matricula);
     if (matricula < 1 || matricula > 5000)
    break;
     printf("\nDigite a quantidade de disciplinas cursadas: ");
     scanf("%d", &disciplinas);
     i = 1;
     while(i <= disciplinas) {
     printf("\nDigite a nota da disciplina %d: ", i);
     scanf("%f", &nota);
     notas += nota;
     i++;
     }
     cr = notas / disciplinas;
     printf("\nMatricula: %d", matricula);
     printf("\nNumero de disciplinas: %d", disciplinas);
     printf("\nCR: %f", cr);

     if (disciplinas > 4 && cr > maior) {
     maior = cr;
     }
     } while(matricula > 0 && matricula <= 5000);

     printf("\nMaior CR dos alunos: %f", maior);
     }

  2. 13 horas atrás, devair1010 disse:

    @oromotoceu

    /*
     *  3) Faça um programa que leia uma quantidade de cartões determinada pelo 
     *  digitador, contendo a idade e o sexo de uma pessoa (1-Masculino, 2-Feminino).
     *  Calcule e imprima a idade média destas pessoas, quantas pessoas do sexo 
     *  feminino estão na faixa dos 18 aos 25 anos e número total de pessoas do sexo
     *  masculino.
    */
    #include <stdio.h>
    #include <string.h>
    int main()
    {
      int quantidade, idade, sexo;
      int numMulher=0, numHomem=0, idadeTotal=0;
      int numPessoa=0;
      int a;
      ///while( a > 0 )   não precisa desse loop
      ///{
        puts("Quantidade de cartoes determinada pelo digitador: ");
        scanf("%d", &quantidade);
        do
        {
          puts("Entre com a idade: ");
          scanf("%d", &idade);
          do
          {
            puts("Entre com o sexo: "); /// putzgrila
            scanf("%d", &sexo);
          } while( sexo != 1 && sexo != 2 ); /// 1 masc  2 fem
          idadeTotal += idade;
          numPessoa++;
          if( sexo == 2 && idade >= 18 && idade <= 25 )
          {
            numMulher++;
          }
          else
            if( sexo == 1 )
              numHomem++;
        }while( quantidade > numPessoa );
        printf("\nA idade media                         e' %5.2f.\
                \nO total de mulheres de 18 aos 25 anos e' %5d.  \
                \nO numero de homens                    e' %5d.\n\n",
                (float) idadeTotal / numPessoa , numMulher,numHomem);
      ///}
      return 0;
    }

     

    ok eu refiz o código 

    #include <stdio.h>

    int main(void) {
        int quantidade, idade, sexo, numPessoa;
        int numMulher = 0;
        int numHomem = 0;
        int idadeTotal = 0;
        int num = 1;

            printf("Quantidade de cartoes determinada pelo digitador: ");
            scanf("%d", &quantidade);
            numPessoa = quantidade;
            while (quantidade > 0) {
                printf("Entre com a idade da pessoa do cartao numero %d: ", num);
                scanf("%d", &idade);
                idadeTotal += idade;
                printf("Entre com o sexo da pessoa do cartao numero %d: ", num);
                scanf("%d", &sexo);
                if (sexo == 1) {
                    numHomem += 1;
                }
                else if (sexo == 2) {
                    if (18 <= idade && idade <= 25)
                        numMulher += 1;
                }
                quantidade--;
                num++;
            }

        printf("A idade media e %.1f\n", ( (float) idadeTotal) / numPessoa);
        printf("O total de mulheres de 18 aos 25 anos e %d.\n", numMulher );
        printf("\nO numero de homens e %d.\n", numHomem);
        return 0;
     }

    • Obrigado 1
  3. 16 horas atrás, devair1010 disse:

    @Eduardo V     se , dentro da função , você colocar uma variável  para receber o retorno     

    Algoritmo "funcao ler outra"
    
    funcao lerTotalc  : real
    Var
       combustiveln   : real
       trechototal    : real
    Inicio
       escreva("distancia ")
       leia( trechototal )
       combustiveln <- trechototal * 3.6
       retorne combustiveln
    fimfuncao
    
    funcao lerCombp               : real // combustivel presente no avião
    Var
       combustivelp, combustiveln : real
       totalcombustivel           : real
       ret                        : real
    Inicio
       combustiveln <- lerTotalc
       escreval("valor retornado da Função")
       escreval("que é o total de combustivel consumido",combustiveln)
       escreval("Quantos litros de combustivel já tem no avião?")
       leia(combustivelp)
       se combustivelp = 0 entao
          totalcombustivel = combustiveln
       senao
          totalcombustivel <- combustiveln - combustivelp
       fimse
       retorne totalcombustivel
    fimfuncao
    
    var
       ret :  real
    Inicio
       ret := lerCombp
       escreval("Total de combustivel ",ret)
    Fimalgoritmo

     

    boa noite pode me ajuda eu fiz esse exercício e queria 
    saber se está certo de acordo com o enunciado 

    3) Faça um programa que leia uma quantidade de cartões determinada pelo 
    digitador, contendo a idade e o sexo de uma pessoa (1-Masculino, 2-Feminino).
    Calcule e imprima a idade média destas pessoas, quantas pessoas do sexo 
    feminino estão na faixa dos 18 aos 25 anos e número total de pessoas do sexo
    masculino.

    #include <stdio.h>
    #include <string.h>

    int main()
    {

    int quantidade, idade, sexo;
    int numMulher=0, numHomem=0, idadeTotal=0;
    int numPessoa=0;
    int a;
    while(a>0)
    {

    puts("\nQuantidade de cartoes determinada pelo digitador: ");
    scanf("%d", &quantidade);
    do
     {
    {

    puts("\nEntre com a idade: ");
    scanf("%d", &idade);
    do


    {

    puts("\n\nEntre com o sexo: ");
    scanf("%d", &sexo);
    }while(sexo!=1 && sexo!=0);

    idadeTotal+=idade;
    numPessoa++;
    if(sexo==1 && idade >18 && idade<25)
    {

    numMulher++;
    }

    else
    numHomem++;
        }

    printf("\nA idade media e' %d.", idadeTotal/numPessoa);
    printf("\nO total de mulheres de 18 aos 25 anos e' %d.", numMulher );
    printf("\nO numero de homens e' %d\n\n", numHomem);
    return 0;
     }

    • Obrigado 1
  4. boa noite pode me ajuda eu fiz esse exercício e queria 
    saber se está certo de acordo com o enunciado 

    3) Faça um programa que leia uma quantidade de cartões determinada pelo 
    digitador, contendo a idade e o sexo de uma pessoa (1-Masculino, 2-Feminino).
    Calcule e imprima a idade média destas pessoas, quantas pessoas do sexo 
    feminino estão na faixa dos 18 aos 25 anos e número total de pessoas do sexo
    masculino.

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    
    int quantidade, idade, sexo;
    int numMulher=0, numHomem=0, idadeTotal=0;
    int numPessoa=0;
    int a;
    while(a>0)
    {
    
    puts("\nQuantidade de cartoes determinada pelo digitador: ");
    scanf("%d", &quantidade);
    do
     {
    {
    
    puts("\nEntre com a idade: ");
    scanf("%d", &idade);
    do
    
    
    {
    
    puts("\n\nEntre com o sexo: ");
    scanf("%d", &sexo);
    }while(sexo!=1 && sexo!=0);
    
    idadeTotal+=idade;
    numPessoa++;
    if(sexo==1 && idade >18 && idade<25)
    {
    
    numMulher++;
    }
    
    else
    numHomem++;
        }
    
    printf("\nA idade media e' %d.", idadeTotal/numPessoa);
    printf("\nO total de mulheres de 18 aos 25 anos e' %d.", numMulher );
    printf("\nO numero de homens e' %d\n\n", numHomem);
    return 0;
     }

     

    • Amei 1
  5. Em 03/12/2021 às 20:15, devair1010 disse:

    @oromotoceu    Qual IDE / Compilador que você está usando ?  ,  você observou  nas msg do  compilador , sobre erros no código  ? ,     tem erros ,  e não nem compila ,  e  você colocou " * " asterisco no scanf , creio que não funcionará ,  mas QuaL sua ideia ao usar assim esse scanf 

    scanf("%d", &*Valor);  // esse simboLo  & siginifica endereco 
                           // onde armazenar o numero
    
    scanf("%d", &Valor);   // Geralmente se usa assim .

    e se você usar o visual studio , colocando a stinha do mouse em cima das linhas marcadas em vermelho ,  você pode ter sugestões de como consertar os erros do código ,  e esse código seria para fazer o quê  ?   , 

       tem um enunciado  ?  se tiver pode postar ele aqui ,

     

    • Obrigado 1
  6. 8 horas atrás, Midori disse:

    @oromotoceu Use o botão Code para postar o seu código, assim fica mais organizado e melhor para ler. Nos dois exercícios você está passando um vetor como argumento para a função, mas o enunciado não diz nada sobre vetor. No primeiro só pede para passar dois números e no segundo são as coordenadas de dois pontos.

     

    Sobre esta parte, 

     

    Para retornar a distância seu calculo deve ter as coordenadas dos dois pontos: √[(x1 - x2)² + (y1 - y2)²], p.ex,  

    float qx = (x1 - x2) * (x1 - x2);
    float qy = (y1 - y2) * (y1 - y2);
    
    return sqrt(qx + qy);

     

     

    obrigado por ter me ajudado 

    • Curtir 2
  7. boa noite pode me ajuda eu fiz esse exercício e queria 
    saber se está certo de acordo com o enunciado 

    2) Faça um programa que tenha uma função que receba dois números inteiros retorne o menor número.
    #include <stdio.h>
    #include <iostream>
    #include <locale.h>
    #define  MAX 30

    using namespace std;

    void preencher_vetor (int n [], int tam){;
    for (int i=0; i<tam;i++){
    cin>> n [i];
     }
    }

    void imprimir_vetor (int n [], int tam){;
    for (int i=0; i<tam;i++){
    cout<<n [i] << "";
     }
    }


    int menor(int n[], int tam){
    int aux_menor = n[0];
    for (int i=0; i<tam; i++){
    if(aux_menor> n[i+1]){
    aux_menor = n[i+1];
       }
      }

    return aux_menor;
    }
    int main(){
    int n [MAX], tam;
    cout<<"Digite o tamanho do vetor" << endl;
    cin>>tam;
    n[tam];
    preencher_vetor(n,tam);
    cout<< endl;
    imprimir_vetor(n,tam);
    cout<<"Menor elemento do vetor" << menor(n,tam) << endl;
    return 0;
    }
    3) Escreva uma função que calcule e retorne a distância entre dois pontos ( x1, y1) e (x2, y2). Todos os números e valores de retorno devem ser do tipo float.
    #include <iostream>
    #include <math.h>
    using namespace std;
    struct Ponto{
        float x;
        float y; };
        void LerRetangulo(Ponto ret[], int tam) {
            for(int i = 0; i < tam; i++) {
                    cout << "digite coordenadas x e y do ponto " << i + 1 << endl;
            cin >> ret[i].x >> ret[i].y; } }
            double CalcDistancia(Ponto ret[],
                                 int tam) {
                                     double distancia = 0;
                                     for(int i = 0; i < tam; i++) {
                                            distancia += sqrt(pow(ret[i].x, 2) + pow(ret[i].y, 2));
                                     }
                                     return distancia; }
                                     void imprimir(double distancia, Ponto ret[], int tam) {
                                         for (int i = 0; i < tam; i++) {
                                                cout << "Ponto " << i << " = " << ret[i].x << ", " << ret[i].y <<endl; }
                                         cout << "Distância = " << distancia << endl; }
                                         int main(int argc, char *argv[]) {
                                             Ponto retangulo[4];
                                             LerRetangulo(retangulo, 4);
                                             imprimir(CalcDistancia(retangulo, 4), retangulo, 4);
                                             }

  8. Em 01/02/2022 às 20:45, devair1010 disse:

    @oromotoceu    seria melhor você criar um novo post no tópico de Linguagem c ,  para obter ajuda ,   pois esse aqui é de c#  ,  e veja se consegue colocar com esse formato  aqui de baixo  :

    #define _CRT_SECURE_NO_WARNINGS
    /*
      3) Faça um programa que leia as seguintes informações sobre os alunos :
      • Nome do aluno;
      • Número de faltas.
      • Crie uma turma com 5 alunos.
      • Cada turma terá 20 aulas no semestre.
      O programa deve imprimir o percentual de faltas para cada aluno e ao final
      do processamento o total de alunos reprovados por falta(25 % de faltas).
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main() 
    {
        int faltas = 0;
        char nome[25] = {0};
        float perc = 0;
        int reprovados = 0;
        for (int i = 0; i < 5; i++)                  // esse Loop criou uma turma com cinco Alunos
        {
            printf("Nome ");                         // Nome do Aluno 
            scanf("%s", nome);                       // pega o nome 
            printf("Qtd de faltas ");                // msg
            int r = scanf("%d", &faltas);            // pega o numer de faltes e também o retorno de scanf
            if (r == 0)printf("Erro !\n");           // se scanf não leu nada
    		                                         // pela Regra de Trêss
            perc = (float)100 * faltas / 20;         // 20 eh o total de Aulas ,  igual a 100 porcyentoo
            printf("percentual de faltas para o Aluno %s %.2f\n",nome,perc);
            if (perc >= 25)reprovados++;             // total de reprovados
        }
        printf("Foram reprovados %d\n", reprovados); // mostra o tatal de Alunos reprovados  port Galtas
        return 0;
    }

     

    desculpa as vezes eu me confundo com essas opções do site 

    • Obrigado 1
  9. Em 02/02/2022 às 16:12, Midori disse:

    @oromotoceu Para entrar com os elementos é com as funções de input (scanf e fgets).

     

    Se quiser iniciar a estrutura com os elementos para testar os percentuais pode fazer algo assim,

    int main(void){
        Aluno aluno[5] = {
            {"Aluno 1", 2},
            {"Aluno 2", 3},
            {"Aluno 3", 10},
            {"Aluno 4", 0},
            {"Aluno 5", 5}
        };
    
        for(int i = 0; i < 5; i += 1){
            printf(
                "%d) %s | Faltas = %d\n",
                i, aluno[i].nome,
                aluno[i].faltas
            );
        }
        return 0;
    }

     

    obrigado por ter respondido o meu comentário e desculpa por não ter respondido antes estava ocupado com as outras tarefas posso ser seu amigo 

  10. Em 11/01/2022 às 19:51, mauro_b disse:

    @oromotoceu Olá!

     

    Penso que reutilizou uma resposta ao exercício anterior que é semelhante. Sendo a pergunta a mesma: contar e buscar elementos do 'conjunto' chave no 'conjunto' fonte. No caso, o conjunto "key" que antes foi as vogais, agora necessita ser o caractere espaço e tabulação [acima citados]. Talvez dividir e conquistar uma solução que resolve para uma chave e depois reutilizar [em forma de função] no problema de muitas chaves simplifique o desenvolvimento e melhore a aprendizagem.

     

    O procedimento mental [sem o uso da linguagem C] é quase igual à programação. Se parar e pensar no modo que faria para catar e contar formas/números específicos espelhadas na sala terá mesma impressão que usualmente: 1. Escolhe-se UMA das formas específicas [na ordem que estão], 2. Compara-se com as espelhadas, 3. Incrementa-se a quantidade acumulada quando uma das espalhadas é igual à específica, e repete essas etapas até a última das específicas.

     

    Imagino que essa não é resposta que a maioria espera! É com intenção de fazer você começar de novo o código.

    [:)

    obrigado por ter respondido o meu comentário esses dias eu estava de férias e estava revendo alguns exercícios antigos posso ser seu amigo ?

    • Curtir 1
  11. Em 30/12/2021 às 22:57, devair1010 disse:

    se o atendente não conhece esse cliente , então como vai inserir os dados dele no sistema  para depois iniciar o atendimento  ?  , 

    para que serve uma função que vai apenas fechar um arquivo  ?   ,   por que você está usando argv , para abrir o arquivo  ?  ,     e por que você disse que o arquivo não poderá mais ser aberto   ?   ,    mas para fazer a busca no arquivo vai precisar abrir o arquivo sim  ,    e o que significa essas duas linhas  ?  

    e usando o botão  code <>  para postar ,  seu código  ficou assim :

    /*
    Denunciar
    #1
    Postado 12 de dezembro
    boa noite fiz esse exercício e não está certo pode me ajudar por favor
    
    1 - Inserir dados da consulta;
    a.Iniciar atendimento;
    2 - Exibir consultas;
    3 - Consultar atendimentos;
    4 - Finalizar programa.
    O programa deve funcionar da seguinte maneira.Quando um cliente chega na veterinária, o atendente antes de iniciar o atendimento insere os dados dele no sistema e logo após inserir os dados é apresentado a opção de iniciar o atendimento.Os dados devem ficar em um arquivo binário e servirá para todos que forem atendidos na veterinária, já o atendimento deve ser um arquivo de texto, gerado com o nome do animal + o nome do dono.
    Ao finalizar a entrada dos dados de atendimento, que deve ser um arquivo de texto para cada atendimento, o sistema retorna para o menu.
    O arquivo de texto do atendimento, pode ser feito com a inserção de várias linhas de texto até que o veterinário não queira mais inserir texto finalizando o arquivo, este não poderá ser reaberto.
    A opção Exibir consultas, apresenta todos as consultas cadastradas.
    A opção Consultar atendimentos, permite que o usuário digite o nome do animal + dono e seja feita a busca pelo arquivo.
    */
    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <locale.h>
    #define getch() _getch()
    #define kbhit() _kbhit()
    
    typedef struct 
    {
        char nome1[100];
        char nome2[100];
        int data1, data2;
        float valor;
        int cont;
    } clinica;
    
    int menu();
    int Inserirdadosdaconsulta(clinica*);
    int escreverdadosarquivo(FILE* , clinica*);
    int carregararquivo(FILE* , clinica*);
    int Exibirconsultas(FILE* , clinica*);
    int Finalizarprograma(FILE*);
    int Consultaratendimentos(FILE*, clinica*);
    int Iniciaratendimento(FILE*,clinica*);
    /*
    int cont = 0;
    FILE* arquivo;
    animal_ + _dono f[1000];
    animal_ + _dono F;
    */
    int main()
    {
        clinica c[10];
        c[0].cont = 0;
        FILE* arquivo ;
        arquivo = fopen("dados.x", "r");
        int opc = 0;
        setlocale(LC_ALL, "Portuguese");
        do
        {
            fflush(stdin);
            opc = menu();
            switch (opc)
            {
            case 1:
                Inserirdadosdaconsulta(c);
                break;
            case 2:
                Iniciaratendimento(arquivo,c);
                break;
            case 3:
                Exibirconsultas(arquivo,c);
                break;
            case 4:
                Consultaratendimentos(arquivo, c);
                break;
            case 5:
                Finalizarprograma(arquivo);
                break;
            default:
                printf("\nOpcao inválida");
            }
            fflush(stdin);
            printf("\nDeseja continuar: s/n?");
            scanf("%c", &opc);
        } while (opc != 78 || opc != 110);
    
        return 0;
    }
    
    int Inserirdadosdaconsulta(clinica f[]) 
    {
        printf("Para finalizar o cadastro clica ponto:\n");
        while (1)
        {
            fflush(stdin);
            printf("Nome1? ");
            fgets(f[f[0].cont].nome1,99,stdin);
            if (!strcmp(f[f[0].cont].nome1, ".")) break;
            printf("Nome2? ");
            fgets(f[f[0].cont].nome2,99,stdin);
            if (!strcmp(f[f[0].cont].nome2, ".")) break;
            printf("Data1? ");
            scanf("%d", &f[f[0].cont].data1);
            printf("Data2? ");
            scanf("%d", &f[f[0].cont].data2);
            printf("Valor? ");
            scanf("%f", &f[f[0].cont].valor);
            f[0].cont++;
        }
        return 0;
    }
    int Exibirconsultas(clinica f[]) 
    {
        for (int i = 0; i < f[0].cont; i++) 
        {
            printf("Data 1 --= %d     \n\
                  \rData 2 --= %d     \n\
                  \rNome 1 --= %s     \n\
                  \rNome 2 --= %s     \n\
                  \rValor ---= %7.2f \n", 
                  f[i].data1, f[i].data2, 
                  f[i].nome1, f[i].nome2, 
                  f[i].valor);
        }
        return 0;
    }
    int escreverdadosarquivo(FILE* arq, clinica f[]) 
    {
    
        if ((arq = fopen("dados.x", "wb")) == NULL)
        {
            printf("Arquivo não pode ser criado\n");
            exit(1);
        }
        for (int i = 0; i < f[0].cont; i++) 
        {
            fwrite(&f[i], sizeof(clinica ), 1, arq);
        }
        printf("Dados digitados com sucesso!\n");
        fclose(arq);
        return 0;
    }
    int carregararquivo(FILE* arq,clinica f[]) 
    {
        if ((arq = fopen("dados.x", "r")) == NULL)
        {
            printf("O arquivo não pode ser aberto\n");
            exit(1);
        }
        // limpeza de todos os itens dentro da memória antes de carregar os dados do arquivo
        memset(f, 0, sizeof(f));
        int cont = 0;
        while (1) 
        {
            fread(&f, sizeof(clinica), 1, arq);
            if (feof(arq)) break;
            //f[cont] = f;
            cont++;
        }
        printf("Abertura dos dados na memória com sucesso!");
        fclose(arq);
        return 0;
    }
    int Iniciaratendimento(FILE* arq , clinica f[])
    {
        while (1)
        {
            fread(&f, sizeof(clinica), 1, arq);
            if (feof(arq)) break;
            printf("\
                \n Data 1 ---= %d      \n\
                \r Data 2 ---= %d      \n\
                \r Nome 1 ---= %s      \n\
                \r Nome 2 ---= %s      \n\
                \r Valor ----= %7.2f \n\n",
                f[f[0].cont].data1, f[f[0].cont].data2, f[f[0].cont].nome1,
                f[f[0].cont].nome2, f[f[0].cont].valor
            );
        }
        fclose(arq);
        exit(1);
        return 0;
    }
    int Consultaratendimentos(FILE* arq,clinica f[]) 
    {
        char nome1[100];
        char nome2[100];
        clinica aux[100];
        int i = 0;
        fflush(stdin);
        printf("Digite o atendimento que você quer consultar?");
        fgets(nome1,99,stdin);
        printf("Digite o atendimento que você quer consultar?");
        fgets(nome2,99,stdin);
        //Iniciaratendimento();
        while (1) 
        {
            fread(&f, sizeof(clinica), 1, arq);
            if (feof(arq)) break;
    
            //if (strstr(F.nome1, F.nome2, nome) != NULL) 
            {
                //aux[i] = f;
                i++;
            }
        }
        fflush(stdin);
        for (int x = 0; x < i; x++) 
        {
            printf("\n Data 1 ---= %d       \n\
                    \r Data 3 ---= %d       \n\
                    \r Nome 1 ---= %s       \n\
                    \r Nome 2 ---= %s       \n\
                    \r Valor ----= %7.2f \n\n", 
                    aux[x].data1, aux[x].data2, 
                    aux[x].nome1, aux[x].nome2, 
                    aux[x].valor);
        }
        fclose(arq);
        return 0;
    }
    int Iniciaratendimento(FILE* arq) 
    {
        if ((arq = fopen("dados.x", "r")) == NULL) {
            printf("Não foi possível abrir o arquivo!!\n");
            exit(1);
        }
        return 0;
    }
    int Finalizarprograma(FILE* arq)
    {
        fclose(arq);
        return 0;
    }
    int menu() 
    {
        printf("\n 1  - Inserir dados da consulta\n\
                \r na.- Iniciar atendimento      \n\
                \r 2  - Exibir consultas         \n\
                \r 3  - Consultar atendimentos   \n\
                \r 4  - Finalizar programa       \n\
                \r      Escolha sua opcao : "     );
        return getch() - 48;
    }

    mas ainda tem algum erro que não consegui descobrir .

    obrigado por ter respondido o meu comentário esse dia foi tenso para mim e uma derrota que até hoje não esqueci 

    • Obrigado 1
  12. Em 05/12/2021 às 23:27, arfneto disse:

    Use o tal botão code como explicado no primeiro post do forum, DESTE forum por exemplo

     

    Veja a diferença

     

    #include <stdio.h>
    #include <stdlib.h>
    #define MAXTAM 1000
    int  Frente, Tras, Lista[MAXTAM];
    void Lista_Construtor()
    {
        Frente = 0;
        Tras   = -1;
    }
    int Lista_Vazia()
    {
        if (Tras == -1)
            return 1;
        else
            return 0;
    }
    int Lista_Cheia()
    {
        if (Tras == MAXTAM - 1)
            return 1;
        else
            return 0;
    }
    int Lista_Tamanho() { return Tras + 1; }
    int Lista_Inserir_Inicio(int Valor)
    {
        if (Lista_Cheia()) { return 0; }
        else
        {
            /*se quero inserir na posição 0,
            vou deslocar todos os elementos para frente*/
            for (int i = Tras + 1; i > Frente; i--)
            {
                Lista[i] = Lista[i - 1];
            }
            Lista[Frente] = Valor;
            Tras++;
            return 1;
        }
    }
    int Lista_Inserir_Fim(int Valor)
    {
        if (Lista_Cheia()) { return 0; }
        else
        {
            Tras++;
            Lista[Tras] = Valor;
            return 1;
        }
    }
    int Lista_Inserir(int Valor, int Posicao)
    {
        if (Lista_Cheia()) { return 0; }
        else
        {
            /* Para verificar se a posição
            está no meio da lista */
            if (Posicao > Frente && Posicao < Tras)
            {
                for (int i = Tras + 1; i > Posicao; i--)
                {
                    Lista[i] = Lista[i - 1];
                }
                Lista[Posicao] = Valor;
                Tras++;
                return 1;
            }
            else
            {
                return 0;
            }
        }
    }
    int Lista_Remover_Inicio(int* Valor)
    {
        if (Lista_Vazia()) { return 0; }
        else
        {
            *Valor = Lista[Frente];
            for (int i = Frente; i < Tras; i++) { Lista[i] = Lista[i + 1]; }
            Tras--;
        }
    }
    int Lista_Remover_Fim(int* Valor)
    {
        if (Lista_Vazia()) { return 0; }
        else
        {
            *Valor = Lista[Tras];
            Tras--;
            return 1;
        }
    }
    int Lista_Remover(int* Valor, int Posicao)
    {
        if (Lista_Vazia()) { return 0; }
        else
        {
            if (Posicao > Frente && Posicao < Tras)
            {
                *Valor = Lista[Posicao];
                for (int i = Posicao; i < Tras; i++)
                {
                    Lista[i] = Lista[i + 1];
                }
                Tras--;
                return 1;
            }
        }
    }
    int Lista_Get_toda(int* Valor)
    {
        if (Lista_Vazia()) { return 0; }
        else
        {
            *Valor = Lista[Frente];
            return 1;
        }
    }
    int Lista_Get_inicio(int* Valor)
    {
        if (Lista_Vazia()) { return 0; }
        else
        {
            *Valor = Lista[Frente];
            return 1;
        }
    }
    int Lista_Get_Fim(int* Valor)
    {
        if (Lista_Vazia()) { return 0; }
        else
        {
            *Valor = Lista[Tras];
            return 1;
        }
    }
    int Lista_Busca_Valor(int Valor, int* Posicao)
    {
        int i;
        if (Lista_Vazia()) { return 0; }
        else
        {
            for (i = Frente; i < Tras; i++)
            {
                if (Lista[i] == Valor) { break; }
            }
            if (i == Tras) { return 0; }
            else
            {
                *Posicao = i;
                return 1;
            }
        }
    }
    int Lista_Busca_Posicao(int* Valor, int Posicao)
    {
        if (Lista_Vazia()) { return 0; }
        else
        {
            if (Posicao > Frente && Posicao < Tras)
            {
                *Valor = Lista[Posicao];
                return 1;
            }
            else
            {
                return 0;
            }
        }
    }
    int main()
    {
        int i, Valor, op = 0, pos;
        Lista_Construtor();
        while (op != 12)
        {
            printf("*** Menu de opções ***\n");
            printf("1-Inserir início\n");
            printf("2-Inserir fim\n");
            printf("3-Inserir meio\n");
            printf("4-Excluir início\n");
            printf("5-Excluir fim\n");
            printf("6-Excluir meio\n");
            printf("7-Mostrar toda lista\n");
            printf("8-Mostrar primeiro item da lista\n");
            printf("9-Mostrar último item da lista\n");
            printf("10-Mostrar a posição de um item da lista\n");
            printf("11-Mostrar o valor de uma posição\n");
            printf("12-Sair\n");
            printf("Escolha uma opção: ");
            scanf("%d", &op);
            switch (op)
            {
                case 1:
                    printf("Digite o valor a ser inserido: ");
                    scanf("%d", &Valor);
                    Lista_Inserir_Inicio(Valor);
                    break;
                case 2:
                    printf("Digite o valor a ser inserido: ");
                    scanf("%d", &Valor);
                    Lista_Inserir_fim(Valor);
                    break;
                case 3:
                    printf("Digite o valor a ser inserido: ");
                    scanf("%d", &Valor);
                    printf("Digite a posição que deseja inserir: ");
                    scanf("%d", &pos);
                    Lista_ Inserir_meio(int Valor, pos);
                    break;
                case 4:
                    printf("Digite a remoção do início: ");
                    scanf("%d", &*Valor);
                    Lista_ Excluir_inicio(*Valor);
                    break;
                case 5:
                    printf("Digite a remoção do fim: ");
                    scanf("%d", &*Valor);
                    Lista_ Excluir_fim(*Valor);
                    break;
                case 6:
                    printf("Digite a remoção do meio: ");
                    scanf("%d", &Valor);
                    printf("Digite a posição que deseja remover: ");
                    scanf("%d", &*Posicao);
                    Lista_ Excluir_meio(intValor, *pos);
                    break;
                case 7:
                    printf("Digite ao a mostrar toda lista: ");
                    scanf("%d", &Valor);
                    Lista_ mostrar_toda_lista(Valor);
                    break;
                case 8:
                    printf("Digite ao a mostrar primeiro item da lista: ");
                    scanf("%d", &*Valor);
                    Lista_ mostrar_primeiro_item_da_lista(*Valor);
                    break;
                case 9:
                    printf("Digite ao a mostrar último item da lista: ");
                    scanf("%d", &*Valor);
                    Lista_ mostrar_ultimo_item_da_lista(*Valor);
                    break;
                case 10:
                    printf(
                        "Digite ao a mostrar a posição de um item da "
                        "lista: ");
                    scanf("%d", &Valor);
                    printf(
                        "Digite a posição que deseja mostrar na lista: ");
                    scanf("%d", &*pos);
                    Lista_ mostrar_posicao_de_um_item_da_lista(
                        intValor, *pos);
                    break;
                case 11:
                    printf("Digite ao a mostrar o valor de uma posição: ");
            scanf("%d", &*Valor
            printf("Digite a posição que deseja mostrar no valor: ");
            scanf("%d", &pos);
            Lista_ mostrar_posicao_de_um_valor_da_lista(int*Valor, pos);
            break;
            case 12:
            default:
            printf("Valor Invalido!\n");
            system("PAUSE");
            }
        }
        return 0;
    }

     

     

    Seu programa tem muitos problemas ainda :(

     

    Teste todos os retornos de scanf().

     

    Para testar um programa desses use as próprias funções: num simples loop insira registros até encher a lista, esvazie até ficar vazia, mostre os valores a cada passo, o simples: use um programa para testar o programa

     

     

    obrigado por ter respondido o meu comentário 

    agora, oromotoceu disse:

    obrigado por ter respondido o meu comentário posso ser seu amigo ?

     

    • Curtir 1
  13. Em 25/01/2022 às 20:39, devair1010 disse:

    @Henrique_Rodrigues2007    entendi , que você Quer que essa calculadora além de fazer os cálculos , também fale , com voz humana , o resultado para o usuário , e de preferência no idioma português .  ?  ?

    boa noite fiz esse exercício e não tenho certeza se está de acordo com o enunciado pode me ajudar por favor  

    3) Faça um programa que leia as seguintes informações sobre os alunos:
    • Nome do aluno;
    • Número de faltas.
    • Crie uma turma com 5 alunos. 
    • Cada turma terá 20 aulas no semestre.
    O programa deve imprimir o percentual de faltas para cada aluno e ao final 
    do processamento o total de alunos reprovados por falta (25% de faltas).

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    main(){
    float notap;  float media;
    float notas;  int faltas;
    float notat;  int i;
    int cont,contr;
    int aprovado,reprovado;
    for(i=0; i<2; i++){
    printf("Digite Suas Notas \n");
    printf("Nota 1:");
    scanf("%f", &notap);
    printf("Digite sua segunda nota \n:");
    scanf("%f", &notas);
    printf("Digite sua terceira nota\n :");
    scanf("%f", &notat);
    printf("Digite sua quarta nota\n :");
    scanf("%f", &notat);
    printf("Digite sua quinta nota\n :");
    scanf("%f", &notat);
    printf("Digite sua faltas \n");
    scanf("%d",&faltas);
    media=((notap + notas + notat+ notat+ notat)/5);
    printf("Sua media sera %2.f\n",media);
    if(media>=9){
    cont++;
    printf("Seu conceito esta A. voce foi aprovado\n");
    }else if(media>=7.5){
     printf("Seu conceito esta B. voce foi reprovado\n");
    }else if(media==5.0){
    printf("Seu conceito sera C.voce foi reprovado\n");
    }else if(media<5.0){
    printf("Seu conceito esta D. voce foi aprovado\n");
    }else if(media>=8.5){
    printf("Seu conceito esta E. voce foi aprovado\n");
    }else if(media>=9.5){
    contr++;
    printf("voce esta Reprovado Va Estudar\n");
    }else if(faltas>25){
     printf("voce esta Reprovado\n");
    }
    else if(media< 7.0 && faltas<= 25){
     printf("voce esta reprovado\n");
     }
     }
    printf("Foram aprovados %d\n",cont);
    printf("Foram reprovados %d\n",contr);
    }


     

    • Obrigado 1
  14. 1 hora atrás, Midori disse:

    @oromotoceu Não está de acordo com o enunciado, aí diz que a turma tem 5 alunos com 20 aulas. Seu código tem que pedir o nome com a quantidade faltas de cada aluno, para isso crie uma estrutura e declare como um vetor de 5 elementos.

     

    typedef struct{
        char nome[50];
        int faltas;
    }Aluno;

     

    E mostre cada um no loop, p.ex,

    aluno[i].faltas/20.0 * 100;

     

    obrigado por ter me ajudado você sabe um site para me poder recomendar de como criar uma estrutura com os elementos por favor 

    • Obrigado 1
  15. boa tarde fiz esse exercício e não tenho certeza se está de acordo com o enunciado pode me ajudar por favor  

    3) Faça um programa que leia as seguintes informações sobre os alunos:
    • Nome do aluno;
    • Número de faltas.
    • Crie uma turma com 5 alunos. 
    • Cada turma terá 20 aulas no semestre.
    O programa deve imprimir o percentual de faltas para cada aluno e ao final 
    do processamento o total de alunos reprovados por falta (25% de faltas).

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    main(){
    float notap;  float media;
    float notas;  int faltas;
    float notat;  int i;
    int cont,contr;
    int aprovado,reprovado;
    for(i=0; i<2; i++){
    printf("Digite Suas Notas \n");
    printf("Nota 1:");
    scanf("%f", &notap);
    printf("Digite sua segunda nota \n:");
    scanf("%f", &notas);
    printf("Digite sua terceira nota\n :");
    scanf("%f", &notat);
    printf("Digite sua quarta nota\n :");
    scanf("%f", &notat);
    printf("Digite sua quinta nota\n :");
    scanf("%f", &notat);
    printf("Digite sua faltas \n");
    scanf("%d",&faltas);
    media=((notap + notas + notat+ notat+ notat)/5);
    printf("Sua media sera %2.f\n",media);
    if(media>=9){
    cont++;
    printf("Seu conceito esta A. voce foi aprovado\n");
    }else if(media>=7.5){
     printf("Seu conceito esta B. voce foi reprovado\n");
    }else if(media==5.0){
    printf("Seu conceito sera C.voce foi reprovado\n");
    }else if(media<5.0){
    printf("Seu conceito esta D. voce foi aprovado\n");
    }else if(media>=8.5){
    printf("Seu conceito esta E. voce foi aprovado\n");
    }else if(media>=9.5){
    contr++;
    printf("voce esta Reprovado Va Estudar\n");
    }else if(faltas>25){
     printf("voce esta Reprovado\n");
    }
    else if(media< 7.0 && faltas<= 25){
     printf("voce esta reprovado\n");
     }
     }
    printf("Foram aprovados %d\n",cont);
    printf("Foram reprovados %d\n",contr);
    }


     

    • Curtir 1
  16. Em 11/01/2022 às 09:15, Lucca Rodrigues disse:

    @oromotoceu

    Não está. Veja o enunciado:

    Ele menciona "espaços em branco", e isso pode ser espaço comum ( ' ' ), tabulação horizontal ( '\t' ), carriage return ( '\r' ), newline ( '\n' ), tabulação vertical ( '\v' ) ou formfeed ( '\f' ).

    isspace() da ctype verifica se o caractere passado como argumento é um caractere de espaço em branco, retorna um valor diferente de 0 caso seja e 0 caso não seja. Use ela ou então faça sua própria função, em geral é a mesma ideia que implementou: uma string com todos os caracteres de espaço em branco e um loop pra verificar se algum deles corresponde a um caractere em questão da string que o usuário digitou.

     

    gets() é obsoleta, melhor evitar. Você poderia usar fgets(), scanf() ou alguma outra função, veja:

    char str[101];
    
    /* Usando fgets */
    if(fgets(str, sizeof(str), stdin) != NULL) {
        if(str[strlen(str) - 1] == '\n') {
            // '\n' na penultima posição da string
            str[strlen(str) - 1] = '\0';
        } else {
            int ch;
            while((ch = fgetc(stdin)) != '\n' && ch != EOF);
        }
    }
    
    /* Usando scanf */
    int ch;
    while(scanf("%100[^\n]", str) < 1) {
        // Lendo o que ha de resto
        while((ch = fgetc(stdin)) != '\n' && ch != EOF);
        // Informando o usuario
        printf("Entrada invalida!\nDigite novamente:\n");
    }
    // Lendo o que ha de resto
    while((ch = fgetc(stdin)) != '\n' && ch != EOF);

    obrigado por ter me ajudado desculpe por não ter visto essa notificação é que eu uso pc e dificilmente eu uso o computador porque não sou o único que usar em casa 

    Em 11/01/2022 às 19:51, mauro_b disse:

    @oromotoceu Olá!

     

    Penso que reutilizou uma resposta ao exercício anterior que é semelhante. Sendo a pergunta a mesma: contar e buscar elementos do 'conjunto' chave no 'conjunto' fonte. No caso, o conjunto "key" que antes foi as vogais, agora necessita ser o caractere espaço e tabulação [acima citados]. Talvez dividir e conquistar uma solução que resolve para uma chave e depois reutilizar [em forma de função] no problema de muitas chaves simplifique o desenvolvimento e melhore a aprendizagem.

     

    O procedimento mental [sem o uso da linguagem C] é quase igual à programação. Se parar e pensar no modo que faria para catar e contar formas/números específicos espelhadas na sala terá mesma impressão que usualmente: 1. Escolhe-se UMA das formas específicas [na ordem que estão], 2. Compara-se com as espelhadas, 3. Incrementa-se a quantidade acumulada quando uma das espalhadas é igual à específica, e repete essas etapas até a última das específicas.

     

    Imagino que essa não é resposta que a maioria espera! É com intenção de fazer você começar de novo o código.

    [:)

    obrigado por ter me ajudado desculpe por não ter visto essa notificação é que eu uso pc e dificilmente eu uso o computador porque não sou o único que usar em casa 

    Em 11/01/2022 às 09:15, Lucca Rodrigues disse:

    @oromotoceu

    Não está. Veja o enunciado:

    Ele menciona "espaços em branco", e isso pode ser espaço comum ( ' ' ), tabulação horizontal ( '\t' ), carriage return ( '\r' ), newline ( '\n' ), tabulação vertical ( '\v' ) ou formfeed ( '\f' ).

    isspace() da ctype verifica se o caractere passado como argumento é um caractere de espaço em branco, retorna um valor diferente de 0 caso seja e 0 caso não seja. Use ela ou então faça sua própria função, em geral é a mesma ideia que implementou: uma string com todos os caracteres de espaço em branco e um loop pra verificar se algum deles corresponde a um caractere em questão da string que o usuário digitou.

     

    gets() é obsoleta, melhor evitar. Você poderia usar fgets(), scanf() ou alguma outra função, veja:

    char str[101];
    
    /* Usando fgets */
    if(fgets(str, sizeof(str), stdin) != NULL) {
        if(str[strlen(str) - 1] == '\n') {
            // '\n' na penultima posição da string
            str[strlen(str) - 1] = '\0';
        } else {
            int ch;
            while((ch = fgetc(stdin)) != '\n' && ch != EOF);
        }
    }
    
    /* Usando scanf */
    int ch;
    while(scanf("%100[^\n]", str) < 1) {
        // Lendo o que ha de resto
        while((ch = fgetc(stdin)) != '\n' && ch != EOF);
        // Informando o usuario
        printf("Entrada invalida!\nDigite novamente:\n");
    }
    // Lendo o que ha de resto
    while((ch = fgetc(stdin)) != '\n' && ch != EOF);

    boa tarde fiz esse exercício e não tenho certeza se está de acordo com o enunciado pode me ajudar por favor  

    3) Faça um programa que leia as seguintes informações sobre os alunos:
    • Nome do aluno;
    • Número de faltas.
    • Crie uma turma com 5 alunos. 
    • Cada turma terá 20 aulas no semestre.
    O programa deve imprimir o percentual de faltas para cada aluno e ao final 
    do processamento o total de alunos reprovados por falta (25% de faltas).

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    main(){
    float notap;  float media;
    float notas;  int faltas;
    float notat;  int i;
    int cont,contr;
    int aprovado,reprovado;
    for(i=0; i<2; i++){
    printf("Digite Suas Notas \n");
    printf("Nota 1:");
    scanf("%f", &notap);
    printf("Digite sua segunda nota \n:");
    scanf("%f", &notas);
    printf("Digite sua terceira nota\n :");
    scanf("%f", &notat);
    printf("Digite sua quarta nota\n :");
    scanf("%f", &notat);
    printf("Digite sua quinta nota\n :");
    scanf("%f", &notat);
    printf("Digite sua faltas \n");
    scanf("%d",&faltas);
    media=((notap + notas + notat+ notat+ notat)/5);
    printf("Sua media sera %2.f\n",media);
    if(media>=9){
    cont++;
    printf("Seu conceito esta A. voce foi aprovado\n");
    }else if(media>=7.5){
     printf("Seu conceito esta B. voce foi reprovado\n");
    }else if(media==5.0){
    printf("Seu conceito sera C.voce foi reprovado\n");
    }else if(media<5.0){
    printf("Seu conceito esta D. voce foi aprovado\n");
    }else if(media>=8.5){
    printf("Seu conceito esta E. voce foi aprovado\n");
    }else if(media>=9.5){
    contr++;
    printf("voce esta Reprovado Va Estudar\n");
    }else if(faltas>25){
     printf("voce esta Reprovado\n");
    }
    else if(media< 7.0 && faltas<= 25){
     printf("voce esta reprovado\n");
     }
     }
    printf("Foram aprovados %d\n",cont);
    printf("Foram reprovados %d\n",contr);
    }


     

    • Curtir 1
    • Amei 1
  17. boa noite fiz esse exercício e não está certo pode me ajudar por favor  

    1-    Inserir dados da consulta; 
    a.    Iniciar atendimento; 
    2-    Exibir consultas; 
    3-    Consultar atendimentos; 
    4-    Finalizar programa. 
    O programa deve funcionar da seguinte maneira. Quando um cliente chega na veterinária, o atendente antes de iniciar o atendimento insere os dados dele no sistema e logo após inserir os dados é apresentado a opção de iniciar o atendimento. Os dados devem ficar em um arquivo binário e servirá para todos que forem atendidos na veterinária, já o atendimento deve ser um arquivo de texto, gerado com o nome do animal + o nome do dono. 
    Ao finalizar a entrada dos dados de atendimento, que deve ser um arquivo de texto para cada atendimento, o sistema retorna para o menu. 
    O arquivo de texto do atendimento, pode ser feito com a inserção de várias linhas de texto até que o veterinário não queira mais inserir texto finalizando o arquivo, este não poderá ser reaberto. 
    A opção Exibir consultas, apresenta todos as consultas cadastradas.
    A opção Consultar atendimentos, permite que o usuário digite o nome do animal+dono e seja feita a busca pelo arquivo.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <locale.h>

    typedef struct {
    char nome1[100];
    char nome2[100];
    int data1, data2;
    float valor;
    } clinica;
    void menu();
    void Inserirdadosdaconsulta();
    void escreverdadosarquivo();
    void carregararquivo();
    void Exibirconsultas();
    void Finalizarprograma();
    void Consultaratendimentos();
    void Iniciaratendimento();
    int cont=0;
    FILE *arquivo;
    animal_+_dono f[1000];
    animal_+_dono F;

    int main ()
    {
    char opc;
    setlocale(LC_ALL,"Portuguese");
    do
    {
    fflush(stdin);
            menu();
            fflush(stdin);
            printf("\nDeseja continuar: s/n?");
            scanf("%c",&opc);
        }
        while (opc != 'n');

        return 0;
    }

    void Inserirdadosdaconsulta() {
        printf("Para finalizar o cadastro clica ponto:\n");

        while (1)
        {
            fflush(stdin);
            printf("\nNome1? ");
            gets(f[cont].nome1);
            if ( !strcmp(f[cont].nome1,".") ) break;
            printf("\nNome2? ");
            gets(f[cont].nome2);
            if ( !strcmp(f[cont].nome2,".") ) break;
            printf("\nData1? ");
            scanf("%i",&f[cont].data1);
            printf("\nData2? ");
            scanf("%i",&f[cont].data2);
            printf("\nValor? ");
            scanf("%f",&f[cont].valor);
            cont++;
        }
    Finalizarprograma();
    }
    void Exibirconsultas() {
        for (int i = 0; i < cont; i++) {
            printf("%i\t%s\t%7.2f\n", f[i].data1, f[i].data2, f[i].nome1, f[i].nome2, f[i].valor);
        }
    Finalizarprograma();
    }
    void escreverdadosarquivo(){

        if ( (arqv = fopen("dados.x","wb"))== NULL )
        {
            printf("Arquivo não pode ser criado\n");
            exit(1);
        }
        for (int i = 0; i < cont; i++) {
            fwrite(&f[i],sizeof(animal+dono),1,arqv);
        }

        printf("Dados digitados com sucesso!\n");

        fclose(arqv);
    }
    Finalizarprograma();
    }
    void carregararquivo(){

        if ( (arqv = fopen("dados.x","r"))== NULL )
        {
            printf("O arquivo não pode ser aberto\n");
            exit(1);
        }

        // limpeza de todos os itens dentro da memória antes de carregar os dados do arquivo
        memset(f, 0, sizeof(f));
        cont = 0;

        while (1) {
            fread(&F,sizeof(animal+dono),1,arqv);
            if ( feof(arqv) ) break;
            f[cont] = F;
            cont++;
        }
        printf("Abertura dos dados na memória com sucesso!");
        fclose(arqv);
    }
    Iniciaratendimento();
    while (1) {
            fread(&F,sizeof(animal+dono),1,arqv);
            if ( feof(arqv) ) break;
     }
    }
    fclose(arqv);
    printf("\n %i\t %s\t %7.2f", f.data1, f.data2, f.nome1, f.nome2, f.valor);
            }
        printf("Arquivo não pode ser aberto\n");
            exit(1);
        }
    }
    void Consultaratendimentos(){
        char nome1[100];
        char nome2[100];
        animal+dono aux[100];
        int i = 0;

        fflush(stdin);
        printf("Digite o atendimento que você quer consultar?");
        gets(nome1);
        printf("Digite o atendimento que você quer consultar?");
        gets(nome2);
    Iniciaratendimento();

        while (1) {
            fread(&F,sizeof(animal+dono),1,arqv);
            if ( feof(arqv) ) break;

            if (strstr(F.nome1, F.nome2, nome) != NULL) {
                aux[i] = F;
                i++;
            }

        }
    fflush(stdin);
        for (int x = 0; x < i; x++){
            printf("\n %i\t %s\t %7.2f", aux[x].data1, aux[x].data2, aux[x].nome1, aux[x].nome2, aux[x].valor);
        }
     fclose(arqv);
    }
    void Iniciaratendimento() {
        if ( (arqv = fopen("dados.x","r")) == NULL ) {
            printf("Não foi possível abrir o arquivo!!\n");
            exit(1);
        }
    }
    void Finalizarprograma()
    {
        fclose(arqv);
    }
    void menu() {
        int opc;
        printf("\n1- Inserir dados da consulta");
        printf("\na.- Iniciar atendimento");
        printf("\n2- Exibir consultas");
        printf("\n3- Consultar atendimentos");
        printf("\n4- Finalizar programa");
        printf("\nEscolha sua opcao: ");
        scanf("%d",&opc);
        switch (opc)
        {
    case 1:
           Inserirdados();
            break;
        case 2:
            Iniciaratendimento();
            break;
        case 3:
            Exibirconsultas();
            break;
        case 4:
            Consultaratendimentos();
            break;
        case 5:
            Finalizarprograma();
            break;
        default:
            printf("\nOpcao inválida");
        }
    }

    • Obrigado 1
  18. Boa tarde fiz esse exercício e não tenho certeza se está certo 

    Implemente uma lista estática, com todas as funções e monte um menu de opções.
    #include <stdio.h>
    #include <stdlib.h>
    #define MAXTAM 1000
    int Frente, Tras, Lista[MAXTAM];
    void Lista_Construtor(){
    Frente=0;
    Tras=-1;
    }
    int Lista_Vazia(){
    if(Tras==-1)
    return 1;
    else
    return 0;
    }
    int Lista_Cheia(){
    if(Tras==MAXTAM-1)
    return 1;
    else
    return 0;
    }
    int Lista_Tamanho(){
    return Tras+1;
    }
    int Lista_Inserir_Inicio(int Valor){
    if(Lista_Cheia()){
    return 0;
    }else{
    /*se quero inserir na posição 0,
    vou deslocar todos os elementos para frente*/
    for(int i=Tras+1;i>Frente;i--){
    Lista[i]=Lista[i-1];
    }
    Lista[Frente]=Valor;
    Tras++;
    return 1;
      }
    }
    int Lista_Inserir_Fim(int Valor){
    if(Lista_Cheia()){
    return 0;
    }else{
    Tras++;
    Lista[Tras]=Valor;
    return 1;
      }
    }
    int Lista_Inserir(int Valor, int Posicao){
    if(Lista_Cheia()){
    return 0;
    }else{
    /* Para verificar se a posição
    está no meio da lista */
    if(Posicao>Frente && Posicao<Tras){
    for(int i=Tras+1;i>Posicao;i--){
    Lista[i]=Lista[i-1];
    }
    Lista[Posicao]=Valor;
    Tras++;
    return 1;
    }else{ 
    return 0;
       }
      }
    }
    int Lista_Remover_Inicio(int *Valor){
    if(Lista_Vazia()){
    return 0;
    }else{
    *Valor =Lista[Frente];
    for(int i=Frente;i<Tras;i++){
    Lista[i]=Lista[i+1];
       }
    Tras--;
      }
    }
    int Lista_Remover_Fim(int *Valor){
    if(Lista_Vazia()){
    return 0;
    }else{
    *Valor=Lista[Tras];
    Tras--;
    return 1;
      }
    }
    int Lista_Remover(int *Valor, int Posicao){
    if(Lista_Vazia()){
    return 0;
    }else{
    if(Posicao>Frente && Posicao<Tras){
    *Valor=Lista[Posicao];
    for(int i=Posicao;i<Tras;i++){
    Lista[i]=Lista[i+1];
    }
    Tras--;
    return 1;
       }
      }
    }
    int Lista_Get_toda(int *Valor){
    if(Lista_Vazia()){
    return 0;
    }else{
    *Valor=Lista[Frente];
    return 1;
      }
    }
    int Lista_Get_inicio(int *Valor){
    if(Lista_Vazia()){
    return 0;
    }else{
    *Valor=Lista[Frente];
    return 1;
      }
    }
    int Lista_Get_Fim(int *Valor){
    if(Lista_Vazia()){
    return 0;
    }else{
    *Valor=Lista[Tras];
    return 1;
      }
    }
    int Lista_Busca_Valor(int Valor, int *Posicao){
    int i;
    if(Lista_Vazia()){
    return 0;
    }else{
    for(i=Frente;i<Tras;i++){
    if(Lista[i]==Valor){
    break;
      }
    }
    if(i==Tras){
    return 0;
    }else{
    *Posicao=i; 
    return 1;
       }
      }
    }
    int Lista_Busca_Posicao(int *Valor, int Posicao){
    if(Lista_Vazia()){
    return 0;
    }else{
    if(Posicao>Frente && Posicao<Tras){
    *Valor=Lista[Posicao];
    return 1;
    }else{
    return 0;
       }
      }
    }
    int main(){
    int i,Valor,op=0,pos;
    Lista_Construtor();
    while(op!=12){
    printf("*** Menu de opções ***\n");
    printf("1-Inserir início\n");
    printf("2-Inserir fim\n");
    printf("3-Inserir meio\n");
    printf("4-Excluir início\n");
    printf("5-Excluir fim\n");
    printf("6-Excluir meio\n");
    printf("7-Mostrar toda lista\n");
    printf("8-Mostrar primeiro item da lista\n");
    printf("9-Mostrar último item da lista\n");
    printf("10-Mostrar a posição de um item da lista\n");
    printf("11-Mostrar o valor de uma posição\n");
    printf("12-Sair\n");
    printf("Escolha uma opção: ");
    scanf("%d", &op);
    switch(op){
        case 1:
            printf("Digite o valor a ser inserido: ");
            scanf("%d", &Valor);
            Lista_Inserir_Inicio(Valor);
            break;
        case 2:
            printf("Digite o valor a ser inserido: ");
            scanf("%d", &Valor);
            Lista_Inserir_fim(Valor);
            break;
          case 3:
            printf("Digite o valor a ser inserido: ");
            scanf("%d", &Valor);
            printf("Digite a posição que deseja inserir: ");
            scanf("%d", &pos);
            Lista_ Inserir_meio(int Valor, pos); 
            break;
          case 4:
            printf("Digite a remoção do início: ");
            scanf("%d", &*Valor);
            Lista_ Excluir_inicio(*Valor); 
            break;
            case 5:
            printf("Digite a remoção do fim: ");
            scanf("%d", &*Valor);
            Lista_ Excluir_fim(*Valor); 
            break;
            case 6:
            printf("Digite a remoção do meio: ");
            scanf("%d", &Valor);
            printf("Digite a posição que deseja remover: ");
            scanf("%d", &*Posicao);
            Lista_ Excluir_meio(intValor, * pos); 
            break;
             case 7:
            printf("Digite ao a mostrar toda lista: ");
            scanf("%d", &Valor);
            Lista_ mostrar_toda_lista(Valor);
            break;
           case 8:
            printf("Digite ao a mostrar primeiro item da lista: ");
            scanf("%d", &*Valor);
            Lista_ mostrar_primeiro_item_da_lista(*Valor);
            break;
           case 9:
            printf("Digite ao a mostrar último item da lista: ");
            scanf("%d", &*Valor);
            Lista_ mostrar_ultimo_item_da_lista(*Valor);
            break;
            case 10:
            printf("Digite ao a mostrar a posição de um item da lista: ");
            scanf("%d", &Valor);
            printf("Digite a posição que deseja mostrar na lista: ");
            scanf("%d", &* pos);
            Lista_ mostrar_posicao_de_um_item_da_lista(intValor, *pos);
            break;
            case 11:
            printf("Digite ao a mostrar o valor de uma posição: ");
            scanf("%d", &*Valor
            printf("Digite a posição que deseja mostrar no valor: ");
            scanf("%d", &pos);
            Lista_ mostrar_posicao_de_um_valor_da_lista(int*Valor, pos);
            break;
            case 12:
            default:
            printf("Valor Invalido!\n");
            system("PAUSE");

             }

       }
     return 0;
    }

    • Amei 1
    • Triste 1
  19. #include <stdio.h>
    #include <stdlib.h>
    #define MAXTAM 1000
    int Frente, Tras, Lista[MAXTAM];
    void Lista_Construtor(){
    Frente=0;
    Tras=-1;
    }
    int Lista_Vazia(){
    if(Tras==-1)
    return 1;
    else
    return 0;
    }
    int Lista_Cheia(){
    if(Tras==MAXTAM-1)
    return 1;
    else
    return 0;
    }
    int Lista_Tamanho(){
    return Tras+1;
    }
    int Lista_Inserir_Inicio(int Valor){
    if(Lista_Cheia()){
    return 0;
    }else{
    /*se quero inserir na posição 0,
    vou deslocar todos os elementos para frente*/
    for(int i=Tras+1;i>Frente;i--){
    Lista[i]=Lista[i-1];
    }
    Lista[Frente]=Valor;
    Tras++;
    return 1;
      }
    }
    int Lista_Inserir_Fim(int Valor){
    if(Lista_Cheia()){
    return 0;
    }else{
    Tras++;
    Lista[Tras]=Valor;
    return 1;
      }
    }
    int Lista_Inserir(int Valor, int Posicao){
    if(Lista_Cheia()){
    return 0;
    }else{
    /* Para verificar se a posição
    está no meio da lista */
    if(Posicao>Frente && Posicao<Tras){
    for(int i=Tras+1;i>Posicao;i--){
    Lista[i]=Lista[i-1];
    }
    Lista[Posicao]=Valor;
    Tras++;
    return 1;
    }else{ 
    return 0;
       }
      }
    }
    int Lista_Remover_Inicio(int *Valor){
    if(Lista_Vazia()){
    return 0;
    }else{
    *Valor =Lista[Frente];
    for(int i=Frente;i<Tras;i++){
    Lista[i]=Lista[i+1];
       }
    Tras--;
      }
    }
    int Lista_Remover_Fim(int *Valor){
    if(Lista_Vazia()){
    return 0;
    }else{
    *Valor=Lista[Tras];
    Tras--;
    return 1;
      }
    }
    int Lista_Remover(int *Valor, int Posicao){
    if(Lista_Vazia()){
    return 0;
    }else{
    if(Posicao>Frente && Posicao<Tras){
    *Valor=Lista[Posicao];
    for(int i=Posicao;i<Tras;i++){
    Lista[i]=Lista[i+1];
    }
    Tras--;
    return 1;
       }
      }
    }
    int Lista_Get_toda(int *Valor){
    if(Lista_Vazia()){
    return 0;
    }else{
    *Valor=Lista[Frente];
    return 1;
      }
    }
    int Lista_Get_inicio(int *Valor){
    if(Lista_Vazia()){
    return 0;
    }else{
    *Valor=Lista[Frente];
    return 1;
      }
    }
    int Lista_Get_Fim(int *Valor){
    if(Lista_Vazia()){
    return 0;
    }else{
    *Valor=Lista[Tras];
    return 1;
      }
    }
    int Lista_Busca_Valor(int Valor, int *Posicao){
    int i;
    if(Lista_Vazia()){
    return 0;
    }else{
    for(i=Frente;i<Tras;i++){
    if(Lista[i]==Valor){
    break;
      }
    }
    if(i==Tras){
    return 0;
    }else{
    *Posicao=i; 
    return 1;
       }
      }
    }
    int Lista_Busca_Posicao(int *Valor, int Posicao){
    if(Lista_Vazia()){
    return 0;
    }else{
    if(Posicao>Frente && Posicao<Tras){
    *Valor=Lista[Posicao];
    return 1;
    }else{
    return 0;
       }
      }
    }
    int main(){
    int i,Valor,op=0,pos;
    Lista_Construtor();
    while(op!=12){
    printf("*** Menu de opções ***\n");
    printf("1-Inserir início\n");
    printf("2-Inserir fim\n");
    printf("3-Inserir meio\n");
    printf("4-Excluir início\n");
    printf("5-Excluir fim\n");
    printf("6-Excluir meio\n");
    printf("7-Mostrar toda lista\n");
    printf("8-Mostrar primeiro item da lista\n");
    printf("9-Mostrar último item da lista\n");
    printf("10-Mostrar a posição de um item da lista\n");
    printf("11-Mostrar o valor de uma posição\n");
    printf("12-Sair\n");
    printf("Escolha uma opção: ");
    scanf("%d", &op);
    switch(op){
        case 1:
            printf("Digite o valor a ser inserido: ");
            scanf("%d", &Valor);
            Lista_Inserir_Inicio(Valor);
            break;
        case 2:
            printf("Digite o valor a ser inserido: ");
            scanf("%d", &Valor);
            Lista_Inserir_fim(Valor);
            break;
          case 3:
            printf("Digite o valor a ser inserido: ");
            scanf("%d", &Valor);
            printf("Digite a posição que deseja inserir: ");
            scanf("%d", &pos);
            Lista_ Inserir_meio(int Valor, pos); 
            break;
          case 4:
            printf("Digite a remoção do início: ");
            scanf("%d", &*Valor);
            Lista_ Excluir_inicio(*Valor); 
            break;
            case 5:
            printf("Digite a remoção do fim: ");
            scanf("%d", &*Valor);
            Lista_ Excluir_fim(*Valor); 
            break;
            case 6:
            printf("Digite a remoção do meio: ");
            scanf("%d", &Valor);
            printf("Digite a posição que deseja remover: ");
            scanf("%d", &*Posicao);
            Lista_ Excluir_meio(intValor, * pos); 
            break;
             case 7:
            printf("Digite ao a mostrar toda lista: ");
            scanf("%d", &Valor);
            Lista_ mostrar_toda_lista(Valor);
            break;
           case 8:
            printf("Digite ao a mostrar primeiro item da lista: ");
            scanf("%d", &*Valor);
            Lista_ mostrar_primeiro_item_da_lista(*Valor);
            break;
           case 9:
            printf("Digite ao a mostrar último item da lista: ");
            scanf("%d", &*Valor);
            Lista_ mostrar_ultimo_item_da_lista(*Valor);
            break;
            case 10:
            printf("Digite ao a mostrar a posição de um item da lista: ");
            scanf("%d", &Valor);
            printf("Digite a posição que deseja mostrar na lista: ");
            scanf("%d", &* pos);
            Lista_ mostrar_posicao_de_um_item_da_lista(intValor, *pos);
            break;
            case 11:
            printf("Digite ao a mostrar o valor de uma posição: ");
            scanf("%d", &*Valor
            printf("Digite a posição que deseja mostrar no valor: ");
            scanf("%d", &pos);
            Lista_ mostrar_posicao_de_um_valor_da_lista(int*Valor, pos);
            break;
            case 12:
            default:
            printf("Valor Invalido!\n");
            system("PAUSE");

             }

       }
     return 0;
    }

  20. Em 01/12/2016 às 04:41, vangodp disse:

    É muito difícil explicar todos os conceitos que você precisa por um fórum. Então preparei um exemplo "simples" do que você teria que fazer.

    Imagine que você tem um arquivo como esse: prova.txt

    O arquivo tem 3 linhas dessa forma:
    linha1
    linha2
    linha3

    Imagine que quero borrar linha2 deixando ele dessa forma:
    linha1

    linha3
     

    O código seria esse:
     

    #include<stdio.h>
    #include <locale.h>
    #include <string.h>
    
    
    int main(void){
        setlocale(LC_ALL, "portuguese-brazilian");
        
        //abrimos o arquivo e comprovamos se foi aberto
        FILE *file = fopen("prova.txt", "r+");
        if( !file ){
            perror("Erro: ");
            getchar();
            return 1;
        }
        
        //variaveis que vamos usar
        char buffer[1204]; //Buffer que vai guardar uma linha do arquivo por vez
        char pesquisa[100] = "linha2";  //O que pretendo buscar no arquivo
        long int inicioLinha=0;        //variavel que vai indicar onde começa a linha antes de ler
        
        inicioLinha = ftell( file ); //preste atenção. Antes de ler uma linha devemos anotar o primeiro caractere da linha, isso é o que faz essa linha, ftell guarda em inicioLinha quantos bytes tem desde o inicio do arquivo até o inicio da linha.
        while ( fscanf(file, "%s%*c", buffer) != EOF ){ // Como o programa começa na linha zero inicioLinha começa sendo 0, agora fscanf le a linha e o que foi lido vai parar no buffer. O fscanf para na seguinte linha antes de uma nova leitura, porém devemos comprovar primeiro se o que tem na linha é o que andamos buscando.
            
            //Comparamos o que foi lido com o objetovo da pesquisa
            if ( strcmp( buffer, pesquisa ) == 0  ){
                // Se entramos aqui é por que buffer é igual a pesquisa
                printf ("Encontrado!\n");
                
                //Agora nesse ponto devemos fazer o que queremos... borrar o conteudo.
                printf("No buffer tem: %d letras.\n", strlen(buffer)); //Para borrar o conteudo devemos primeiro saber quantas letras tem
                int TAM = strlen(buffer); //guardamos o tamanho em uma variavel.
                
                //Agora preste atenção novamente devemos voltar ao inicio da linha para poder borrar TAM letras. Para isso usamos fseek
                fseek(file/*no arquivo...*/, inicioLinha/*queremos ir ao inicio da linha...*/, SEEK_SET/*e queremos fazer desde o inicio para o fim*/); // fseek bota o ponteiro X bytes desde o inicio do arquivo e para direitinho ao inicio da linha.
                
    
                //Agora escrevemos TAM bytes com espaços(borrado! A linha fica em branco)
                int i;
                for (i=0; i<TAM ;i++ ) {
                    putc((int)' ', file);    
                }
                
                //TADAH!!!
                //usamos break para sair
                break;
            }
            
            inicioLinha = ftell( file );  //Se não encontrou necessotamos continuar lendo linhas... então anotamos outravez o inicio da seguinte linha antes de começar tudo de novo.
        }
        
        fclose(file);
    }

    Tentei comentar o máximo não gosto de carregar tanto de comentário, porém não sei seu nível, se tiver duvidas pergunte.

    Você deve praticar mais com arquivos, só assim você pegará a pratica, não espere seu professor pedir trabalhos, vai na luta vei.
    Prove fazer vários tipos de CRUD... aluguel de filmes, gestão de bibliotecas, contas de bancos, etc.

    Basicamente é começar a ler o arquivo pelo inicio... linha zero.

    O que fazemos todo o tempo é:
    -Anotar onde começa a linha.
    -Ler a a linha. O cursor vai se deter na seguinte linha.
    -A linha que lemos comparamos com o que estamos buscando
    -Se encontramos...

    1. voltar ao principio da linha
    2. obter o tamanho dos dados a sobrescrever
    3. sobrescrever
    4. sair do laço com um break(pergunte se seu professor permite usar essa opção, tem professores muito chatos >_<)

    -Se não repetimos tudo novamente até encontrar o que buscamos ou até atingir o fim do arquivo, nesse caso quer dizer que não encontramos.

     

    bom dia pode me ajudar nessa questão por favor 

    Baseado no contexto abaixo gerar um programa utilizando arquivos binários, 
    funções e matrizes, faça o que se pede. 

    O programa deverá funcionar todo na memória RAM do computador da seguinte maneira.  
    Sempre que iniciar o programa, ele pega os dados gravados no arquivo e traz para 
    um vetor de registros na memória e antes de finalizar pega todos os dados e 
    regrava no arquivo, mantendo sempre os dados atualizados conforme o que está na 
    memória. 
    O programa deverá trabalhar dados de um veículo, onde será armazenado, Nome do 
    proprietário, placa do carro, modelo do carro e preço do carro. 
    O programa deve ter as seguintes opções:
    1-    Inserir dados (todos os dados sugeridos no enunciado acima).
    2-    Excluir um Carro específico com a busca pela placa.
    3-    Editar dados de um Carro com a busca pela placa.
    4-    Consultar carro por Placa.
    5-    Exibir todos os dados cadastrados.
    6-    Finalizar programa.
    A opção exibir todos os dados, apresenta tudo que já foi cadastrado e está na 
    memória. 

    • Obrigado 1
  21. Em 25/09/2017 às 11:49, Xaws disse:

    @Alisson Pavinhaski  Por se tratar de um exercício ninguém pode dar código pronto ou modelo a não ser que você poste sua tentativa.
     Sistema de registro e login você pode fazer usando struct.
     Locação relatorio e etc... Você vai ter que criar um código que crie arquivos e salve nesses arquivo depois você só tem que fazer a leitura

    Na questão do sistema de login com struct isso te ajuda ↓
    https://www.clubedohardware.com.br/forums/topic/1249435-comparar-login-e-senha-a-partir-de-arquivo-txt/?page=2


     Faz uma tentativa e posta seu código que a galera te ajuda :atirador:

    bom dia pode me ajudar 

    • Amei 1
  22. 10 horas atrás, andre_naski disse:

    @oromotoceu mande aqui o que já fez e qual é sua dúvida pra tentarmos ajudar. 

    #include <stdio.h>
    #include <locale.h>
    #include <stdlib.h>

    struct procedimento{
     int idade, duracao;
     float V;
     char nome[50];
    };

    int main(){
     setlocale(LC_ALL, "Portuguese");
     int nprocedimento;
     struct procedimento *vet;

     printf("Digite quantos procedimentos tem?: ");
     scanf("%i", &nprocedimento);

    vet=(struct procedimento *)malloc(nprocedimento * sizeof(struct procedimento));
     if(vet==NULL){
     printf("Não foi possível alocar espaço de memória!");
     exit(1);
     }

    // Entrada de dados dos procedimentos
    printf("\n  Digitação dos dados do procedimento \n");
    for(int i=0;i<nprocedimento; i++){
     printf("Nome do %i° procedimento: ", i+1);
     scanf(" %s", vet[i].nome);
     printf("Digite o valor do %i° procedimento: ", i+1);
     scanf("%f", &vet[i].V);
     printf("Digite a duração (em dias) do %i° procedimento: ", i+1);
     scanf(" %i", &vet[i].duracao);
     }

     free(vet);
    }
     

  23.  

    não estou conseguindo fazer esse exercício 

    Faça um programa em C que leia inicialmente a quantidade de procedimentos que foram realizados. Depois apresente como resultado: 
    a) As informações de cada procedimento (mostrar normalmente); 
    b) A quantidade total de dias que ele ficou internado; e
    c) O valor total que ele deverá pagar no momento de sua alta. 
    •OBS: Utilize duas funções para calcular os totais de a e b.
     

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!