VOLPITI - Tecnologia da Informação
 
Busca
Tópicos
  Cadastre-se :: Hospedagem LinuxDicas :: Acessórios LinuxDicas :: Fórum LinuxDicas   

Usuários LinuxDicas
· AvantGO
· Backend XML (RSS)
· Contato/Publicidade
· Enviar Notícias/Artigos
· Fórum LinuxDicas
· Lista de Discussão
· Mensagens Privadas

Casa do Linux


Lista de Discussão
·[linuxdicas] quetão de linux
·Ferramenta de Backup
·redes
·Search Engine

Leia mais...

Artigos LinuxDicas
· Resistência ao Linux
· Guia para o Novato
· Licenciamento do SuSE
· Foca GNU/Linux - Iniciante
· Foca GNU/Linux - Intermediário
· Foca GNU/Linux - Avançadoe
· Curso C
· Outras Seções de Artigos

FAQ LinuxDicas
· Licença
· Servidores
· Ambiente X
· Hardware
· Instalação
· Internet
· Aplicativos
· Sistema
· StarOffice

Notícias Velhas
Segunda, abril 21
· MON - Monitorando a disponibilidade de serviços
Quinta, abril 17
· Últimos dias para Inscrições de Palestras no Flisol Campinas
· Acessando seus arquivos de sua máquina de qualquer computador do mundo
Terça, abril 15
· Artigo sobre o Moregroupware
Segunda, abril 14
· Análise do Mandriva Xtreme2 Pack
Terça, março 18
· Como migrar dados do msaccess para mysql
· A verdadeira razão para usarmos Linux
· usando o rsync 3.0.0 para fazer backup entre linux e xp
· Firefox3 : Como Instalar manualmente.
Sábado, fevereiro 09
· Configurando um DNS CHROOTED Primário e Reverso para o seu site.
Quinta, dezembro 27
· Censurando a internet com o OpenDNS
Domingo, outubro 14
· Bandwidth Monitoring Tools For Linux
Quinta, outubro 11
· Variáveis de ambiente
Quinta, agosto 02
· Rodando processos em múltiplos servidores, Cluster!!!
· Instalando XEN no seu Ubuntu/Debian
Domingo, junho 17
· Vovó, faz backup pra mim?
Quarta, junho 13
· Canetas: Idealismo Antártico
Quinta, junho 07
· CA confiável com certificados digitais
Domingo, junho 03
· Equações Matemáticas via Shell
Sábado, junho 02
· Permanent Link to Garimpar é preciso [2]: Confira seu e-mail

Notícias antigas

Versões Estáveis
· Kernel Linux
· *nix e *BSD ISOs da Unicamp
· Linux ISO
· FreeBSD Releases

Correção dos Exercícios - Aula 7

(1235 total de palavras neste texto)
(4057 vizualização(ões))   Imprimir




Correção Exercícios - Aula 7

1) Faça um programa que imprima o maior e o menor número de uma sequência de 10 números lidos do teclado.

  #include <stdio.h>

/* Faça um teste de mesa deste programa em um papel e entenda você mesmo.
As variáveis maior e menor são inicializadas com o menor inteiro possível e o
maior inteiro possível, respectivamente.
*/

main()
{
int num, maior= -32767, menor= 32767;
register int i; /* olha o register aí... Você lembra pra que serve ? */

for (i=0; i<10; i++)
{
printf("Digite um número inteiro: ");
scanf("%d", &num);
getchar();
if (num >= maior)
maior= num;
if (num <= menor)
menor= num;
}
printf("Maior número: %d\n", maior);
printf("Menor número: %d\n", menor);

return 0;
}

2) Faça um programa que leia as seguintes informações de 50 vacas: seu nome, seu peso, sua idade e a quantidade de litros de leite que cada uma dá por dia. Imprima o nome da vaca mais velha e da vaca que mais produz leite.

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

main()
{
char nome[15], maisvelha[15], maisleite[15];
float peso= 0;
int idade= 0, velha= 0, flag= 0, litros, mais= 0;
register int i; /* vamos usar uma variável register para controlar o laço. */

for (i=0; i<50; i++)
{
do
{
printf("Digite o nome da vaca: ");
fgets(nome, 14, stdin);
printf("Digite o peso da %s: ", nome);
scanf("%f", &peso); getchar();
printf("Digite a idade da %s: ", nome);
scanf("%d", &idade); getchar();
printf("Digite a produção diária, em litros, da %s: ", nome);
scanf("%d", &litros);

if ((peso <= 0) || (idade <= 0) || (litros <= 0))
{
printf("Tem certeza que a %s é deste mundo?? Redigite os dados...\n", nome);
flag= 1;
}
} while(flag==1); /* barra os engraçadinhos... */

/* Se o cara digitou informações válidas, avante... */
if (idade > velha)
{
strcpy(maisvelha, nome); /* armazena nome da mais velha encontrada até este instante */
velha= idade;
}
if (litros > mais)
{
strcpy(maisleite, nome);
mais= litros;
}
}

printf("Vaca mais velha: %s. Sua idade é: %d anos\n", maisvelha, velha);
printf("Vaca mais produtiva: %s. Sua produção é: %d litros/dia\n", maisleite, mais);

return 0;
}


OBS: Usamos a função strcpy() para copiar uma string em outra, já que a atribuição não funciona em strings. Se você não conseguiu fazer
por causa disso, não se preocupe... mas, fala sério, você poderia ter pesquisado para saber como fazer... Agora, se você pesquisou e
conseguiu fazer, parabéns!!

3) Faça um programa que leia um número e calcule o seu fatorial, lembrando que o fatorial de um número é: número * fatorial(número-1). Por
exemplo, fatorial de 5: 5*4*3*2*1= 120; fatorial de 1: 1; fatorial de 0: 1.
#include <stdio.h>

main()
{
int num, aux, fat= 1;

printf("Digite um número inteiro: ");
scanf("%d", &num); getchar();

aux= num;
if (aux > 0)
{

while (aux > 1)
{

fat= fat*aux;
aux--;

}

}

printf("Fatorial de %d: %d\n", num, fat);
return 0;

OBS: Existem mil e um jeitos de se calcular fatorial... Invente um! (isto não é comercial do Neston...). Quem conseguiu fazer de outra forma, poste no fórum... quanto mais exemplos, melhor.

4) Faça um programa que dados leia 10 caracteres e conte quantos caracteres 'a' aparecem (somente minúsculo).

  #include <stdio.h>

/* esse é melzinho na chupeta... */
main()
{
char ch;
int cont_a= 0, cont= 0; /* é importante sempre inicializar o contador */

while (cont < 10) /* condição de parada do laço */
{
cont++; /* contador de controle do laço */
printf("%d: Digite um caractere: ", cont);
scanf("%c", &ch); getchar();

if (ch == 'a') /* se for o 'a', conta. */
cont_a++; /* contador de caracteres 'a' */
}
printf("O caractere 'a' aparece %d vezes.\n", cont_a);
return 0;
}

5) Faça um programa que imprima a sequência de Fibonacci: 0 1 1 2 3 5 8 13 21 31 ... Como você pode ver, cada número é a soma dos dois números anteriores. O programa primeiro vai ler um número, que será a quantidade de iterações do laço.

  #include <stdio.h>

main()
{
int i, n;
long a=0, b=1, aux;

printf("Digite o número de iterações: ");
scanf("%d", &n);

for (i=1; i<=n; i++)
{
aux= a;
a= b;
b= aux + a;
printf("%ld ", aux);
}
return 0;
}


Pessoal, façam o teste de mesa dos exercícios para poderem entender melhor o funcionamento dos algoritmos. Para quem não sabe, teste de mesa é colocar todas as variáveis no papel e simular a execução do programa, atualizando o valor das variáveis a cada passo. Por exemplo, no exercício 5, supondo-se que o usuário tenha digitado 5, a execução seria:

Iteração a b aux i n
- 0 1 - 1 5
1 1 1 0 2 5
2 1 2 1 3 5
3 2 3 1 4 5
4 3 5 2 5 5
5 5 8 3 6 5

A primeira linha da tabela é das inicializações. Veja que Iteração é '-' e aux também. As próximas linhas são as iterações. Faça as contas na mão e vá colocando os valores, para várias entradas diferentes. Você entenderá melhor o funcionamento dos algoritmos.

Falow!

bragil

  

[ Voltar Curso C | Índice de Seções ]


Copyright © 2002 - 2007 LinuxDicas - Todos Os Direitos Reservados.
LinuxDicas: lucas.martinez @linuxdicas.com.br
Web site engine's code is Copyright © 2003 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Tempo para gerar esta página: 0.043 segundos.