terça-feira, 28 de fevereiro de 2012

Recursividade

Em Ciência da computação, a recursividade é a definição de uma subrotina (função ou método) que pode invocar a si mesma. A grande vantagem da recursão está na possibilidade de usar um programa de computador finito para definir, analisar ou produzir um estoque potencialmente infinito de sentenças, designs ou outros dados.
Wikipédia

Então vamos usar um fatorial para exemplificar
uma função em c que calcule o fatorial de um numero x sem recursividade

int fatorial (int x){
int i;
i = x - 1;
for (i; i!=1; i--)
x = x * i;
return x;
}

Então podemos considerar que:

fatorial de 5 é igual a 5 multiplicado pelo fatorial de 4;
fatorial de 4 é igual a 4 multiplicado pelo fatorial de 3;
fatorial de 3 é igual a 3 multiplicado pelo fatorial de 2 que é 2


fatorial de x = x * fatorial de ( x -1 );

Logo em C a função fatorial recursiva fica.


int fatorial (int x){
if(x<2)
return x;
return fatorial(x-1) * x;
}

segunda-feira, 24 de outubro de 2011

Vetores em C

/* Fazer um programa para contar o número de espaços em brancos de uma string.  */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
char s[20];
int i, quant;
quant = 0;
printf("Digite uma string: ");
scanf("%[^\n]",s);
printf("String digitada: %s\n",s);
 
for (i=0; s[i] != '\0' ;i++){
char ch;
ch = s[i];
if (ch == ' '){
quant += 1;
}
}
 
printf("Quantidade de espacos digitados: %d",quant);
return 0;
}




/* Refaça o programa anterior criando uma função que receberá como parâmetro a string e
retornará o número de espaços em branco que a string contem.   */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int emBranco (char s[]) {
int i = 0, quant = 0;
for (i=0; s[i] != '\0' ;i++){
char ch;
ch = s[i];
if (ch == ' '){
quant += 1;
}
}
 
printf("Quantidade de espacos digitados: %d",quant);
return 0;
}
int main(){
char s[25];
int i, quant;
quant = 0;
printf("Digite uma string: ");
scanf("%[^\n]",s);
printf("String digitada: %s\n",s);
emBranco(s);
 
 
return 0;
}




/* Fazer um programa para contar o número de vogais numa cadeia de caractere.  */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
char s[40];
int numVogais, i;
char *vogais;
printf("Digite uma string: ");
scanf("%[^\n]",s);
vogais = "aeiouAEIOU";
numVogais = 0;
for (i = 0; s[i] != '\0'; i++) {
char ch;
int j;
ch = s[i];
for (j = 0; vogais[j] != '\0'; j++) {
if (vogais[j] == ch) {
numVogais += 1;
break;
}
}
}
printf("Quantidade de vogais digitados: %d",numVogais);
 
 
return 0;
}




/* Refaça o programa anterior criando uma função que receberá como parâmetro a string e
retornará o número de vogais que a string contem.   */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
int countVogais (char s[]) {
char *vogais;
int numVogais, i;
 
vogais = "aeiouAEIOU";
numVogais = 0;
for (i = 0; s[i] != '\0'; i++) {
char ch;
int j;
ch = s[i];
for (j = 0; vogais[j] != '\0'; j++) {
if (vogais[j] == ch) {
numVogais += 1;
break;
}
}
}
return numVogais;
}
 
 
 
int main()
{
char s[40];
int valor;
printf("Digite uma string: ");
scanf("%[^\n]",s);
valor=countVogais(s);
printf("Quantidade de vogais digitados: %d",valor);
 
 
return 0;
}



/*Escrever um programa para ler uma string (com mais de uma palavra) e faça com que a
primeira letra de cada palavra fique em maiúscula. Para isso, basta subtrair 32 do elemento
que deseja alterar para maiúsculo. chrNome[0] = chrNome[0] – 32;
Exemplo:
Entrada: lab. de linguagem de programacao
Saída: Lab. De Linguagem De Programacao  */
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
char s[40];
int i;
 
printf("Digite uma string: ");
scanf("%[^\n]",s);
printf("String digitada: %s\n",s);
 
for (i=0; s[i] != '\0' ;i++){
char ch;
ch = s[i];
if (ch == s[0]){
s[i] = s[i] - 32;
}
 
if (ch == ' '){
s[i+1] = s[i+1] - 32;
}
}
printf("String digitada concertada: %s",s);
 
 
return 0;
}

Vetores númericos

/*Dada um tabela contendo a idade de 10 alunos, faça um algoritmo que calcule o número de
alunos com idade superior a média.
*/
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
int v[10];
int i, soma, count;
float media;
soma = 0;
count = 0;
 
for (i=0; i < 10; i++){
printf("Digite a nota %d\n",i+1);
scanf("%d", &v[i]);
soma = soma + v[i];
}
media = ((float)soma)/ 10.0;
 
for (i=0; i < 10; i++){
if (media < ((float)v[i])){
count = count + 1;
}
}
 
printf("Media: %f\n", media);
printf("Quantidade de Alunos com nota maior que a media: %d\n", count);
 
 
return 0;
}




/*Dada um tabela contendo a idade de 10 alunos, faça um algoritmo que calcule o número de
alunos com idade superior a média.
*/
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
int v1[10], v2[10];
int i, soma1, soma2;
 
soma1 = 0;
soma2 = 0;
 
for (i=0; i < 10; i++){
printf("Digite o valor do vetor1 na posicao %d\n",i+1);
scanf("%d", &v1[i]);
soma1 = soma1 + v1[i];
}
printf("A Soma dos valores do primeiro vetor e: %d\n\n", soma1);
 
for (i=0; i < 10; i++){
printf("Digite o valor do vetor2 na posicao %d\n",i+1);
scanf("%d", &v2[i]);
soma2 = soma2 + v2[i];
}
printf("A Soma dos valores do primeiro vetor e: %d\n\n", soma2);
 
printf("A Soma Total e: %d\n", soma1+soma2);
 
 
return 0;
}

Mais um pouco de Funções

/*Escreva uma função que receba como parâmetro 
um valor n inteiro e positivo e que calcule 
a seguinte soma: S := 1 + 1/2 + 1/3 + 1/4 + ... + 1/n. 
A função deverá retornar o valor de S.  */
#include <stdio.h>
#include <stdlib.h>
 
 
int  soma(int n){
float i, s;
s=0;
for (i=1; i<=n; i++){
s= s + 1/i ;
}
printf ("o valor de S e %f",s);
 
}
 
int main()
{
int n;
printf("Entre com o parametro\n");
scanf("%d", &n);
soma(n);
return 0;
}
 




/*Faça um programa que apresente o seguinte “Menu” para o usuário: 
     Escolha uma opção de cálculo para dois números: 
              1) Soma 
              2) Produto 
              3) Quociente 
              4) Sair 
              Opção:__  
O “Menu” acima deve ser apresentado para o usuário enquanto ele não escolher a opção 4 
(sair do programa). O usuário fornecerá 2 números se escolher as opções de cálculo 1, 2 
ou 3. Para cada opção de cálculo deve existir (obrigatoriamente) uma função definida 
(soma, produto e quociente dos dois números fornecidos pelo usuário). O resultado do 
cálculo deve ser escrito na tela.  */
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
 
 
int soma()
{
int a, b;
printf("Entre dois valores \n");
scanf("%d %d", &a,&b);
printf("O resultado da soma de %d + %d = %d",a,b, a+b);            
return 0;
}
 
int produto()
{
int a, b;
printf("Entre dois valores \n");
scanf("%d %d", &a,&b);
printf("O resultado da multiplicacao de %d * %d = %d",a,b, a*b);            
return 0;
}
 
int quociente()
{   
float a,b;
printf("Entre dois valores \n");
scanf("%f %f", &a,&b);
printf("O resultado da multiplicacao de %f / %f = %f",a,b, a/b);            
return 0;
}
 
 
int main(){
int a, b, operador;
float c;
 
printf("Entre com o Operador 1.+(soma) 2.*(Produto) 3./(Quociente) 4. (Sair)");
scanf("%d",&operador);
switch (operador)
{
case 1:
soma();
break;
case 2:
produto();
break;
case 3:
if (b == 0)
printf("Não existe divisão por 0");
else
quociente();
break;
case 4:       
printf("Até mais");
break;
default:
printf("Operador invalido");
break;
}
return 0;
}



/*Agora com o seguinte “Menu”
   Escolha uma opção de cálculo para um número:
   a) Fatorial
   b) Exponencial
   c) Raiz quadrada
   d) Sair
   Opção: __
 Nas opções “b” e “c” pode - se utilizar funções predefinidas do C.  */
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
void sair(){
char confirm[3];
printf("Tem Certeza?");
scanf("%s",confirm);
if (confirm == 'sim')
printf("Tem dsadsadsaCerteza");
else
printf("%s", confirm);
}
 
int main(){
int operador;
 
 
printf("Entre com uma opcao\n1.(Quer Namorar com o Guilherme)\n2.(Quer Passar o resto da vida com o Guilherme)\n3.(Nao Consegue viver mais sem o Guilherme)\n4.(Sair)");
scanf("%d",&operador);
switch (operador)
{
case 1:
int n,a;
printf("Entre o valor do fatorial\n");
scanf("%d", &n);
a = fatorial(n);
printf("O resultado do fatorial de %d e %d\n",n , a);
break;
case 2:
exponencial();
 
break;
case 3:
raiz();
 
break;
case 4:
sair()
break;
default:
printf("Operador invalido");
break;
}
 
return 0;
}

segunda-feira, 10 de outubro de 2011

Exercicios de funções parte II

/*5.  Faça uma função que receba a idade de uma pessoa em anos, meses e dias e retorna essa
idade expressa em dias. */
#include <stdio.h>
#include <stdlib.h>
 
 
int convertedias(int anos, int meses, int dias){
int dias2;
dias2 = (anos * 365) + (meses * 30) + dias;
printf("Sua idade em dias e %d\n", dias2);
}
 
int main()
{
int anos, meses, dias;
printf("Informe a idade em anos, meses e dias\n");
scanf("%d %d %d", &anos, &meses, &dias);
convertedias(anos, meses, dias);
return 0;
}






/*6.  Faça  uma função que  recebe  a  média final  de  um  aluno  por  parâmetro  e  retorna  o  seu
conceito, conforme a tabela a seguir:
Nota     Conceito
De 0 a 49       D
De 50 a 69    C
De 70 a 89    B
De 90 a 100        A
 */
#include <stdio.h>
#include <stdlib.h>
 
 
int  conceito (int media){
if (media >= 0 && media <= 49)
printf("Conceito D");
else if (media <= 69)
printf("Conceito C");
else if (media <= 89)
printf("Conceito B");
else if (media <= 100)
printf("Conceito A");
else
printf("Valor de entrada incorreto");
 
}
 
int main()
{
int media;
printf("Entre com a media\n");
scanf("%d", &media);
conceito(media);
return 0;
}






/*7. Escrever uma função  int  contaimpar (int n1, int n2) que retorna o número de
inteiros impares que existem entre n1 e n2 (inclusive ambos, se for o caso). A função deve
funcionar inclusive se o valor de n2 for menor que n1.   */
#include <stdio.h>
#include <stdlib.h>
 
 
int  contaimpar (int n1, int n2){
int i, asw;
asw = 0;
int vect[0];
if (n1 <= n2){
for (i=n1; i<=n2; i++){
if (i%2 != 0){
asw++;}
}}
else{
for (i=n1; i>=n2; i--){
if (i%2 != 0){
asw++;}
}}
 
 
printf ("Quantida de impares e %d",asw);
}
 
int main()
{
int n1, n2;
printf("Entre com os valores\n");
scanf("%d %d", &n1, &n2);
contaimpar(n1,n2);
return 0;
}




/* 8.  Escrever uma função int divisão (int dividendo, int divisor, int * resto), que
retorna  a  divisão  inteira  (sem  casas  decimais)  de  dividendo  por  divisor  e  armazena  no
parâmetro resto, passado por referência, o resto da divisão.
int r, d;
d = divisao(5, 2, &r);
printf("Resultado:%d Resto:%d", d, r); Resultado:2 Resto:1   */
 
#include <stdio.h>
#include <stdlib.h>
 
 
int divisao(int dividendo, int divisor, int *resto){
 
*resto = dividendo%divisor;
return dividendo/divisor;
 
}
 
int main(){
int r, d, divisor, dividendo;
printf("Entre com o Dividendo e o Divisor\n");
scanf("%d %d", &dividendo, &divisor);
d = divisao(dividendo, divisor, &r);
printf("Resultado:%d Resto:%d", d, r);
}

terça-feira, 27 de setembro de 2011

Exemplo Procedimentos e Funções

Escreva um procedimento que receba como parâmetro dois valores inteiros n1 e n2 e
imprima o intervalo fechado entre eles, do menor para o maior.
Por exemplo: se n1 = 2 e n2 = 5, o procedimento irá imprimir 2, 3, 4, 5.
#include <stdio.h>
#include <stdlib.h>
 
void completa(int n1, int n2){
int i;
if (n1<=n2)
for (i=n1; i<=n2; i++)
printf("%d", i);
else
for (i=n2; i<=n1; i++)
printf("%d", i);
}
 
int main()
{
int n1, n2;
printf("Entre com dois valores\n");
scanf("%d %d",&n1, &n2);
completa(n1,n2);
return 0;
}



Faça um procedimento que receba a idade de uma pessoa em dias e retorna essa idade
expressa em anos, meses e dias.



#include <stdio.h>
#include <stdlib.h>
 
void transforma(int dias){
int meses, anos;
anos = dias / 365;
meses = dias / 30;
if (dias >= 365)
dias = dias % 365;
meses = meses % 12;
if (dias >= 30)
dias = dias % 30;
printf("A idade e %d anos, %d meses e %d dias", anos, meses, dias);
}
 
int main()
{
int dias;
printf("Entre com a quantidade de dias\n");
scanf("%d",&dias);
transforma(dias);
return 0;
}






Faça um procedimento que receba por parâmetro o  tempo de duração de um experimento
expresso em segundos e imprima na tela esse mesmo tempo em horas, minutos e
segundos.



#include <stdio.h>
#include <stdlib.h>
 
void converte(int seg){
int horas, minutos;
minutos = seg / 60;
horas = seg / 3600;
if (seg >= 3600)
seg = seg % 3600;
minutos = minutos % 60;
if (seg >= 60)
seg = seg % 60;
printf("O tempo do experimento e %d horas, %d minutos e %d segundos", horas, minutos, seg);
}
 
int main()
{
int seg;
printf("Entre com o tempo do experimento em segundos\n");
scanf("%d",&seg);
converte(seg);
return 0;
}






Faça uma função que receba por parâmetro o raio de uma esfera e calcula o seu volume: V = (4 * PI * R3) /3. 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int volume(raio){
 
float pi, vol, r3;
r3=pow((float)raio,3);
pi = 3.14159265;
vol = ((4.0 * pi * r3)/3.0);
 
printf("Volume da esfera de raio %d e %f", raio, vol);
}
 
int main()
{
int raio;
printf("Entre com o raio da esfera\n");
scanf("%d",&raio);
volume(raio);
return 0;
}

sexta-feira, 16 de setembro de 2011

Portal™ uma abordagem educativa de Ciência, Tecnologia, Engenharia e Matemática.


Portal™ é um novo jogo single player da Valve. Estabelecido nos misteriosos Laboratórios Aperture Science, Portal é aclamado como um dos novos jogos mais inovadores no horizonte e oferecerá aos jogadores horas de jogabilidade única.[1]

O jogo é projetado para mudar a forma com a qual jogadores se aproximam, manipulam e supõem as possibilidades num dado ambiente.

Jogadores devem resolver quebra-cabeças físicos e desafios abrindo portais para manipular objetos, e eles mesmos, pelo espaço.
A produtora da série Portal™, a Valve, criou uma campanha para utilização do jogo em escolas para o desenvolvimento do raciocínio lógico, ensinando física e melhorando as habilidades de desenvolvimento crítico.

Um dos maiores desafios do ensino de ciências, tecnologia, engenharia e matemática é capturar a imaginação dos alunos para que eles vejam todas as possibilidades.

Utilizando ferramentas interativas como os jogos da série Portal™ para desenhar situações de física, lógica matemática, raciocínio espacial, probabilidade e resolvendo problemas de forma interessante, legal, e divertida que nos leva um passo mais perto de nossa meta, crianças pensativas! [2]


[1] http://store.steampowered.com/app/400/
[2] http://www.learningwithportals.com/

quinta-feira, 8 de setembro de 2011

Exercicios de C, Laços de Repetição

   1:  //1. Fazer um algoritmo que imprima todos os números pares no intervalo 1-100.
   2:  #include <stdio.h>
   3:  #include <stdlib.h>
   4:   
   5:  int main()
   6:  {
   7:      int i;
   8:      for(i=2; i<=100; i=i+2)
   9:     {
  10:          printf("%d\n",i);
  11:     }
  12:      return 0;
  13:  }




   1:  //2. Fazer um algoritmo que imprima todos os números de 100 até 1. 
   2:  #include <stdio.h>
   3:  #include <stdlib.h>
   4:   
   5:  int main()
   6:  {
   7:      int i;
   8:      for(i=100; i>=1; i--)
   9:     {
  10:          printf("%d\n",i);
  11:     }
  12:      return 0;
  13:  }





   1:  // Dada uma dívida de 10000 reais que cresce a juros de 2,5% ao mês e uma aplicação de 
   2:  //1500 reais com rendimento de 4% ao mês, escrever um algoritmo que determina o número 
   3:  //de meses necessários para pagar a dívida. 
   4:  #include <stdio.h>
   5:  #include <stdlib.h>
   6:   
   7:  int main()
   8:  {
   9:      float divida, juros, aplicacao, rendimento;
  10:      int meses;
  11:      meses = 0;
  12:      divida = 10000;
  13:      juros = 0.025;
  14:      aplicacao = 1500;
  15:      rendimento = 0.04;
  16:   
  17:      while (divida > aplicacao) {
  18:          divida = (divida * juros) + divida;
  19:          aplicacao = (aplicacao * rendimento) + aplicacao;
  20:          meses ++;
  21:      }
  22:      printf("Quantidade de meses para liquidar a divida e %d\n",meses);
  23:      printf("Sua divida esta em %f\n",divida);
  24:      printf("Sua aplicacao esta em %f\n", aplicacao);
  25:      return 0;
  26:  }





   1:  /* Fazer um programa para calcular e mostrar os N primeiros termos da série de Fibonacci. O 
   2:  número N é fornecido pelo usuário. A série de Fibonacci é gerada da seguinte forma: 
   3:   f1 = f2 = 1; 
   4:   f3 = f1 + f2 = 2; 
   5:   f4 = f2 + f3 = 3;.... 
   6:  O primeiro e segundo termos valem 1 e os seguintes são calculados somando os dois termos 
   7:  anteriores.*/
   8:  #include <stdio.h>
   9:  #include <stdlib.h>
  10:   
  11:  int main()
  12:  {
  13:      int fibo,conta=0,a=0,b=1,i;
  14:      printf("Entre com a quantidade de numeros de fibonacci que deseja criar\n");
  15:      scanf("%d",&fibo);
  16:   
  17:            for(i = 0; i < fibo; i++)
  18:             {
  19:                 conta = (a + b);
  20:                 printf("%d\n",conta);
  21:                 a = b;
  22:                 b = conta;
  23:              }
  24:      return 0;
  25:  }

sexta-feira, 26 de agosto de 2011

Standard ML

 

Estou aprendendo SML na aula de Linguagens de Programação, intao vou postando algumas coisas e exercicios sobre a linguagem

Página do projeto SML NJ (o copilador mais utilizado)

http://www.smlnj.org/

Wikipédia

Standard ML (SML) é uma linguagem de programação funcional de propósito geral modular com verificação e inferência de tipos em tempo de compilação. É popular entre pesquisadores de linguagem de programação e compiladores.

SML é um descendente moderno da ML (linguagem de programação) utilizado em lógica de funções computáveis (LCF). Distingue-se entre as linguagens utiliada devido sua característica funcional e devido sua especificação formal, dado como escrever regras e semântica operacional na definição da Standard ML

A Página do meu Professor Fernando (muito bom) tem mais informações sobre a materia e sobre o SML

http://homepages.dcc.ufmg.br/~fpereira/classes/dcc024/ementa/

Outros links em inglês

http://u.cs.biu.ac.il/~89-310/

 

alguns exercicios de SML

Escreva uma função cube, de tipo int -> int que retorne o cubo do seu parametro

fun cube x = x*x*x;

Escreva uma função cuber, de tipo real -> real que retorne o cubo de seu parametro.

fun cuber x:real = x*x*x;

Escreva a funcao fourth, de tipo 'a list -> 'a que retorne o quarto elemento da
lista passada como parametro. Nao se preocupe com a condicao de contorno em que a
lista de entrada possui menos que quatro elementos.

fun fourth a = hd(tl(tl(tl(a) )))

Exemplos de Codicionais em C

Todos os exercicios da Apostila de Algoritmos da UFJF Capitulo 3, Condicionais 1. Ler dois números inteiros e informar se o primeiro é maior, menor ou igual ao segundo. 1: */ exercicio 1 /*  
   2:  #include <stdio.h>
   3:  #include <stdlib.h>
   4:   
   5:  int main()
   6:  {
   7:      int a, b;
   8:   
   9:      printf("Entre com dois inteiros \n");
  10:      scanf("%d %d", &a, &b);
  11:   
  12:      if (a > b)
  13:   
  14:          printf("O primeiro e maior que o segundo. %d > %d", a , b);
  15:      else
  16:          if (a == b)
  17:              printf("O Primeiro e igual ao segundo. %d = %d", a, b);
  18:          else
  19:              printf("O Primeiro e menor que o segundo %d<%d", a, b);
  20:   
  21:      return 0;
  22:  }


2. Faça um programa para ler dois números inteiros, faça a divisão do primeiro pelo segundo (somente se o segundo for diferente de zero).
 
   1:  #include <stdio.h>
   2:  #include <stdlib.h>
   3:   
   4:  int main()
   5:  {
   6:      float a, b;
   7:   
   8:      printf("Entre com dois inteiros \n");
   9:      scanf("%f %f", &a, &b);
  10:   
  11:      if (b != 0)
  12:          printf("A divisao %f / %f = %f", a,b,a/b);
  13:      else
  14:          printf("Impossivel divisao por 0");
  15:   
  16:      return 0;
  17:  }
  18:   
  19:  //opção com números inteiros como pede o exercicio
  20:  /*
  21:  
  22:  #include <stdio.h>
  23:  #include <stdlib.h>
  24:  
  25:  int main()
  26:  {
  27:      int a, b;
  28:  
  29:      printf("Entre com dois inteiros \n");
  30:      scanf("%d %d", &a, &b);
  31:  
  32:      if (b != 0)
  33:          printf("A divisao %d / %d = %d", a,b,a/b);
  34:      else
  35:          printf("Impossivel divisao por 0");
  36:  
  37:      return 0;
  38:  }
  39:  */


3. Ler um número inteiro e informar se ele é divisível por 2.

   1:  #include <stdio.h>
   2:  #include <stdlib.h>
   3:   
   4:  int main()
   5:  {
   6:      int a;
   7:   
   8:      printf("Entre com um numero inteiro \n");
   9:      scanf("%d", &a);
  10:   
  11:      if ( a % 2 == 0 )
  12:          printf("O numero %d e par", a);
  13:      else
  14:          printf("O numero %d nao e par", a);
  15:   
  16:      return 0;
  17:  }




4. Altere o algoritmo anterior para que seja informado se o número é divisível por 2 e por 3 simultaneamente.

   1:  #include <stdio.h>
   2:  #include <stdlib.h>
   3:   
   4:  int main()
   5:  {
   6:      int a;
   7:   
   8:      printf("Entre com um numero inteiro \n");
   9:      scanf("%d", &a);
  10:   
  11:      if ( a % 2 == 0)
  12:      if (a % 3 == 0)
  13:      printf("O numero %d e divisivel por 2 e 3 ao mesmo tempo", a);
  14:          else
  15:      printf("O numero %d e par mais nao e divisivel por 3 ao mesmo tempo", a);
  16:      else
  17:          if (a % 3 == 0)
  18:              printf("O numero %d nao e par mais e divisivel por 3", a);
  19:          else
  20:              printf("O numero %d nao e par nem divisivel por 3", a);
  21:      return 0;
  22:  }



5. Altere o algoritmo anterior para que seja informado se o número é divisível por 2 e por 3, mas que não seja divisível por 5. 
 
   1:  #include <stdio.h>
   2:  #include <stdlib.h>
   3:   
   4:  int main()
   5:  {
   6:      int a;
   7:   
   8:      printf("Entre com um numero inteiro \n");
   9:      scanf("%d", &a);
  10:   
  11:      if ( a % 2 == 0)
  12:          if (a % 3 == 0)
  13:              if (a % 5 == 0)
  14:                  printf("O numero %d e divisivel por 2,3 e 5", a);
  15:              else
  16:                  printf("O numero %d e divisivel por 2 e 3 ao mesmo tempo e nao e divisivel por 5", a);
  17:          else
  18:              if (a % 5 == 0)
  19:                  printf("O numero %d e divisivel por 2 e 5 e nao e por 3", a);
  20:              else
  21:                  printf("O numero %d e divisivel por 3 e 5 e nao e por 2", a);
  22:      else
  23:          if (a % 5 == 0)
  24:              printf("O numero %d e divisivel por 5 e nao e por 2 e 3", a);
  25:          else
  26:              printf("O numero %d nao e divisivel por 2 e 3 ou 5", a);
  27:      return 0;
  28:  }




6. Faça um programa para ler dois números reais e verificar se ambos são maiores que zero. Caso positivo, informar “Valores são válidos”. Caso contrário, informar “Valores inválidos”. 
 
   1:  #include <stdio.h>
   2:  #include <stdlib.h>
   3:   
   4:  int main()
   5:  {
   6:      float a, b;
   7:   
   8:      printf("Entre com dois inteiros \n");
   9:      scanf("%f %f", &a, &b);
  10:   
  11:      if (a > 0 && b > 0)
  12:          printf("Valores são válidos");
  13:      else
  14:          printf("Valores inválidos");
  15:   
  16:   
  17:      return 0;
  18:  }
  19:   



7. Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um programa que calcule seu peso ideal, utilizando as seguintes fórmulas: para homens: (72.7*h)58 e para mulheres: (62.1*h)44.7 
   1:  #include <stdio.h>
   2:  #include <stdlib.h>
   3:   
   4:  int main()
   5:  {
   6:      int a;
   7:      float b,c;
   8:   
   9:      printf("Entre com o sexo 1.Masculino ou 2.Feminino \n");
  10:      scanf("%d", &a);
  11:      printf("Entre com sua altura no formato [1.86] \n");
  12:      scanf("%f", &b);
  13:   
  14:      switch (a)
  15:      {
  16:      case 1:
  17:          c=(72.7 * b) - 58;
  18:          printf("Seu peso ideal e: %f",c);
  19:          break;
  20:      case 2:
  21:          c=(62.1*b)-44.7;
  22:          printf("Seu peso ideal e: %f",c);
  23:          break;
  24:      default:
  25:          printf("Sexo invalido");
  26:      }
  27:   
  28:      return 0;
  29:  }
  30:   

8. Faça um programa que leia 3 comprimentos (x, y e z) e responda se eles formam um triângulo, ou seja, se  x < y + z e y < x + z e z < x + y. 
 
   1:   
   2:  #include <stdio.h>
   3:  #include <stdlib.h>
   4:   
   5:  int main()
   6:  {
   7:      int x,y,z;
   8:   
   9:      printf("Entre com tres valores inteiros \n");
  10:      scanf("%d %d %d", &x, &y, &z);
  11:   
  12:      if ((x < (y + z)) && (y < (x + z)) && (z < (x + y)))
  13:   
  14:          printf("Os valores %d, %d e %d formam um triangulo", x,y,z);
  15:      else
  16:          printf("Os valores %d, %d e %d NAO formam um triangulo", x,y,z);
  17:      return 0;
  18:  }
  19:   




   1:  /*
   2:  Desenvolver um algoritmo para ler o número do dia da semana e imprimir o seu respectivo
   3:  nome por extenso. Considerar o número 1 como domingo, 2 para segunda etc. Caso o dia
   4:  não exista (menor que 1 ou maior que 7), exibir a mensagem “Dia da semana inválido".
   5:  */
   6:  #include <stdio.h>
   7:  #include <stdlib.h>
   8:   
   9:  int main()
  10:  {
  11:      int a;
  12:      printf("Entre um valor de 1 a 7 \n");
  13:      scanf("%d", &a);
  14:      switch (a)
  15:      {
  16:      case 1:
  17:          printf("O dia 1 e Domingo");
  18:          break;
  19:      case 2:
  20:          printf("O dia 2 e Segunda");
  21:          break;
  22:      case 3:
  23:          printf("O dia 3 e Terca");
  24:          break;
  25:      case 4:
  26:          printf("O dia 4 e Quarta");
  27:          break;
  28:      case 5:
  29:          printf("O dia 5 e Quinta");
  30:          break;
  31:      case 6:
  32:          printf("O dia 6 e Sexta, Its Friday");
  33:          break;
  34:      case 7:
  35:          printf("O dia 7 e Sábado");
  36:          break;
  37:      default:
  38:          printf("Dia da semana inválido");
  39:      }
  40:   
  41:      return 0;
  42:  }
  43:   




   1:  /*
   2:  Fazer um algoritmo para ler dois números e um dos símbolos das operações: +,- * e /.
   3:  Imprimir o resultado da operação efetuada sobre os números lidos.
   4:  */
   5:  #include <stdio.h>
   6:  #include <stdlib.h>
   7:   
   8:  int main()
   9:  {
  10:      int a, b, operador;
  11:      float c;
  12:      printf("Entre dois valores \n");
  13:      scanf("%d %d", &a,&b);
  14:      printf("Entre com o Operador 1.+(soma) 2.-(subtracao) 3.*(multiplicacao) 4./ (divisao)");
  15:      scanf("%d",&operador);
  16:        switch (operador)
  17:      {
  18:      case 1:
  19:          printf("O resultado da soma de %d + %d = %d",a,b, a+b);
  20:          break;
  21:      case 2:
  22:          printf("O resultado da subtracao de %d - %d = %d",a,b, a-b);
  23:          break;
  24:      case 3:
  25:          printf("O resultado da multiplicacao de %d * %d = %d",a,b, a*b);
  26:          break;
  27:      case 4:
  28:          if (b == 0)
  29:          printf("Não existe divisão por 0");
  30:          else
  31:          c = (float)a/(float)b;
  32:          printf("O resultado da divisao de %d / %d = %f",a,b, c);
  33:          break;
  34:      default:
  35:          printf("Operador invalido");
  36:          break;
  37:      }
  38:   
  39:  return 0;
  40:  }
  41:   






   1:  /*
   2:  Os funcionários de uma empresa receberam um aumento de salário: técnicos (código = 1),
   3:  50%; gerentes (código = 2), 30%; demais funcionários (código = 3), 20%. Escrever um
   4:  algoritmo para ler o código do cargo de um funcionário e o valor do seu salário atual, calcular
   5:  e imprimir o novo salário após o aumento.
   6:  */
   7:  #include <stdio.h>
   8:  #include <stdlib.h>
   9:   
  10:  int main()
  11:  {
  12:      int b;
  13:      float a, c;
  14:      printf("Informe o valor atual do salario \n");
  15:      scanf("%f",&a);
  16:      printf("Entre com o codigo do funcionario \ntecnicos (codigo = 1) 50 por cento de aumento;\ngerentes (codigo = 2), 30 por cento de aumento;\ndemais funcionarios (codigo = 3), 20 por cento de aumento");
  17:      scanf("%d",&b);
  18:        switch (b)
  19:      {
  20:      case 1:
  21:          c = a + (a*0.50);
  22:          printf("Apos o aumento o novo salario do tecnico e %f ",c);
  23:          break;
  24:      case 2:
  25:          c = a + (a * 0.30);
  26:          printf("Apos o aumento o novo salario do gerente e %f ",c);
  27:          break;
  28:      case 3:
  29:          c = a + (a* 0.20);
  30:          printf("Apos o aumento o novo salario do funcionario e %f ",c);
  31:          break;
  32:      default:
  33:          printf("Funcionario invalido");
  34:          break;
  35:      }
  36:   
  37:  return 0;
  38:  }
  39:   




   1:  /*
   2:  Desenvolver um algoritmo para ler o valor inteiro da idade de uma pessoa e imprimir uma
   3:  das mensagens: se idade < 13: Criança, se 13 = idade < 20: Adolescente, se 20 = idade <
   4:  60: Adulto e se idade = 60: Idoso.
   5:  */
   6:  #include <stdio.h>
   7:  #include <stdlib.h>
   8:   
   9:  int main()
  10:  {
  11:     int a;
  12:     printf("Entre com a Idade\n");
  13:     scanf("%d",&a);
  14:     if (a < 13)
  15:     printf("Crianca");
  16:     else if (a < 20)
  17:          printf("Adolescente");
  18:          else if (a < 60)
  19:          printf("Adulto");
  20:              else
  21:              printf("Idoso");
  22:  return 0;
  23:  }
  24:   

quinta-feira, 25 de agosto de 2011

Imprimir o valor 2.346728
com 1, 2, 3 e 5 casas decimais



#include <stdio.h>

int main ()
{
         printf("Uma casa:  %.1f \n", 2.346728);
         printf("Duas casas:  %.2f \n", 2.346728);
         printf("Tres casas:  %.3f \n", 2.346728);
         printf("Cinco casas:  %.5f \n", 2.346728);
         return 0;
}

Ler uma temperatura em graus Celsius e apresentá-la convertida em graus Fahrenheit. A
fórmula de conversão: F ← (9*C+160)/5 


#include <stdio.h>
#include <math.h>

int main ()
{
    float c=0,f=0;
    printf ("Digite a temperatura em Graus Celsius:");
    scanf("%f",&c);
    f=(9 * c + 160) / 5;
    printf("A temperatura em Graus Fahrenheit e: %f \n",f);

    return 0;
}
Construir um algoritmo para ler 5 valores inteiros, calcular e imprimir a soma desses valores.


#include <stdio.h>
int main ()
{
    int n1,n2,n3,n4,n5,soma;
	printf("Digite cinco valores inteiros: ");
	scanf("%i",&n1);
	scanf("%i",&n2);
	scanf("%i",&n3);
	scanf("%i",&n4);
	scanf("%i",&n5);
	soma = n1 + n2 + n3 + n4 + n5;
	printf("\n%i + %i + %i + %i + %i = %i",n1,n2,n3,n4,n5,soma);
    return 0;
}