Ir ao conteúdo
  • Cadastre-se

Pedroso90

Membro Júnior
  • Posts

    11
  • Cadastrado em

  • Última visita

posts postados por Pedroso90

  1. Galera alguém pode me ajudar a tirar três dúvidas sobre ponteiros em pascal? Coisa rápida, estou fazendo um exercício aq e estou travado porque não estou sabendo como:

     

    Comparar para ver se tem nomes iguais em um ponteiro;

     

    Mostrar maior valor armazenado no ponteiro;

     

    Mostrar menor valor armazenado em um ponteiro

     

    todas essas dúvidas são desse exercício abaixo, eu preciso cadastrar uns times, mas pra isso não pode haver times com nomes iguais, e tem que mostrar o time com mais gols e o que sofreu mais gols, se alguèm puder me dar uma força rápida com isso eu ficaria muito feliz mesmo

     

    Poderiam me ajudar Mestres?

    @DiF@Simon Viegas

    Program EX4;
    
    type
    
    ponteiro_time = ^time;
    
    time = record
    nome:string[30];
    qtdpontos :integer;
    golsmarcados:integer;
    golssofridos:integer;
    proximo:ponteiro_time;
    end;
    
    var
    
    pAtual, pInicio, pAnterior, pAux: ponteiro_time;
    mais:char;
    
    achou:boolean;
    maior,puxa_func1,i:integer;
    ma_gols,nome_aux:string;
    
    
    
    Procedure CadastraTimes;
    
    begin
    
     repeat
    
     write('Digite o nome do time: ');
     new(pAtual);  
     read(pAtual^.nome);
     
     //
     
     while pAtual <> nil do
     begin                                                               
     
     achou:=false;
     if pAtual^.nome = pAnterior^.nome then
     begin
     
     achou:=true;
     end;
     
     if(achou) then
     begin
     writeln('Digite outro nome');
     end;
     
     pAtual:=pAtual^.proximo;
     
     end;
     
     //
     
    
     
     write('Digite o numero de pontos: ');
     read(pAtual^.qtdpontos);
     
     write('Digite a quantidade de gols marcados: ');
     read(pAtual^.golsmarcados);
     
     write('Digite a quantidade de gols sofridos: ');
     read(pAtual^.golssofridos);
     
    
    			
     
     
     if pInicio = nil then
     pInicio:=pAtual;
     
     if pAnterior <> nil then
     pAnterior^.proximo:=pAtual;
     pAnterior:=pAtual;
     
     pAtual:=pInicio;
     
     
     
     
     writeln;
     
     write('Quer cadastrar mais um time? (Digite S para "sim" ou N para "não")');
     readln(mais);
     mais:=upcase(mais);
     writeln;
     until mais = 'N';
     
     
     
     { pAtual:=pInicio;
     
     while pAtual <> nil do
     begin
     
     writeln('nome: ',pAtual^.nome);
     writeln('Pontos:',pAtual^.qtdpontos);
     writeln('Gols Marcados ',pAtual^.golsmarcados);
     writeln('Gols Sofridos: ',pAtual^.golssofridos);
     writeln;
     pAtual:=pAtual^.proximo;
     
     end;}
     
     end;
     
     
    function Mais_Gols(ma:integer):integer;
     
    begin
     
     for i:= 1 to pAtual^.golsmarcados do
     begin
     
     if pAtual^.golsmarcados > ma
     then
     begin
     ma:=999999;
     ma:= pAtual^.golsmarcados;
    
     
     end;
    				 
    end;
    
    
    
    Mais_Gols:=ma
    
     end;
    
    
     Begin
    
     CadastraTimes;
     
    puxa_func1:=Mais_gols(maior);
    write(puxa_func1);
    
      
    End.

     

    • Curtir 1
  2. Em 09/03/2022 às 18:38, Simon Viegas disse:


    Sugiro fazer o programa por etapas. Por exemplo: primeiro faça simplesmente um programa que leia as linhas de um arquivo txt e escreve elas na tela. Consegue fazer isso?

    Seria isso?

    program ex2;
    uses crt;
    var Ch: char;
          Txt: TEXT;		{ definição do arquivo tipo texto }
    begin
      clrscr;
      Assign(Txt, 'C:\Users\Windows\Desktop\Exercicios\origem.Txt');
    //  rewrite(txt);
      append(txt);
      writeln(txt,'Isso eh apenas um teste.');
      close(txt);
      Reset(Txt);
      while not Eof(Txt) do			{ lê o arquivo até o final }
      begin
        while not Eoln(Txt) do			{ lê uma linha completa do arquivo }
        begin
          Read(Txt, Ch);				{ lê um caractere do texto }
          write(Ch);
          delay(50);
        end;
        writeln;
        Readln(Txt); 				{ posiciona na próxima linha do texto }
      end;
      Close(Txt);
      readkey;
    end.

     

    • Curtir 1
  3. Alguém poderia por favor me ajudar nessa questão, comecei a estudar agora arquivos de texto no pascal e estou com bastante dificuldade de como fazer esse exercício:

     

    Um arquivo origem.txt contém um texto (distribuído em várias linhas) cujas palavras estão separadas por um ou mais espaços em branco. Faça um programa em Pascal que determine quantas letras tem a maior palavra contida no texto. Favor desconsiderar todo e qualquer caractere que não seja uma letra ou um espaço em branco.

    Fiz bem pouca coisa pois estou muito perdido pra falar a verdade, e tenho que entregar essa tarefa ainda hoje

     

    Program ex2;
    var
      arqv:text;
      texto,letra:string;
      tamanho,i:integer;
    
    begin
    Assign(arqv,'C:\Exercicios\origem.txt');
    Append(arqv);
    writeln('Digite um texto: ');
    read  (texto);
    writeln(arqv,texto);
    
    while not EOF(arqv) do 
      begin
      writeln(arqv,texto);
      tamanho:= length(texto);
    
      for i:= 1 to tamanho do
        begin
        letra:=texto[i]
        end;
    
      writeln(letra);
      end;
    
    Close(arqv);
    end.

     

    • Curtir 2
  4. Boa noite pessoal, tranquilo? Então, eu estava fazendo alguns exercícios de pascal e me deparei com uma dúvida que já está martelando minha cabeça faz um bom tempo, estou com dificuldade para somar todos os termos de uma determinada sequência como pede o exercício abaixo, eu fiz o modelo todo do programa praticamente, só falta acertar esse detalhe, se alguém puder me dar uma mão, creio que deve ser uma coisa fácil, mas realmente não estou conseguindo pensar em nada.

     

    Exercicio: 

     

    Faça um procedimento (procedure) que receba como parâmetro um valor inteiro e
    positivo N, indicando a quantidade de parcelas de uma soma S, calculada pela
    fórmula:
    S = 2/4 + 5/5 + 10/6 + 17/7 + 26/8 + ... + (n2 + 1) / (n + 3)

    Program EX5;
    
     var
    
      s,s2,aux1:real;
      i,n:integer;
     
      
    
      
    procedure CalcSoma;
    
      begin
      
      s:=0;
    	aux1:=1;
    	//while 
    
       for i:=1 to n do
        
        begin 
        
        s:= ((n*n)+1)/(n+3);
    
      
      
      end;
      
      end;
       
      
    Begin
    
      
     write('Digite a quantidade de parcelas da soma: ');
      readln(n);
       
    
    CalcSoma;
       
    writeln;
    writeln;
    write('O resultado da soma é: ',s:0:2);
    readkey;
      
    End.

     

  5. Boa tarde amigos tudo bem? Estou precisando de ajuda em uma parte de um exercício sobre Pascal que estou fazendo, uma das partes desse exercício pede para eu cadastrar o número do carro, mas tem um porém, não pode haver dois números iguais, e eu estou com muita dificuldade em achar um jeito para fazer o programa exibir uma mensagem falando que o número já foi digitado e  fazer essa mensagem não sair até o usúario digitar um número diferente, pode parecer uma dúvida meio boba, mas estou quebrando a cabeça com isso, se alguém puder me dar uma luz agradeço, o exercício pede mais coisa, mas só preciso de ajuda nisso mesmo, o resto estou conseguindo fazer.

     

    exercício: 

     

    Uma empresa patrocinadora de corridas deseja ter controle preciso sobre os
    participantes e os resultados, a fim de realizar adequadamente o pagamento dos
    prêmios. Dessa maneira, precisa cadastrar algumas informações, conforme
    apresentado a seguir:


    Corrida (número da corrida, data, hora de início, código do carro vencedor)


    Carro/Corrida (número da corrida, número do carro participante, hora de chegada)


    Carro (número do carro, nome do carro, ano de fabricação)


    Crie um programa em Pascal (utilizando registros – records) que realize as seguintes
    rotinas:


    • Cadastrar os carros, não permitindo dois carros com o mesmo número (deve ser
    definido espaço para seis carros);

     

    o que eu estou tentando fazer:

    program EX1;
    
    type
      registroCorrida = record
        num_corrida: integer;
        data_corrida: string;
        horain_corrida: string;
        codigo_vencedor: integer;
      end;
    
      registroCarroCorrida = record
        num_corrida: integer;
        num_carro: integer;
        hora_chegada: string;
      end;
    
      registroCarro = record
        num_carro: integer;
        nome_carro: string;
        ano_fab: integer;
      end;
    
    var
      carros_cadastro: array[1..6] of registroCarro;
      i,cont: integer;
    
      corrida_cadastro: array[1..3] of registroCorrida;
    
    begin
    //cadastrando os carros;
    
    for i:= 1 to 6 do
      begin
      write('Digite o número do ' ,i, 'º carro:  ');
      readln(carros_cadastro[i].num_carro);
    
      if (carros_cadastro[i].num_carro) = (carros_cadastro[i+1].num_carro)  then 
        begin
        cont:=cont+1;
        
        if cont > 0 then
          begin
          
          while cont <> 0 do
            begin
            writeln('Digite outro numero tonto!');
            end;
          end; 
        end; 
    
      write('Digite o nome do ', i, 'º carro: ');
      readln(carros_cadastro[i].nome_carro);
    
      write('Digite o ano de fabricaçao do ', i, 'º carro: ');
      readln(carros_cadastro[i].ano_fab);
      end;
    
    //cadastrando as corridas;
    // for i:=1 to 3 do
    
    end.

     

    • Amei 1
  6. Faça um programa em Pascal que receba um valor inteiro x, maior que 0 e menor que 20, e crie uma matriz quadrada preenchida da seguinte maneira:

     

    img.png

     

    Comecei a desenvolver esse exercício, mas eu não entendi a lógica dele, por isso acabei travando no início mesmo, eu to quebrando a cabeça aqui, se alguém puder me ajudar, agradeço muito.

     

    Program EX1;
    
    var
    
    mat:array[1..7,1..7] of integer;
    i,j: integer;
     
     Begin
    
     while (mat[i,j] > 0) and (mat[i,j] < 20)  do
      
      if (mat[i,j] < 0) and (mat[i,j] > 20) 
       then
       
        writeln('Digite um valor maior que 0 e menor que 20!');
     
      for i:=1 to 7 do
       begin
       
        for j:=1 to 7 do
         begin 
         
          writeln('Digite o valor',i,'-',j,' ');
           readln(mat[i,j]);
         
         
      
    End.

     

  7. Boa tarde amigos, tudo bem?

      

     Primeiramente, obrigado pela ajuda no outro tópico sobre as estruturas de repetição, agradeço muito!

     

    Mas enfim, hoje estava fazendo esse exercício para faculdade utilizando a estrutura for, pois não aprendi sobre vetores ainda e etc:

     

    Faça um programa em Pascal que receba um valor (inteiro) N. Após isso, devem ser
    inseridos os nomes de N pessoas e seus respectivos pesos e idades. Ao final seu
    algoritmo deve mostrar:
    O nome e peso da pessoa mais pesada.
    O nome e peso da pessoa mais leve.
    O nome e idade da pessoa mais velha.
    O nome e idade da pessoa mais nova.

     

    e me deparei com o seguinte erro: Meu programa só moistra a pessoa mais velha e a mais pesada, ele simplesmente ignora a mais nova e a mais leve, alguém poderia me mostrar onde estou errando por favor? Preciso entregar esse exercicio hoje.

     

    meu código:

     

    Program EX4;
    
    var idade,pessoas,maisvelho,idademenor,cont,cont2: integer;
        peso,maispesado,pesoleve: Real;
        nome,nome1,nome2,nome3,nome4: string;
    		 
    
    
      Begin
       
       
      writeln('Digite a quantidade de pessoas');
       readln(pessoas);
       
       clrscr;
       
         for cont:=1 to pessoas do 
       
      begin;
       
      
         writeln('Digite o ',cont,'º nome:');      
          readln(nome);
    
    
            writeln('');
             
             writeln('Digite a ',cont,'ª idade:');
              readln(idade);
           
            
               writeln('');
                writeln('Digite o ',cont, 'º peso em kg:'); 
                 readln(peso);
                 
                 
                     
                 
                 if(peso>maispesado)
                  then
                   
                     begin;
                    
                      maispesado:=peso;
                       nome1:=nome
                       
                       end;
    								
    									 if(peso<pesoleve)
                     then
                     
                      begin;
                          
                       pesoleve:=peso;
                        nome2:=nome;
    										
    									end;
    									
    									
    
    							
          
                       if(idade>maisvelho)
                        then
                      
                          begin;
                       
                           maisvelho:=idade;
                            nome3:=nome; 
                        
                      
                      end
                    
                      else if(idade<idademenor)
                        then
                      
                          begin
                       
                           idademenor:=idade;
                            nome4:=nome;
                        
                      
                     
                     end;
                     
                      end;
                       
                      
                      
                  
                  
                      
                    
                      
                        writeln('A pessoa mais pesada é: ',nome1,' pesando: ',maispesado,'kg');
                         writeln('A pessoa mais leve é: ',nome2,' pesando: ',pesoleve,'kg');
                          writeln('A pessoa mais velha é: ',nome3,' com a idade: ',maisvelho,' anos ');
                           writeln('A pessoa mais nova é: ',nome4,' com a idade: ',idademenor,' anos ');
                      
                           
                           
                           readkey;
                      
                      
                      
                        
                        
                      
                      
                    
                    
                 
                 
              
              
           
           
            
      
    End.

     

  8. Bom dia galera, tudo bem?

     

    Comecei faz pouco tempo a estudar Pascal, até agora entendi bastante coisa já, mas o que estou com muita dificuldade são nas estruturas de repetição (for, while, repeat) e em relação aos contadores também, comecei a fazer esse exercício:

     

    Utilizando as estruturas de repetição estudadas em sala de aula, faça um programa em Pascal que receba dez idades, pesos e alturas, calcule e mostre:
    A média das idades das dez pessoas;
    A quantidade de pessoas com peso superior a 90 quilos e altura inferior a 1,50 metros;
    A percentagem de pessoas com idade entre 10 e 30 anos entre as pessoas que medem mais de 1,90 metros.

     

    Consegui fazer somente a primeira exigência, as duas últimas eu travei, se alguém puder me ajudar, segue abaixo o que já fiz:

     

    program EX2;
    {$CODEPAGE UTF8} //para permitir acentos nas string em alguns compiladores [Não necessário no PascalZim, mas pode deixar]
    var
      cont, cont2, cont3, cont90, cont150,
      idade, somaidade: integer;
      pesoalt, altura, somaalt150, alt150,
      peso90, peso, somapeso90, media: real;
      
    begin
      for cont := 1 to 10 do  
      begin; 
        writeln('Digite a idade');
        readln(idade);        
        writeln('Digite a altura em metros');
        readln(altura); 
        writeln('Digite o peso');
        readln(peso); 
        somaidade := somaidade+idade;
        media := somaidade/10;
        clrscr
      end;
      
      writeln('A média das idades é: ', media:10:2);
      
      if (peso>90) then 
      begin
        cont90 := cont90+1;
        somapeso90 :=  cont90;
      end;
      
      //begin; 
    
      if (altura<1.50) then 
      begin
        cont150 := cont150+1;
        somaalt150 :=  cont150;
      end;
    
      pesoalt := somapeso90+somaalt150;                   
      
      writeln('A quamtidade de pessoas com mais de 90kg e menores que 1.50m é de:', pesoalt:10:2);


                    

    E se alguém conseguir me ajudar com esse outro que é quase o mesmo estilo:

     

    Faça um programa em Pascal que receba um valor (inteiro) N. Após isso, devem ser inseridos os nomes de N pessoas e seus respectivos pesos e idades. Ao final seu algoritmo deve mostrar:
    O nome e peso da pessoa mais pesada.
    O nome e peso da pessoa mais leve.
    O nome e idade da pessoa mais velha.
    O nome e idade da pessoa mais nova.

     

    Creio que com isso vou conseguir entender melhor essas questões

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!