Exercícios

Share

Exercícios resolvidos durante as aulas de Algoritmos e Estrutura de Dados. As respostas estão na linguagem C. Realize o acompanhamento dos algoritmos previamente e compare com o resultado da execução.

Exercícios 21/09/2009

Construa um algoritmo que defina duas variáveis A e B inteiras e:

  1. Atribua a A o valor 10;
  2. Atribua a B o valor 5;
  3. Acumule 5 ao valor de A;
  4. Multiplique o valor de B por 3;
  5. Some o valor de B em A;
#include <stdio.h>
int main () {
   int A,B;
   A=10;
   B=5;
   A=A+5;
   B=3*B;
   A=A+B;
   printf ("A: %i B: %i\n",A,B);
}

Construa um algoritmo que defina duas variáveis A e B inteiras e:

  1. Atribua a A o valor 7;
  2. Atribua a B o valor 3;
  3. Calcule a soma de A e B;
  4. Imprima os valores de A, B e do cálculo da soma.
#include <stdio.h>
int main() {
	int A, B;
	A=7;
	B=3;
	int S;
	S=A+B;
	printf("A: %i B:%i Soma=%i\n",A,B,S);
}

Construa um algoritmo que defina duas variáveis C e D inteiras e:

  1. Atribua a C o valor 8;
  2. Atribua a D o valor 2;
  3. Calcule e imprima a diferença entre C e D;
  4. Calcule e imprima a soma de C com D.
#include <stdio.h>
int main () {
   int C, D;
   C=8;
   D=2;
   int soma, diferenca;
   soma=C+D;
   diferenca=C-D;
   printf("C+D: %i\n", soma);
   printf("C-D: %i\n", diferenca);
}

Exercícios 22/09/2009

Construa um algoritmo que leia três números inteiros e os guarde nas variáveis A, B e C. Em seguida:

  • Imprima A,B,C;
  • Imprima a soma dos três números;
  • Imprima A*B;
  • Imprima A/B;
  • Imprima A/C;
  • imprima A%B e A%C.
#include <stdio.h>
int main () { 
	int A, B, C;
 
	printf("Digite três valores inteiros para A B e C: ");
	scanf("%d %d %d",&A, &B, &C);
	printf("A:%d B:%d C:%d\n", A,B,C);
	printf("A soma é: %d\n", A+B);
	printf("A multiplicação entre A e B é: %d\n", A*B);
	printf("A divisão entre A e B é: %d\n", A/B);
	printf("A divisão entre A e C é: %d\n", A/C);
	printf("O resto da divisão entre A e B é : %d\n", A%B);
	printf("O resto da divisão entre A e C é : %d\n", A%C);
}

Construa um algoritmo que leia três números reais e os guarde nas variáveis A, B e C. Em seguida:

  • Imprima A, B, C;
  • Imprima a soma dos três números;
  • Imprima A*B;
  • Imprima A/B;
  • Imprima A/C;
#include <stdio.h>
int main () { 
	float A, B, C;
 
	printf("Digite três valores inteiros para A B e C: ");
	scanf("%f %f %d",&A, &B, &C);
	printf("A:%f B:%f C:%f\n", A,B,C);
	printf("A soma é: %f\n", A+B);
	printf("A multiplicação entre A e B é: %f\n", A*B);
	printf("A divisão entre A e B é: %f\n", A/B);
	printf("A divisão entre A e C é: %f\n", A/C);
	printf("O resto da divisão entre A e B é : %f\n", A%B);
	printf("O resto da divisão entre A e C é : %f\n", A%C);
}

Exercícios (aula extra)23/09/2009

Construa um algoritmo que leia três variáveis A, B, C. Imprima o valor as variáveis A, B e C e:

  1. Imprima a diferença de A por B multiplicado C;
  2. Imprima a soma de A*B e A*C;
  3. Imprima o produto dos resultados de A+B e A-C;

Neste exercício, use como teste uma entrada de dados 10 5 3 para realizar o acompanhamento dos valores impressos. Em seguida compile e execute o programa para comparar os resultados.

int main(){
   int A, B, C;
   scanf("%d %d %d", &A, &B, &C);
   printf("%d\n", A-B*C); //ERRADO
   printf("%d\n", A*B+A*C);
   printf("%d\n", A+B*A-C); //ERRADO
}

Evite depender da precedência de operadores! Utilize parênteses!

int main(){
   int A, B, C;
   scanf("%d %d %d", &A, &B, &C);
   printf("%d\n", (A-B)*C); 
   printf("%d\n", (A*B)+(A*C) );
   printf("%d\n", (A+B)*(A-C) );
}

Exercícios (aula extra) 25/09/2009

Construa um algoritmo que leia um total de vendas de um vendedor. Um vendedor recebe um salário base de R$ 300 e mais 10% sobre suas vendas.

  • Imprima o ganho por vendas, o salário base e o total recebido;
  • Imprima um “Alerta!” caso o ganho por vendas seja menor que o salário base.
  • Se os ganhos por vendas forem maiores que duas vezes o salário base o vendedor ganha um bônus de R$ 200.
#include <stdio.h>
int main (){
	const float salario = 300.0;
	const float bonus = 200.0;
	const float percentual=10.0/100.0;
	float vendas, ganho, salarioTotal;
 
	printf("Digite o total de vendas do vendedor: ");
	scanf("%f", &vendas);
	ganho = percentual*vendas;
	printf("Ganho por vendas: R$%.2f\n", ganho);
	printf("Salário base: R$%.2f\n", salario);
	salarioTotal=salario+ganho;	
	printf("Salário total: R$%.2f\n", salarioTotal);	
	if( ganho<salario ){
		printf("Alerta! Vendas muito baixas!\n");
	}
	if( ganho>(2*salario) ){
		printf("Boas vendas: bônus de R$%.2f\n", bonus);
		salarioTotal = salarioTotal + bonus;
		printf("Salário total é de R$%.2f\n", salarioTotal);	
	}
}

Exercício 28/09/2009

Construa um algoritmo que leia um código e o total de vendas de dois funcionários F1 e F2. Em seguida, imprima o código e total de vendas do funcionário que vendeu mais.

#include <stdio.h>
int main(){
   int codigoF1, codigoF2;
   float vendasF1, vendasF2;
   printf ("\nDigite o código do funcionário: ");
   scanf ("%d", &codigoF1);
   printf("\nDigite o total de vendas: ");
   scanf("%f", &vendasF1);
   printf ("\nDigite o código do funcionário: ");
   scanf ("%d", &codigoF2);
   printf("\nDigite o total de vendas: ");
   scanf("%f", &vendasF2);
   if (vendasF1>vendasF2){
      printf("O funcionário %d vendeu mais!\n", codigoF1);
      printf("O seu valor foi: %.2f\n", vendasF1);
   }
   else {
      if (vendasF1<vendasF2){
         printf("O funcionário %d vendeu mais!\n", codigoF2);
         printf("O seu valor foi: %.2f\n", vendasF2);
      }
      else {
         printf("Os dois funcionários venderam a mesma quantidade!\n");
      }
   }
}

Vimos também como usar um arquivo texto para guardar a entrada padrão. Por exemplo, um arquivo entrada.txt pode ser passado como entrada para um programa no linux em uma das seguintes formas:

cat entrada.txt | ./programa
./programa < entrada.txt

E no comando do Windows/DOS da seguinte forma:

type entrada.txt | programa

Exercícios de matriz 24/11 a 03/11/2009

Construa um algoritmo que crie uma matriz 3×4 com os seguintes valores

1  2  3  4
5  6  7  8
9 10 11 12

Imprima a matriz

#include <stdio.h>
int main (){
	int m[3][4]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
	int l, c;
	for (l=0; l<3; l++){
		for (c=0; c<4; c++){
			printf ("%d\t", m[l][c]);
		}
		printf ("\n");
	}	
}

Construa um algoritmo que leia uma matriz 3×2 pelo teclado.
Imprima a matriz.

#include <stdio.h>
int main (){
	int m[3][2];
	int l, c;
	for (l=0; l<3; l++){
		for (c=0; c<2; c++){
			scanf ("%d", &m[l][c]);
		}
	}
	for (l=0; l<3; l++){
		for (c=0; c<2; c++){
			printf ("%3d ", m[l][c]);
		}
	printf ("\n");
	}
}

Construa um algoritmo que leia uma matriz 8×8 pelo teclado.
Imprima os índices dos valores maiores que 10.

#include <stdio.h>
int main (){
	int m[8][8];
	int l, c;
	for (l=0; l<8; l++){
		for (c=0; c<8; c++){
			scanf ("%d", &m[l][c]);
		}
	}
 
	for (l=0; l<8; l++){
		for (c=0; c<8; c++){
			if (m[l][c]>10){
				printf ("%d,%d\n", l, c);
			}
		}
	}	
}

Construa um algoritmo que leia uma matriz 5×5 pelo teclado.
Imprima a matriz. Dobre os valores da diagonal principal e imprima a matriz novamente.

#include <stdio.h>
int main (){
	int m[5][5];
	int l, c;
	for (l=0; l<5; l++){
		for (c=0; c<5; c++){
			scanf ("%d", &m[l][c]);
		}
	}
 
	for (l=0; l<5; l++){
		for (c=0; c<5; c++){
			if (l==c){
				m[l][c]=m[l][c]*2;
			}
			printf ("%2d ", m[l][c]);
		}
		printf ("\n");
	}	
}

Alternativamente:

#include <stdio.h>
int main (){
	int m[5][5];
	int l, c;
	for (l=0; l<5; l++){
		for (c=0; c<5; c++){
			scanf ("%d", &m[l][c]);
		}
	}
 
	for (l=0; l<5; l++){
		m[l][l]=m[l][l]*2;
	}
 
	for (l=0; l<5; l++){
		for (c=0; c<5; c++){
			printf ("%d\t", m[l][c]);
		}
		printf ("\n");
	}
}
Share

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*