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 8

(1211 total de palavras neste texto)
(4229 vizualização(ões))   Imprimir




Exercícios

1) Faça um programa que leia 10 números inteiros, armazene-os em uma matriz unidimensional e inverta a ordem dos números na matriz, ou seja, o número que está na última posição troca de lugar com o que está na primeira; o que está na penúltima posição troca de lugar com o que está na segunda, e assim por diante, até trocar a posição de todos os elementos da matriz.

  #include <stdio.h>

  
  main()
  {
  	int mat[10];
  	int temp;
  	register int i;		/* para controlar os laços */
  	
  	for (i=0; i<10; i++)     /* laço para leitura */
  	{
  		printf("Digite um número inteiro: ");
  		scanf("%d", &mat[i]);
  	}
  	
  	for (i=0; i<5; i++)	/* faça o teste de mesa e entenda o porquê de i ir até 5 */
  	{
  		temp= mat[i];		/* aquela... */
  		mat[i]= mat[9-i];	/* ... troca... */
  		mat[9-i]= temp;		/* ... básica! */
  	}
  	
  	for (i=0; i<10; i++)
  		printf("%d ", mat[i]);	/* imprimindo... */
  	
  	return 0;
  }

2) Faça um programa que leia 5 números, armazene-os em uma matriz unidimensional e os coloque em ordem. Os menores números devem vir primeiro na matriz e os maiores por último.

  /* ************************************************************** *
     Pessoal, este tipo de ordenação é conhecido como bubble sort, 
     ou ordenação bolha. Este é o tipo mais simples e ineficiente 
     de ordenação, mas é lógico que para pequenas proporções esta
     ordenação é mais que adequada. 
   * ************************************************************* */
  #include <stdio.h>
  	
  #define MAX 	 5	
  
  main()
  {
  	int i, j, temp;
  	int mat[MAX];
  	
  	for (i=0; i<MAX; i++)
  	{
  		printf("Digite um número: ");
  		scanf("%d", &mat[i]);
  	}
  	
  	for (i=0; i < MAX-1; i++)
  		for (j=i+1; j<MAX; j++)
  		{
  			if (mat[i] > mat[j])   /* se mat[i] for maior que mat[j]... */
  			{
  				temp= mat[i];		/* faz... */
  				mat[i]= mat[j];		/* ...a... */
  				mat[j]= temp;		/* ...troca. */
  			}
  		}
  	
  	for (i=0; i<MAX; i++)
  		printf("%d ", mat[i]);
  	
  	return 0;
  }

3) Faça um programa que leia uma matriz 3 x 3 e a multiplique por um escalar (um número inteiro). O resultado é uma matriz, onde cada elemento desta nova matriz é o produto do escalar com o elemento correspondente da matriz lida.

  #include <stdio.h>
  
  main()
  {
  	int mat[3][3], resp[3][3];
  	int escalar, i, j;
  	
  	printf("Leitura da Matriz:\n"); 
  	for (i=0; i<3; i++)
  		for (j=0; j<3; j++)
  		{
  			printf("[%d, %d]= ", i, j);
  			scanf("%d", &mat[i][j]);
  		}
  		
  	printf("Digite o escalar: ");
  	scanf("%d", &escalar);
  	
  	printf("Matriz Resultado:\n");
  	for (i=0; i<3; i++)
  	{
  		for (j=0; j<3; j++)
  		{
  			resp[i][j]= mat[i][j] * escalar;
  			printf("%d  ", resp[i][j]);
  		}
  		printf("\n");		
  	}
  	
  	return 0;
  }

4) Faça um programa que leia duas matrizes 2 x 2 e as multiplique, armazenando o resultado em uma terceira.

  #include <stdio.h>
  
  /* Sempre é bom usar defines para números constantes. Assim, se
     quiser mudar a matriz para 3x3, basta mudar MAX para 3 */
  
  #define MAX	2
  
  main()
  {
  	int m1[MAX][MAX], m2[MAX][MAX], resp[MAX][MAX]; 
  	int i, j, k;
  	
  	printf("*** Multiplicação de Matrizes 2x2 ***
");
  	printf("Leitura da matriz m1:
");
  	for (i=0; i<MAX; i++)
  		for (j=0; j<MAX; j++)
  		{
  			printf("m1[%d,%d]= ", i, j);
  			scanf("%d", &m1[i][j]);
  			getchar();
  		}
  	
  	printf("Leitura da matriz m2:
");
  	for (i=0; i<MAX; i++)
  		for (j=0; j<MAXC; j++)
  		{
  			printf("m2[%d,%d]= ", i, j);
  			scanf("%d", &m2[i][j]);
  			getchar();
  		}
  	
  	/* agora, a multiplicação das matrizes */
  	for (i=0; i<MAX; i++)
  		for (j=0; j<MAX; j++)
  		{
  			resp[i][j]= 0;
  			for (k=0; k<MAX; k++)
  				resp[i][j]= m1[i][k] * m2[k][j] + resp[i][j];
  		}
  	
  	printf("Resultado:
");
  	for (i=0; i<MAX; i++)
  	{
  		for (j=0; j<MAX; j++)
  			printf("%d  ", resp[i][j]);
  		printf("
");
  	}
  	
  	return 0;
  }

5) Faça um programa que leia uma string e a inverta, imprimindo na tela a string invertida.

  #include <stdio.h>
  #include <string.h>
  
  
  main()
  {
  	char str[21], invert[21];
  	register int i;
  	
  	printf("Digite uma palavra qualquer (máx. 20 caracteres): ");
  	fgets(str, 20, stdin);
  	
  	for (i=strlen(str)-1; i>=0; i--)	/* imprimindo de trás para frente */
  		putchar(str[i]);
  	printf("\n");
  	
  	return 0;
  }

6) Crie um jogo de forca rudimentar, onde um jogador digita a palavra secreta e o outro tenta adivinhar, através de "chutes" de caracteres.

  /* 
  Pessoal, neste jogo de forca rudimentar, o que importa é a lógica. Não é para se preocupar, por enquanto, 
  em limpar a tela, desenhar a forca, etc. Basta ler a palavra secreta, ler os chutes do usuário (caractere 
  por caractere) e determinar se ele acertou. Quando ele acertar, imprima o caractere na posição em que ele 
  se encontra na palavra. O número de erros para enforcar você pode definir (geralmente são 6 erros). 
  Quando acertar todos os caracteres, imprima a palavra, dê os parabéns para o jogador e saia do programa. 
  */
  
  #include <stdio.h>
  #include <string.h>
  
  main()
  {
  	char secreta[21], aux[21];
  	char msg[15]= "Boa sorte!";
  	register int i, erros=0, acertos=0, tam, flag=0;
  	char ch;
  	
  	printf("Digite a palavra secreta: ");
  	fgets(secreta, 20, stdin);
  	
  	tam= strlen(secreta)-1;		/* esse -1 é culpa do fgets... */
  	
  	/* esse laço serve para rolar a tela */
  	for (i=0; i<26; i++)
  		printf("\n");		
  		
  	for (i=0; i<tam; i++)
  		aux[i]= '_';	
  	printf("Agora, tente adivinhar!\n");
  	
  	/* laço principal do jogo */
  	while ((erros < 6) && (acertos < tam))
  	{
  		for (i=0; i<tam; i++)
  			printf("%c ", aux[i]);
  		printf("\n");
  		printf("%s erros: %d, acertos: %d\n", msg, erros, acertos);
  		printf("Digite um caractere: ");
  		ch= getchar();
  		getchar();
  		for (i=0; i<tam; i++)
  		{
  			if (aux[i] == ch)
  			{
  				strcpy(msg,"Já digitado!");
  				flag= 1;
  				continue;
  			}
  				
  			if (secreta[i] == ch)
  			{
  				aux[i]= ch;
  				if (flag==0)
  					acertos++;
  				strcpy(msg,"Acertou!");
  				flag= 1;
  			}
  		}
  		if (flag==0)
  		{
  			strcpy(msg,"Errou!");
  			erros++;
  		}
  		else
  			flag= 0;
  		/* esse laço serve para rolar a tela */
  		for (i=0; i<26; i++)
  			printf("\n");
  	}
  	if (erros < 6)
  		printf("Parabéns!!! Palavra secreta: %s\n", secreta);
  	else
  		printf("Você foi enforcado! Palavra secreta: %s\n", secreta);
  	
  	return 0;
  }

É isso aí galera!

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