Códigos em C: Matrizes, Funções e Lógica
Classificado em Design e Engenharia
Escrito em em
português com um tamanho de 10,46 KB
Algoritmos e Estruturas em Linguagem C
1. Manipulação de Matrizes com Números Pares e Primos
#include <stdio.h>
#include <string.h>
int Par(int a){
return a % 2;
}
int Primo(int a){
int divs, // Variável para armazenar a quantidade de divisores de um número
i; // Contador
divs = 0;
for(i = 2; i <= a/2; i++) {
if (a % i == 0){
divs++;
break;
}
}
return divs;
}
int main(){
int mat[2][5], // Variável para armazenar a matriz
num, // Armazena temporariamente o valor lido
i, j; // Contadores
// Recebimento da matriz
i = 0;
while(i < 2){
j = 0;
while(j < 5){
printf("Matriz[%d][%d]: ", i, j);
scanf("%d", &num);
if(i == 0){
if(Par(num) == 0){
mat[i][j] = num;
j++;
}else{
printf("Esta linha da matriz somente pode receber números pares\n");
}
}else{
if(Primo(num) == 0){
mat[i][j] = num;
j++;
}else{
printf("Esta linha da matriz somente pode receber números primos\n");
}
}
}
i++;
}
// Impressão da matriz
for(i = 0; i < 2; i++){
printf("\n");
for(j = 0; j < 5; j++){
printf("%d ", mat[i][j]);
}
}
}
2. Validação de Intervalos e Contagem de Caracteres
#include <stdio.h>
#include <stdlib.h>
int isIntervalo(int n, int a, int b){
if(n >= a && n <= b)
return 1;
else
return 0;
}
int main(){
struct Quantidades{
int letraMin; // Variável para armazenar a quantidade de letras minúsculas
int letraMai; // Variável para armazenar a quantidade de letras maiúsculas
int naoLetra; // Variável para armazenar a quantidade de não letras
}q;
int num; // Variável para receber os números
q.letraMin = q.letraMai = q.naoLetra = 0; // Zera as quantidades
for(;;){
// Recebimento do número
printf("Digite um número: ");
scanf("%d", &num);
// Ao receber um número negativo
if (num < 0){
// Impressão das quantidades
printf("\nLetras Maiúsculas: %d", q.letraMai);
printf("\nLetras Minúsculas: %d", q.letraMin);
printf("\nNão Letras : %d", q.naoLetra);
break;
}else{
// Letra Maiúscula
if(isIntervalo(num, 'A', 'Z') == 1){
printf("Letra digitada: %c\n", num);
q.letraMai++;
}else{
// Letra Minúscula
if(isIntervalo(num, 'a', 'z') == 1){
printf("Letra digitada: %c\n", num);
q.letraMin++;
}else{
// Não Letra
printf("Não é uma letra\n");
q.naoLetra++;
}
}
}
}
}
3. Jogo Pedra, Papel e Tesoura
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
struct Quantidades{
int vitoria; // Variável para armazenar a quantidade de vitórias
int derrota; // Variável para armazenar a quantidade de derrotas
int empate; // Variável para armazenar a quantidade de empates
}q;
int opcaoUsr, // Variável para armazenar a opção escolhida
opcaoComp, // Variável para armazenar o número gerado aleatoriamente
i; // Contador
// Evita que gere o mesmo número aleatório
srand(time(0));
q.vitoria = q.derrota = q.empate = 0; // Zera as quantidades
for(;;){
// Recebimento da opção
printf("Digite a opção 0 (Papel), 1 (Pedra), 2 (Tesoura) ou 3 (sair): ");
scanf("%d", &opcaoUsr);
if ((opcaoUsr == 0) || (opcaoUsr == 1) || (opcaoUsr == 2)){
// Impressão da opção do usuário
switch(opcaoUsr){
case 0 : printf("\nUsuário escolheu: Papel");
break;
case 1 : printf("\nUsuário escolheu: Pedra");
break;
case 2 : printf("\nUsuário escolheu: Tesoura");
break;
}
// Geração e Impressão da opção do Computador
opcaoComp = rand() % (2 + 1);
switch(opcaoComp){
case 0 : printf("\nComputador escolheu: Papel");
break;
case 1 : printf("\nComputador escolheu: Pedra");
break;
case 2 : printf("\nComputador escolheu: Tesoura");
break;
}
// Verificar resultado da partida
if (opcaoUsr == opcaoComp){
printf("\nPartida empatada.\n\n");
q.empate++;
}else{
switch(opcaoUsr){
case 0 : if (opcaoComp == 1){
printf("\nUsuário Venceu\n\n");
q.vitoria++;
}else{
printf("\nComputador Venceu\n\n");
q.derrota++;
}
break;
case 1 : if (opcaoComp == 2){
printf("\nUsuário Venceu\n\n");
q.vitoria++;
}else{
printf("\nComputador Venceu\n\n");
q.derrota++;
}
break;
case 2 : if (opcaoComp == 0){
printf("\nUsuário Venceu\n\n");
q.vitoria++;
}else{
printf("\nComputador Venceu\n\n");
q.derrota++;
}
break;
}
}
}else
break;
}
// Impressão da quantidade de partidas, vitórias e derrotas
printf("\nPartidas: %d", q.vitoria + q.derrota + q.empate);
printf("\nVitórias: %d", q.vitoria);
printf("\nDerrotas: %d", q.derrota);
printf("\nEmpates : %d", q.empate);
}
#include <stdio.h>
#include <stdlib.h>
4. Encontrando o Maior Elemento com Recursividade
int max(int a, int b){
if(a >= b){
return a;
}else{
return b;
}
}
int maior(int v[10], int n){
if(n == 0){
return v[n];
}else{
return max(v[n], maior(v, n-1));
}
}
int main(){
int vet[10], // Variável para armazenar 10 inteiros
i; // Contador
// Preenchimento do vetor
for(i = 0; i < 10; i++){
printf("%dº número: ", i + 1);
scanf("%d", &vet[i]);
}
// Imprime o maior elemento do vetor
printf("\nO maior elemento do vetor é: %d", maior(vet, 9));
}