quarta-feira, 29 de junho de 2011

Consulta nome em um vetor

Program Pzim ;
{1. Faça um programa que armazene 5 nomes em um vetor.
Apos ser digitado um nome, se for encontrado no vetor
mostrar a posição desse nome no vetor, caso contrario
mostrar a mensagem: Não enconteri!.}
var
nome:array[1..5] of string;      //variavel vetor para armazanar os nomes
i:integer;                       //contador
cons_nome:string;                //variavel para receber o nome a ser consultado no vetor
 Begin
  for i:=1 to 5 do            //cadastra os 5 nomes no vetor
  begin
  writeln('Digite o ',i,'o. nome : ');
  readln(nome[i]);
  clrscr;           //limpa a tela
  end;
  writeln(' C O N S U L T A  N O M E ');
writeln;
writeln('Digite um nome para consulta : ');  //recebe o nome a ser consultadp
readln(cons_nome);

  for i:=1 to 5 do
  begin
  if (nome[i]=cons_nome) then     //se no vetor na posição i, o nome for igual a consulta de nome,
  begin
  writeln('O nome : ',cons_nome,', aparece na posição ',i);
end       // mostra
  else
begin
writeln('Nome não encontrado');
end;

  end;
                      // se digitar o nome em mais de uma posição, ele mostra todos
 End.

segunda-feira, 27 de junho de 2011

Diárias em um Hotel

{Um hotel cobra R$ 300,00 por diária e mais uma taxa adicional de serviços.
Se a diária for menor que 15 a taxa e de R$ 20,00. Se o número de diárias for igual a 15 a
taxa é de R$ 14,00 e se o número for maior que 15 a taxa é de R$ 12,00. Considerando-se
que se tenha 200 pessoas e para cada pessoa tenha-se um registro contendo seu nome e o
número de diárias.
Faça um algoritmo que imprima o nome e o total a pagar de cada pessoa e
imprimir também o total ganho pelo hotel e o número total de diárias.}


{O exercicio está feito para rodar com 5 entradas, pois duzentas seria inviável o teste,
é só mudar onde tem 5 para 200.}

Program Pzim ;
var
hospede:array[1..5] of string;
diarias:array[1..5] of integer;
i, dias:integer;
soma:real;
 Begin
  for i:=1 to 5 do
  begin
  writeln('Digite os dados do apartamento No.: ',i);
  writeln('Nome do Hospede : ');
readln(hospede[i]);
writeln('Diarias : ');
readln(diarias[i]);
clrscr;
  end;
  for i:=1 to 5 do
  begin
  if (diarias[i]<15) then
  begin
  writeln('O hospede : ',hospede[i],', do quarto : ',i,', gastou R$ : ',((diarias[i]*300)+(diarias[i]*20)));
  soma:=soma+(diarias[i]*320);
  dias:=dias+diarias[i];
  end
  else
  if (diarias[i]=15) then
  begin
  writeln('O hospede : ',hospede[i],', do quarto : ',i,', gastou R$ : ',((diarias[i]*300)+(diarias[i]*14)));
  soma:=soma+(diarias[i]*314) ;
  dias:=dias+diarias[i];
  end
  else
  if (diarias[i]>15) then
  begin
  writeln('O hospede : ',hospede[i],', do quarto : ',i,', gastou R$ : ',((diarias[i]*300)+(diarias[i]*12)));
  soma:=soma+(diarias[i]*312);
  dias:=dias+diarias[i];
  end;
  end;
  writeln('A arrecadação do hotel foi de R$ : ',soma:1:2);
  writeln('O total de diárias foi de : ',dias);
 

 End.

quarta-feira, 22 de junho de 2011

Divisores de um número

Program Pzim ;
Var
x,num,teste:integer;
Begin
    Writeln('Digite um numero:');              //solicita que seja digitado um numero
    Read(Num);                                 //lê o número
    Write ('São divisores de ',num,', :');     //exibe a mensagem uma vez
    For x:=1 to num do                         //faz de 1 até o numero ( processo de divisão)
        Begin                                //teste verifica se é divisor.
    teste:=num mod X;               //um numero é divisor quando o resto é igual a zero
    If teste=0 then
        Write (X,', ');       // se for divisor, mostra o numero, todos na mesma linha
    End;
End.

terça-feira, 21 de junho de 2011

Exercicio 2 com matriz

Program Pzim ;
{2. Faça um algoritmo em que o usuario informe os valores para uma matriz 4x4
 e em seguida efetive a soma dos valores que estão abaixo da diagonal secundária.
O algoritmo deve mostrar os valores que estão abaixo da diagonal secundária e sua soma.

Ex.:
1-5-2-2
7-5-3-2
8-4-6-1
5-4-3-1

Valores a serem usados, mostrados e somados:
- - - -
- - -2
- -6-1
-4-3-1
}
var
m:array[1..4,1..4] of integer;
i,j, soma:integer;
 Begin

 for i:=1 to 4 do
  begin
  for j:=1 to 4 do
  begin
writeln('Digite a matriz : ');          //recebe os elementos da matriz
readln(m[i,j]);
  end;
  end;
for i:=1 to 4 do
  begin
  for j:=1 to 4 do
  begin
  if ((i+j)>= 6) then                 // se i+j >= 6, = condição para o elemento pertencer
  begin                          //a parte inferior da diagonal secundaria
  soma:=soma+m[i,j];        //soma os elementos
  end;
  end;
 
end;
writeln('A soma dos elementos abaixo da diagonal é igual a : ',soma); //mostra
 
 end.

Exercicio 1 com matriz

Program Pzim ;
var
m:array[1..6,1..6] of integer;
a,n,i,j,l,c:integer;
 Begin
 a:=1;
 n:=1;
 l:=1;
 c:=6;
  while a<4 do
begin
for i:=l to c do
begin

for j:=l to c do
  begin
m[i,j]:=n;
  end;
  end;
  n:=n+1;
  a:=a+1;
l:=l+1;
  c:=c-1;
end;

 for i:=1 to 6 do
  begin
  for j:=1 to 6 do
  begin
write(m[i,j],' ');
  end;
  writeln;
  end;

 
 End.

quinta-feira, 16 de junho de 2011

Digita um numero na Base10 e mostra na Base2 - (Converte Decimal em Binário)

{Elabore um algoritmo que o usuario forneça um número inteiro (que é decimal),
calcule e mostre este numero em binario.}
Program Pzim ;
var
binario:array[1..15]of integer;
i,j,num,y:integer;
 Begin
     writeln('Digite um número : ');           {solicita que seja digitado um numero}
     read(y);                                  {armazena o numero na variavel y}
     num:=y;                                   {armazena a var Y na var NUM}
     for i:=1 to 15 do
         begin                                 {atribui zeros no vetor binario}
             binario[i]:=0;
         end;
     for j:=15 downto 1 do           {faz do ultimo, 8 até o primeiro, armazena os ddos no vetor binario
                                     de forma inversa, devido a forma de converter decimal em binario}
         begin
                      binario[j]:=(y mod 2); {o vetor binario recebe o valor do resto da var y (mode 2), e coloca na ultima posição}
                     y:= (y div 2);                   {a var y recebe o valor do quociente e repete o processo anterior }
                                                {até terminar o processo de divisão, qdo o quociente de y for indivisivel por 2(parte inteira)}
         end;
             writeln('O numero  ',num, ', base 10');     {exibe mensagem}
            writeln('tem como correspondente');
      for i:=1 to 15 do
          begin
              write(binario[i],' ');                    {mostra o vetor binario e seus valores de 0 e 1}
          end;
              write(', na base 2');                       {exibe mensagem}
 End.

Lê a media e diz se o aluno foi aprovado, reprovado ou está em recuperação

Program Pzim ;
{Dado Nome e notas ( total de 6 ) alunos, faça um algoritmo que:
a) Imprima Nome e média dos alunos aprovados com  Média > = 7.0.
b) Imprima Nome e média dos alunos em recuperação com 5.0 >= Média <7.0.
c) Imprima Nome e média dos alunos reprovados com Média <5.0

eu nao sei como faser para aparecer todos os nomes , por exemplo dos (aprovados).}
var
nome:array[1..6] of string;           {vetor onde vai ser armazenado os nomes}
nota:array[1..6] of real;             {vetor onde vai ser armazenado as notas}
i:integer;
 Begin
     for i:=1 to 6 do                 {for para entrada dos nados}
        begin
             write('Digite o nome : ');        
             readln(nome[i]);               {recebe os nomes e armazena no vetor nome na posição i de 1 até 6}
             write('Digite a nota : ');     {recebe as notas e armazena no vetor nota na posição i de 1 até 6}
             read(nota[i]);
             clrscr;                        //limpa a tela a cada vez que é digitado um nome e nota
         end;
    clrscr;                           //limpa a tela
   
    writeln('Alunos APROVADOS : ');        //exibe a mensagem     fora do for para aparecer somente uma vez
    for i:=1 to 6 do                         // faz de 1 até o 6
        begin
             if (nota[i]>=7) then
                 begin
                     writeln('Nome : ',nome[i],' - com nota : ',nota[i]:1:2);
                 end
        end;   
        writeln;                       //insere uma linha em branco, para organizar
    writeln('Alunos em RECUPERAÇÃO');     //exibe a mensagem
   
    for i:=1 to 6 do
        begin
            if ((nota[i]>=5) and (nota[i]<7)) then
                begin
                    writeln('Nome : ',nome[i],' - com nota : ',nota[i]:1:2);
                end
        end;
       
        writeln;                       //insere uma linha em branco, para organizar
        writeln('Alunos REPROVADOS');    //exibe a mensagem

    for i:=1 to 6 do
        begin
            if (nota[i]<5) then
                begin
                    writeln('Nome ',nome[i],' - com nota : ',nota[i]:1:2);
                end;
        end;
                     {é preciso fazer um for para cada opção de nota}
 
 End.

Digita 10 numeros e soma somente os numeros pares

{faça um algoritmo que escreva numeros na tela de 1 até 10
e depois some somente os numeros pares e exiba o resultado}
Program Pzim ;
var
i, num:integer;
soma:real;
 Begin
soma:=0;
     for i:=1 to 10 do               {faz de 1 até 10}
         begin
             writeln('Digite um número: ' ); {solicita que digite um numero}
             readln(num);                    {lê o numero}
             clrscr;                          {limpa a tela a cada vez que digita um numero e dá enter}
                 if (num mod 2 = 0) then    {se o numero dividido por 2 (condição pra ser par) é igual a zero}
                     begin
                         soma:=soma+num;     {soma o numero}
                     end;
         end;
         writeln('A soma dos numeros pares é : ',soma);      {mostra o resultado}
 End.

quarta-feira, 15 de junho de 2011

Exercicio com função - soma

{Elabore um algoritmo que o usuário forneça um número inteiro positivo N e,
atravês da função FORMULA(N), retorne o valor H, conforme abaixo:
H = 1 + 1/2 + 3 + 1/4+...+(N + 1/N)}
Program Pzim ;
var
n:integer;
h:real;

function formula(x:integer):real;
var
soma1,soma2:real;
i:integer;
begin
    for i:=1 to x do
        begin                                     {se i mod 2 for diferente de zero - IMPAR}
            if (i mod 2 <> 0) then
                begin
                    soma1:=(soma1+i);
                end
            else
            if (i mod 2 = 0 ) then              {se i mod 2 for igual a zero - PAR}
                begin 
                    soma2:=(soma2+(1/i));
                end;
        end;
              formula:=(soma1+soma2);              {soma os dois valores}
end;
 Begin
     writeln('Digite um número : ');
     readln(n);
     if (n>0) then                                        {condiciona a função se n maior que zero}
         begin
             h:=formula(n);                                {chama a função}
             writeln('A soma é igual a : ',h:1:2);         {mostra o resultado}
         end
     else                                                  {se não for, mostra a mensagem}
         writeln('Digite um número maior que zero');
  End.

Pesquisa entre habitantes

{Foi realizada uma pesquisa entre 150 habitantes de uma cidade. de cada habitante foram
coloetadas dos dados: IDADE, SEXO, RENDA FAMILIAR E NUMERO DE FILHOS. elabore um algoritmo
que o usuario forneça estes dados. Calcule e mostre :
= A média salarial entre os habitantes(entrevistados)
= O total gasto em filhos, sabendo que cada habitante entrevistado dó podera gastar com ele mesmo e
com seus filhos, onde a distribuição de renda deverar ser igual entre todos, por exemplo:
Antonio tem 3 filhos e ganha R$ 1600,00, então cada um deles podera gastar R$ 400,00 ou seja, o gasto
com os filhos fois de R$ 1200,00
= e a quantidade de mulheres com mais de 2 filhos e renda superior a 3 salarios minimos; salario = R$ 545,00}


Program Pzim ;
type
r_hab = record
idade:integer;
sexo:string;
sal:real;
filhos:integer;
end;
var
v_hab:array[1..5] of r_hab;
qtmm2f, pessoas, qtdf, qtdh, i:integer;
gpp, gpf, v_total:real;
 Begin                                              {na solução, tem somente 5 entradas, }
  for i:=1 to 5 do                               {pois digitar 150 ficaria inviavel}
  begin
  writeln('Digite a idade : ');
  readln(v_hab[i].idade);
  writeln('Digite o sexo : ');
  readln(v_hab[i].sexo);
  writeln('Digite o salário : ');
  readln(v_hab[i].sal);
  writeln('Digite a quantidade de filhos : ');
  readln(v_hab[i].filhos);
  clrscr;
  end;
for i:=1 to 5 do
begin
v_total:=v_total+v_hab[i].sal;
qtdh:=qtdh+1;
end;
writeln('A média salario dos habitantes é : R$ ',v_total/qtdh:1:2);
writeln;
for i:=1 to 5 do
begin
pessoas:=v_hab[i].filhos+1;   {calcula a quantidade de filhos mais a quantidade de entrevistados}
gpp:= v_hab[i].sal/pessoas;   {calcula o valor de gasto por pessoa, a renda de cada grupo familiar}
gpf:=gpp*v_hab[i].filhos; {calcula o gasto com os filhos}
writeln('O ',i,'o. entrevistado, gastou com os ',v_hab[i].filhos,' filho(s) foi de R$ ',gpf:1:2);
end;
for i:=1 to 5 do
begin
if ((v_hab[i].sexo='F') and (v_hab[i].sal>1635)) then
begin
qtmm2f:=qtmm2f+1;        {Conta quantas mulheres ganham mais de 3 salarios}
end;
end;
writeln;
writeln('Existem ',qtmm2f,' mulheres com renda salarial maior que 3 Sal. min.');
 End.

segunda-feira, 13 de junho de 2011

Vetor ordem crescente

Program Pzim ;
{recebe 10 numeros inteiros e ordena de forma crescente}
var
vet:array[1..10] of integer;
aux,i,j:integer;

 Begin
 aux:=0;
  for i:=1 to 10 do
  begin
  writeln('Preencha o vetor de 10 posições : ');
  read(vet[i]);
  end;
 

 
  for i := 10 downto 2 do              {faz o for com i de 10 até 2, decrementando, isto é 10, 9, 8, ...}
  begin
  for j := 1 to i-1 do         {faz o for com j de 1 até a posição atual do i menos 1}
  begin
  if vet[j] > vet[j+1] then {se vet, na posição j, for maior que vet na posição j+1, faça}
  begin
  aux := vet[j]; {a var aux, recebe o valor de vet na posição j}
  vet[j] := vet[j+1]; {vet na posição j, recebe o valor de vet na posição seguinte, que seria j + 1}
  vet[j+1] := aux; {e vet na posição j mais 1, recebe o valor que está na var aux, que era o valor de vet na posição j}
  end;                     {resumindo, se o valor na posição vet[j] for maior que}
end;                               {o valor na posição vet[j+1], ele faz a troca desses valores}
end;                                         {a função desse programa é ordenar um vetor }
                                            {seria o seguinte:}
                                                  {preencha um vetor de 10 posições ´com numeros inteiros}
                                                  {e depois ordene de forma crescente}
    for i:=1 to 10 do
    begin
    writeln(vet[i]);
    end;

end.                                                

Múltiplos de 2 e 3

{faca um programa que carregue um vetor com sete numeros inteiro,
calcule e mostre: os numeros multiplos de 2; os numeros multiplos de 3;
os numeros multiplos de 2 e 3.}
Program Pzim ;
var
num: array [1..7] of integer;
mult2, mult3, mult2e3:integer;
i: integer;
 Begin

  {a entrada de dados deve ser feita dentro de um FOR}
 
  for i := 1 to 7 do
  begin
  writeln ('Digite o ',i,'o. numero: ');        {solicita e recebe os numeros para preencher o vetor}
  readln (num[i]);
  end;
  clrscr;
           
            {cada verificação deve ser feita dentro de um FOR separado}
           
writeln('Os números multiplos de 2, são : ');      {exibe a mensagem "uma única vez"}
for i:= 1 to 7 do {faz de 1 até 7}
begin
if (num[i] mod 2 = 0 ) then
begin
mult2 := num[i];            {registra o numero e ...}
writeln(mult2);             {...mostra os numeros}
end;
end;                                      
writeln;                                   {insere uma linha em branco}

{cada verificação deve ser feita dentro de um FOR separado}

writeln('Os números multiplos de 3, são : ');      {exibe a mensagem "uma única vez"}
for i:= 1 to 7 do
begin
if (num[i] mod 3 = 0 ) then
begin
mult3 := num[i];            {registra o numero e ...}
writeln(mult3);               {...mostra os numeros}
end;
end;                                    {insere uma linha em branco}
writeln;

{cada verificação deve ser feita dentro de um FOR separado}

writeln('Os números multiplos de 2 e de 3, são : ');   {exibe a mensagem "uma única vez"}
for i:= 1 to 7 do
begin
if (num[i] mod 2 = 0) and (num[i] mod 3 = 0) then
begin
mult2e3 := num[i];               {registra o numero e ...}
writeln (mult2e3);                 {...mostra os numeros}
end;
end;
 End.

Conta uma determinada letra

{recebe uma palavra ou frase, e uma letra, e diga quantas letras tem na cadeia de
caracteres}
Program Pzim ;
var
frase:string; {variavel que recebe a cadeia de caracteres}
letra:char;
i, conta, j:integer; { "i", contador do for, "j" recebe a quant. de
                caracteres da cadeia e conta, recebe a quantidade de letraas a}
 Begin
    writeln('Digite uma palavra ou frase : ');   {solicita que digite os caracteres}
    readln(frase);        {usar o readln, pois o read para no primeiro espaço e em frases}
    writeln('Digite uma letra');               {nçao ia receber todos os caracteres}
    read(letra);
     j:=length(frase);    {a função length vai contar quantos caractes existe na variavel
                        frase e atribuir esse numero a variavel j}
     for i:=1 to j do         {'i' vai de um até 'j'}
         begin
             if (frase[i] = letra) then  {se na posição [i], de 1 até 'j' ,
                                for igual a letra 'a', conta recebe +1}
                 conta:=conta+1;
         end;
     writeln('na expressão : "',frase,'"');    {mostra a frase digitada}
     writeln('Existem ',conta, ' letras "', letra,' "');    {mostra quantos caracteres "a" existe}
 End.

sábado, 11 de junho de 2011

Inteiro para caractere

as variaveis são iniciadas no início do programa:
VAR
conta:integer; //variavel numérica
t_conta:string; //variavel de texto


str(conta,t_conta);{converte o valor que tem na variavel conta em texto e salva na variavel t_conta}

3 notas com media ponderada

Program Pzim ;
{4- Escreva um programa que leia o código de um aluno e suas três notas.
Calcule a média ponderada do aluno, considerando que o peso para a maior
nota seja 4 e para as duas restantes, 3. Mostre o código do aluno, suas três notas,
a média calculada e uma mensagem "APROVADO" se a média for maior ou
igual a 5 e "REPROVADO" se a média for menor que 5. }
var
cod:integer;
n1, n2, n3, nm1, nm2, nm3, media:real;

Begin
media:=0;
writeln('Digite o código do aluno : ');
read(cod);
write('digite a 1o. nota : ');
read(n1);
write('digite a 2o. nota : ');
read(n2);
write('digite a 3o. nota : ');
read(n3);
{aproveitando a mesma estrutura para ordenar a maior nota, as
outras duas não tem importançia na ordem, pois tem o mesmo peso}
if ((n1 > n2) and (n1 > n3)) then
begin
nm1:=n1;
nm2:=n2;
nm3:=n3;
end
else
if ((n2 > n1) and (n2 > n3)) then
begin
nm1:=n2;
nm2:=n1;
nm3:=n3;
end
else
if ((n3 > n1) and (n3 > n1)) then
begin
nm1:=n3;
nm2:=n1;
nm3:=n2;
end;
media:=(((nm1*4) + (nm2*3) + (nm3*3))/10);
if (media >= 5) then
begin
writeln('O aluno de código ',cod,' foi APROVADO com média : ',media:1:2);
end;
if (media < 5) then
begin
writeln('O aluno de código ',cod,' foi REPROVADO com média : ',media:1:2);
end;
End.

idade de dias para ano/mes/dia

Program Pzim ;
{2- Construa um programa que leia a idade de uma pessoa expressa em dias e
expresse-a em anos, meses e dias.}
var
idade, anos, mes, meses, dias:integer;
{todas variaveis do tipo inteiro, uma pra receber a idade em dias
uma pra ano, duas pra meses e uma pra dia, duas pra meses, pois precisa de uma auxiliar}

{a questão vai ser feita considerando o mes com 30 dias, consequentemente o ano com 360 dias}
Begin
writeln('Digite a idade em dias : ');
read(idade); {recebe a idade em dias}
dias:=(idade mod 30); {mod é o resto da divisão, entao se dividir a quant de dias
por 30 o resto é a quantidade de dias }

mes:=(idade div 30); {div é a parte inteira da divisão, então quando eu divido
a quant. de dias por 30, me dá a quant de meses}

meses:=(mes mod 12); {mod é o resto da divisão. então se dividir a quant de meses
por 12, o resto é a quantidade de meses}

anos:=(idade div 360); {div é a parte inteira da divisão, então quando em divido
a quant. de dias por 360 eu acho a quant de anos}

{a exibição é feita com as variaveis e texto}
writeln(anos,' anos, ',meses, ' meses e ',dias,' dias.');

End.

Programa para calcular o maior e o menor de 3 números inteiros

Program Pzim ;
{Escreva um programa para calcular o maior e o menor
de três números inteiros.}
var
n1, n2, n3, maior, menor:integer; {varriaveis para receber os 3 numeros e o maior e o menor}
Begin
writeln('Digite o 1o. número : ');
read(n1);
writeln('Digite o 2o. número : ');
read(n2);
writeln('Digite o 3o. número : ');
readln(n3);
{compara dois a dois pra confirmar quem é o maior}
if ((n1 > n2) and (n1>n3)) then
begin { o primeiro com o 2º e o 3º}
maior:=n1;
end;
if ((n2 > n1) and (n2>n3)) then { o segundo com o 1º e o 3º}
begin
maior:=n2;
end;
if ((n3 > n1) and (n3>n2)) then {por ultimo o terceiro com o 1º e o 2º}
begin
maior:=n3;
end;

if ((n1 < n2) and (n1<n3)) then
begin
menor:=n1;
end;
if ((n2 < n1) and (n2<n3)) then {a mesma coisa com o menor}
begin
menor:=n2;
end;
if ((n3 < n1) and (n3<n2)) then
begin
menor:=n3;
end;

writeln(' o maior número é : ',maior,', e o menor é : ',menor); {mostra o resultado}

End.

Operação Aritmética

Program Pzim ;
{5. Escreva um programa que leia um carácter '+', '-', '*' ou '/' que indica uma
operação aritmética a efetuar com os dois números que são introduzidos a seguir
e apresente o resultado da operação. }
 var
sinal:char;
n1, n2:integer;
  res:real;
 Begin
 writeln('Qual operação deseja realizar ? ');
 writeln(' soma = "+", subtração = "-", Multiplicação "*" ou divisão "/"');
 readln(sinal);
 writeln('Digite o 1o. Número : ');
 readln(n1);
 writeln('Digite o 2o; Número : ');
 readln(n2);

if (sinal='+') then
begin
res:=n1+n2;
writeln('O resultado da soma é : ',res:1:2);
end;
if (sinal='-') then
begin
res:=n1-n2;
writeln('O resultado da soma é : ',res:1:2);
end;
if (sinal='*') then
begin
res:=n1*n2;
writeln('O resultado da soma é : ',res:1:2);
end;
if (sinal='/') then
begin
res:=n1/n2;
writeln('O resultado da soma é : ',res:1:2);
end;
 End.

Ordenamento

Program Pzim ;
{2. Escrever um programa que lê um conjunto de 4 valores i, a, b, c, onde i é um
valor inteiro e positivo (faça a validação) e a, b, c, são quaisquer valores reais e
os escreva.
A seguir:
a) Se i=1 escrever os três valores a, b, c em ordem crescente.
b) Se i=2 escrever os três valores a, b, c em ordem decrescente.
c) Se i=3 escrever os três valores a, b, c de forma que o maior entre a, b, c fique
entre os outros dois.}
var
i:integer;
n1, n2, n3, a, b, c:real;

 Begin
 writeln('Digite o código do ordenamento (1, 2 ou 3) : ');
 writeln(' 1 - para ordem CRESCENTE');
 writeln(' 2 - para ordem DECRESCENTE');
 writeln(' 3 - para ordem MAIOR NO MEIO');

   read(i);
   if ((i>0) and (i<4)) then               {condição pra fazer entre 1 e 3}
    begin                            {se atender a condição ...}
    write('digite o 1o. número : ');
    read(a);
    write('digite o 2o. número : ');
    read(b);
    write('digite o 3o. número : ');
    read(c);                            {recebe os tres numeros, a, b, c}
    if ((a > b) and (b > c)) then
  begin                              
  n1:=a;
  n2:=b;
  n3:=c;
  end
  else
  if ((a > c) and (c >b)) then
  begin
  n1:=a;
  n2:=c;
  n3:=b;
  end
  else
  if ((b > a) and (a > c)) then
  begin
  n1:=b;
  n2:=a;
  n3:=c;
  end
  else
  if ((b > c) and (c > a)) then
  begin
  n1:=b;
  n2:=c;
  n3:=a;
  end
  else
  if ((c > a) and (a > b)) then
  begin
n1:=c;
  n2:=a;
  n3:=b;
      end
      else
  if ((c > b) and (b > a)) then
  begin
  n1:=c;
  n2:=b;
  n3:=a;
  end;                                {ordena os tres numeros}
 
      if (i=1) then                             {condição de exibição de acordo com o 'i'}
      writeln('Sequencia escolhida - CRESCENTE : ', n3:1:2, ' - ', n2:1:2, ' - ', n1:1:2)
      else
      if (i=2) then
      writeln('Sequencia escolhida - DECRESCENTE : ', n1:1:2, ' - ', n2:1:2, ' - ', n3:1:2)
      else
      if (i=3) then
      writeln('Sequencia escolhida - MAIOR NO MEIO : ', n2:1:2, ' - ', n1:1:2, ' - ', n3:1:2)
      end                         {o :1:2, é pra formatar a quant de decimal de um numero real}
     else
      writeln('Digite um número entre " 1 e 3 "'); {se não atender a condição de 'i', entre 1 e 3, mostra a mensagem}
 
 End.

programa para somar os N primeiros termos

Program Pzim ;
{Faça um programa para somar os N primeiros
termos da série abaixo:
1 + 3/1 + 5/3 + 7/5 + 9/7 + ...}
var
n,i:integer;
n1, n2, soma:real; {variaveis}

 Begin
 n1:=3;{inicia as variaveis com 3 e 1, }
 n2:=1;
 soma:=1; {inicia a soma com 1, por isso o for, faz até n-1, pois como o primeiro termo é um, ele já vem incrementado}
  write('Digite um numero : ');
  readln(n);
  for i:=1 to n-1 do {faz de 1 até n-1, pois a soma é iniciado já com 1}
  begin
soma:=soma+(n1/n2);
writelnl('1');
writeln(n1,'/',n2);  {essa linha é facultativa, é só pra visualizar as divisoes}
n1:=n1+2; {incrementa n1 mais 2}
n2:=n2+2; {incrementa n2 mais 2}
  end;
     writeln('A soma dos ',n,' termos de "1+ 3/1 + ... N" é: ',soma); {mostra a resposta}
 End.

Divisores

Program Pzim ;
{1. Escrever um programa para ler um número inteiro
e maior ou igual a 4 (faça a verificação), e mostre
todos os seus divisores exceto 1 e o numero lido.}
var
num, i:integer;
 Begin
 writeln('digite um numero maior que 4 : ');  {solicita que seja digitado um numero}
 readln(num);                                 {lê o numero digitado}
  if (num>=4) then                         {se numero for igual ou maior que 4 entra no FOR}
  begin
  for i:=2 to num-1 do             {faz de 2 até o numero lido}
  begin
  if (num mod i=0) then     {se o numero for divisivel ...}
  begin
  write(i,', ');   {... exibe os numeros}
  end;
  end;
 
  end                                    {se o numero for menor que 4, exibe a mensagem}
  else
  begin
  writeln('O número digitado dever ser igual ou maior que 4');
  end;

 End.

quinta-feira, 9 de junho de 2011

Conta as letras A ou a

{contar a quantidade de letras "a" existente na cadeia de caracteres}
Program Pzim ;
var
frase:string; {variavel que recebe a cadeia de caracteres}
i, conta, j:integer; { "i", contador do for, "j" recebe a quant. de
                caracteres da cadeia e conta, recebe a quantidade de letraas a}
 Begin
    writeln('Digite uma palavra ou frase : ');   {solicita que digite os caracteres}
    readln(frase);        {usar o readln, pois o read para no primeiro espaço e em frases
                    nçao ia receber todos os caracteres}
     j:=length(frase);    {a função length vai contar quantos caractes existe na variavel
                        frase e atribuir esse numero a variavel j}
     for i:=1 to j do         {'i' vai de um até 'j'}
         begin
             if ((frase[i] = 'A') or (frase[i] = 'a')) then  {se na posição [i], de 1 até 'j' ,
                                for igual a letra 'a', conta recebe +1}
                 conta:=conta+1;
         end;
     writeln('na expressão : "',frase,'"');    {mostra a frase digitada}
     writeln('Existem ',conta, ' letras "A"');    {mostra quantos caracteres "a" existe}
 End.

quarta-feira, 8 de junho de 2011

Questão 3 da prova

Program Pzim ;
var
a, b, pote:integer;

function pot(x,y:integer):integer;
var
i,z:integer;  
begin
    z:=1;     {inicio a var z, com valor 1, pois se colocar 0, qq numero multiplicado por zero dá zero}
      for i:=1 to y do    {faz de um até y, que recebe o valor de b no program principal}
         begin
             z:=z*x;
         end;
     pot:=z; {pot, que é a função, recebe o valor de z}
end;

procedure primo(j:integer);
var                        {para ser primo o numero so pode ser divisivel por 1 e por ele mesmo: cont<=2}
cont, i:integer;
begin
cont:=0;    // inicia o contador com zero
    for i:=1 to j do      {fazer de 1 até o  numero resultade da função potencia}
        begin
            if (j mod i <> 0 ) then      {se a divisão do numero por 1,..,j, for diferente de zero
                                    o contadot é incrementado, +1}
                begin
                    cont:=cont+1;
                end;
          
        end;   
            if (cont<=2) then            {como numero primo, só  pode ser dividido no maximo
                                    por dois, pelo numero 1 e por ele mesmo, se for maior que 1
                                    , então para ser  primo a condição é que o cont seja no maximo 2}
                    writeln('O número ',j,' é primo')                {se for}
            else
                    writeln('O número ',j,' não é primo');           {se não  for}
end;

 Begin                            {a estrutura do programa de entrada de dados é simples}
 writeln('Digite o 1o. número : ');
 readln(a);
 writeln('Digite o 2o. número : ');
 readln(b);
 pote:=pot(a,b);                           {chama a função pote e atribui a variavel pote}
 writeln('O numero ',a,' elevado a ',b,' é igual a : ',pote);     {mostra o resultado}
 primo(pote);                {chama o procedimento primo, o resutado é mostrado dentro do procedimento}
 End.

segunda-feira, 6 de junho de 2011

Questão 4 da prova

Program Pzim ;
{FAÇA UM ALGORITMO PARA O USUARIO FORNECER O CÓDIGO, O SEXO (M OU F) E O NUMERO DE HORAS/AULA
DADAS NO MES PELO PROFESSOR DE UMA ESCOLA, SABENDO QUE O PROFESSOR GANHA R$ 12,50 HORA/AULA
E QUE A ESCOLA POSSUI 10 PROFESSORES MOSTRE
A) UMA LISTAGEM CONTENDO O CODIGO, O SLARI BRUTO E O SALARIO LIQUIDO DE TODOS OS PROFESSORES
B) A MEDIA ARITMETICA DOS SALARIOS BRUTO DOS PROFESSORES DO SEXO FEMININO}

type
    r_professor=record
        cod:integer;
        sexo:char;
        haula:integer;
    end;
var
v_professor:array[1..4] of r_professor;
h_aula, pf, i:integer;
salbruto,salliq,desc, salf, somasf, mediasf:real;

{se houver variaveis para inicia, isso deve ser feito no inicio do programa}
 Begin
          pf:=0;
         salf:=0;
         somasf:=0;
         mediasf:=0;
     for i:=1 to 4 do
         begin
             writeln('Digite o cógido : ');
             readln(v_professor[i].cod);
             writeln('Digite o sexo : ');
             readln(v_professor[i].sexo);
             writeln('Digite a quantidade de hora-aulas : ');
             readln(v_professor[i].haula);
         end;
     {acima é feita a entrada dos dados no registro}   
    
     {a partir daqui é feito a parte A do problema, com as condições dada na tabela}
     {foi criadas variveis para receber o salario bruto, o desconto e o salario liquido}
     for i:=1 to 4 do
         begin
             {se até 70 horas e do sexo masculino}
             if ((v_professor[i].haula<=70) and (v_professor[i].sexo= 'M')) then
                 begin
                     salbruto:=(v_professor[i].haula*12.5);
                     desc:=(salbruto*0.1);
                     salliq:=(salbruto-desc);
                 end
             else
             {se até 70 horas e do sexo feminino}
             if ((v_professor[i].haula<=70) and (v_professor[i].sexo= 'F')) then
                 begin
                     salbruto:=(v_professor[i].haula*12.5);
                     desc:=(salbruto*0.07);
                     salliq:=(salbruto-desc);
                 end
             else
             {mais que 70 horas e do sexo masculino}
            if ((v_professor[i].haula>70) and (v_professor[i].sexo= 'M')) then
                 begin
                     salbruto:=(v_professor[i].haula*12.5);
                     desc:=(salbruto*0.08);
                     salliq:=(salbruto-desc);
                 end
             else
             {mais que 70 horas e do sexo feminino}
             if ((v_professor[i].haula>70) and (v_professor[i].sexo= 'F')) then
                 begin
                     salbruto:=(v_professor[i].haula*12.5);
                     desc:=(salbruto*0.05);
                     salliq:=(salbruto-desc);
                 end;            
                
             {aqui mostramos a relação, note que usamos tanto dados no registro como das variaveis criadas}   
            writeln('Cód: ',v_professor[i].cod,' - Sal. bruto : ',salbruto:1:2,' - Desc : ',desc:1:2,' - Sal. Liq. : ',salliq:1:2);
         end;

         {a partir daqui é feito a parte B do problema}
     for i:=1 to 4 do
         begin
        
             if (v_professor[i].sexo = 'F') then         // se for do sexo feminino
                 begin
                     pf:=pf+1;                           //conta a quant. de professores do sexo feminino
                     h_aula:=v_professor[i].haula;        //
                     salf:=h_aula*12.5;                //calcula o salario feminino
                     somasf:=somasf+salf;             // soma o salario feminino
                 end;
             mediasf:=(somasf/pf);                    // calcula a media
         end;
         {exibe o resultado}
         writeln('A media dos salarios dos prof. de sexo feminino é : ',mediasf:1:2);
 End.

domingo, 5 de junho de 2011

Exercicio 5 de funções

Program Pzim ;
{criar um programa para ler dois numeros e chamar uma função que retorne se os valores
recebidos são iguais ou diferentes.  o programa será finalizado se por digirado um valor
negtivo para o primeiro numero}

var
num1, num2:integer;
r_compara:string;
//inicio da função
function compara(x1,x2:integer):string;
    begin
        if (x1=x2) then
            compara:='Os números são iguais'
        else
            compara:='Os números são diferentes'
    end;
//fim da função
//inicio do algoritmo
 Begin
     writeln('Digite o primeiro número : ');
     readln(num1);
     if (num1>=0) then
         begin
             writeln('Digite o segundo número : ');
             readln(num2);
              r_compara:=compara(num1,num2);
             writeln(r_compara);
         end
    else
        begin
            writeln('Finalizando o Algoritmo');
        end;
 End.

Exercicio 4 de funções

{Desenvolver um programa para ler dois numeros e chamar
uma  função que retorna a potência do 1º numro elevado
ao 2º.}
Program Pzim ;

var
n1,n2:integer;
r_pot:real;


//inicio da função
function pot(x1,x2:integer):real;  // recebe variaveis inteiras e a resposta é do tipo real
    begin
        pot:= exp(x2*ln(x1));    // função de potencia existente no pascal   
    end;
//fim da função


//inicio do algoritmo
 Begin
     writeln('Digite o primeiro número : ');         // solicita o primeiro numero
     readln(n1);                                     // recebe n1
     writeln('Digite o segundo número : ');          // solicita o segundo numero
     readln(n2);                                     // recebe n2
     r_pot:=pot(n1,n2);                 // atribui a variavel r_pot, o resultado da função pot;
                                           // em função, chamamos a função e atribuimos o seu resultado,
                                        // direto na variavel
     writeln(' - ',n1,' elevado a ',n2,' é = ',r_pot:4:2);
     {exibe o a rsposta}
 End.

Exercicio 3 de funções

Program Pzim ;
{Escrever um programa que, utilizado de funções, leia um valor e retorne
a) se é multiplo de 5 ou não  -retorno string;
b) fatorial (1*2*...*n) retorno integer.}

{variaveis globais}
var
r_fatorial, num:integer;
r_multiplo:string;

//inicio da função multiplo
function multiplo(x:integer):string;   // a função recebe um valor de inteiro e retorna ma string
    begin
        if (x mod 5 = 0) then         // verifica se é multiplo de 5, se fim
            multiplo:='O número é multiplo de 5'    //a função multiplo recebe a frase como resposta
        else                                          // se não
            multiplo:='O número NÃO é multiplo de 5'    //recebe a frase informando que não
    end;
   
   
//inicio da função fatorial
function fatorial(y:integer):integer;       // a funçaõ recebe e retorna um valor de inteiro
var
fat,i:integer;
    begin
    fat:=1;
        for i:= 1 to y do
              begin
                    fat:= fat * i;
               end;
     fatorial:=fat;
    end;
   
   
//fim das funçoes
//inicio do algoritmo

{quando fazemos algoritmos com funções e procedimentos devemos primeiro começar perlo algoritmo, depois
é que fazemos as funções e ou procedimentos }

Begin
    writeln('Digite um número: ');    // solicita que seja digitado um numero
    readln(num);                    // recebe o numero digitado
    r_multiplo:=multiplo(num);         // atribui a variavel r_multiplo o valor retornado da função multiplo
    r_fatorial:=fatorial(num);         // atribui a variavel r_fatorial o valor retornado da função fatorial
                        {em função, ao mesmo tempo chamamos a função e atribuimos o resultado
                        a uma varivel, esse resultado pode ter a variavel do mesmo tipo ou de tipo diferente}
    writeln(r_multiplo);    //exibe os resultados
    writeln('O fatorial de ',num, ' é : ',r_fatorial);
End.

Exercicio 2 de funções

Program soma ;
{Fazer um programa para ler três  numeros e chamar uma função que retorna
a soma dos numeros}

{variaveis globlais, usadas no algoritmo}
var
n1,n2,n3:integer;     // variaveis do numeros que serão digitados
r_soma:real;        // variavel que recebe o retorno da função

{lembrando que primeiro fazemos o algoritmo, depois é que inserimos a função
    recomendamos o uso de rascunho e detalhar cada parte antes de montar o programa}
   
//inicio da função
function soma(x1,x2,x3:integer):real;
        begin
            soma:=(x1 + x2 + x3);
        end;
//fim da função

{começamos por aqui, depois fazemos a função
    a função está em cima, pois ela deve está entre as variaveis e o begin do algoritmo}

//inicio do algoritmo
 Begin
     writeln('Digite 3 numeros a serem somados: ');     // solicita os 3 numeros
     readln(n1,n2,n3);                            // recebe os 3 numeros
     r_soma:=soma(n1,n2,n3);        // atribui a variavel r_soma o resultado da função chamada

     writeln(' A soma dos numeros ', n1,',',n2,',',n3,' é : ',r_soma:5:2);
     //exibe o resultado
 End.
                                                       

Exercicio 1 de funções

Program cubo ;
{Fazer um programa para ler um número e chamar uma função
que retorna o cubo do numero}

var
num:integer;    //variavel de entrada que recebe o numero digitado
r_cubo:real;    //variavel de saida que recebe a resposta da função


//inicio da função
function cubo(n:integer):real;
    begin
        cubo:= exp(3*ln(n));
    end;
//fim da função e incio do algoritmo

//se inicia pelo programa, pedindo pra digitar um número e depois lê esse número
 Begin
     writeln('Digite um número : ');
     readln(num);
        r_cubo:=cubo(num);  //a variavel recebe o resultado e chama a função
        writeln('O cubo no número : ',num, ' é ',r_cubo:1:2); // exibe o resultado
 End.

Exercicio 4 de procedimento

Program Pzim ;
{Escrever um programa que, utilizado de procedimentos, leia um valor e mostre :
a) seu fatorial
b) seu quadrado
garante que o numero lido seja positivo.}

var    //variaveis globais
num:integer;

{a partin daqui é o procedimento de fatorial }
procedure fatorial(x:integer);
var
fat:integer;
i:integer;

begin
    fat:=1; // inicia-se a variavel com 1, pois por padrão seria zero, e se voce multiplica qualquer num por zero dá sempre zero
    for i:=1 to x do
        begin
            fat:=fat*i;
        end;
    writeln('O fatorial do numero ', x, ' é : ',fat);        //aqui mostra o resultado
end;

{a partin daqui é o procedimento de quadrado }
procedure quadrado(y:integer);
var
quad:integer;

begin
    quad:=y*y;   
    writeln('O quadrado do numero ', y, ' é : ', quad);    //aqui mostra o resultado
end;

        {os procedimentos devem estar entre as variaveis globais e o inicio do programa
            mas geralmente é mais viavel, fazer a parte do programa e depois vim fazer os
        procedimentos em cima}
 Begin
     {inicio do programa}
     writeln('Digite um numero : ');
     readln(num);
         if (num>0) then
             begin
                 fatorial(num);
                 quadrado(num);
             end
         else
            writeln('Digite um numero positivo');

 End.

Exercicio 3 de procedimento

Program Pzim ;
{Fazer um programa para ler um número (N) e chamar um procedimento
que mostra o somatório de 1 até N, garantir que o número seja positivo}
var         //variaveis globais
n:integer;
{aqui é a varviavel go programa - variavel global}


procedure soma(x:integer);
var           //variaveis locais
i, somas:integer;              // aqui são variaveis que irão funcionar someente no procedimento,
                        // não pode ter variaveis com mesmo nome no programa e no procedimento
begin                         // o procedimento é iniciado com um begin
    for i:=1 to x do
        begin
            somas:=somas+i;
        end;
    write('A soma dos termos de 1 até ',x,' é : ',somas);
end;                        // o procedimento é finalizado com end ; (ponto e virgula)


 Begin
     writeln('Digite um numero : ');
     readln(n);
         if (n>1) then        // condição para que o numero seja positivo
             begin                  //se atende a condição
                 soma(n);             // chama a fuunção
             end
         else                              //se não
             writeln('Digite um numero positivo');      //mostra mensagem pedido pra digitar um numero positivo
      
 End.

sábado, 4 de junho de 2011

Exercicio 2 - procedure

Program Pzim ;

var
num,i:integer;

procedure somar(x :integer);   
    begin
        for i:=1 to 10 do    //a variavel i é global, por isso não é preciso iniciar ela aqui no procedimento
            begin
                writeln(  x, ' + ', i, ' = ', i+x ); // mostra a tabuada
            end;           
       
    end;

 Begin
     {inicio do programa}
    writeln('Digite um número : ');      //solicita que entre com um número
    readln(num);                    //recebe o numero
    clrscr;                //limpa a tela
    if (num>0) then         //verifica se o numero é maior que zero
        begin            //se numero maior que zero
            somar(num);        // chama o procedimento
        end                //antes de um ELSE, não usa ponto e virgula
    else            //senao
            begin
            write('digite um numero maior que ZERO');    // solicita que se digite um num maior que zero
        end;

 End.