You are on page 1of 10

Questão 1/5 Estrutura de Dados

Usando a linguagem de programação C/C++ escreva um programa que calcule o fatorial de


um número inteiro digitado pelo usuário. Para que você consiga completar esta tarefa, o
programa terá que ter pelo menos uma função.

---------------------------------------------------------------------------------------

#include "stdio.h"
#include "stdlib.h"

int Fatorial(int num) {


int fat;
if (num == 1)
fat = 1;
else
fat = Fatorial(num - 1) * num;

return fat;
}

int main()
{
int num;

printf("Digite um numero inteiro qualquer: ");


scanf_s("%d", &num);

printf("\nO fatorial de %d eh igual a: %d \n\n", num, Fatorial(num));

system("pause");
return 0;
}

----------------------------------------------------------------------------------------
Questão 2/5 Estrutura de Dados

Utilizando a linguagem de programação C/C++ você deve criar um programa capaz de


armazenar um número indefinido de inteiros na memória. Este programa deverá solicitar ao
usuário o tamanho do vetor que armazenará este número, criar as estruturas necessárias,
solicitar ao usuário que digite cada um dos números que serão armazenados e imprimir o
conjunto de números armazenados e a soma destes números.

----------------------------------------------------------------------------------------

#include "stdio.h"
#include "stdlib.h"

int main()
{
int *arr;
int limite, soma = 0;

printf("Digite a quantidade de numeros inteiros que gostaria de armazenar: ");


scanf_s("%d", &limite);

//Alocar memoria
arr = (int *)malloc(limite * sizeof (int));

//Verificar se nao excede a memoria total


if (arr == NULL) {
printf("Memoria insuficiente para armazenar esta quantidade de numeros
inteiros!\n\n");
system("pause");
return 0;
}

printf("Digite %d numeros inteiros: \n", limite);


for (int i = 0; i < limite; i++) {
printf("Digite o %d numero: ", i+1);
scanf_s("%d", (arr + i));
soma += *(arr + i);
}
printf("\nNumeros digitados: \n");
for (int i = 0; i < limite; i++) {
printf("%d ", *(arr + i));
}

printf("\n\nSoma dos numeros digitados: %d\n\n", soma);

system("pause");
return 0;
}

----------------------------------------------------------------------------------------
Questão 3/5 Estrutura de Dados

Utilizando a linguagem de programação C/C++ crie um programa que utilize a estrutura de


dados
conhecida como fila para armazenar até 50 inteiros que use como elemento de
armazenamento um
vetor (array).Observe que seu programa deverá possuir pelo menos três funções do tipo
void
chamadas de inserir, apagar e mostrar e que o usuário dever ter acesso a um menu de
opções que
permita a inclusão, exclusão e apresentação dos valores contidos armazenados nesta fila.
Cabe ao programador a responsabilidade de avisar ao usuário erros comuns como fila cheia
e vazia.

----------------------------------------------------------------------------------------

#include "stdio.h"
#include "stdlib.h"

#define MAX 50

int fila[MAX];
int fim = -1;

void Inserir() {
int num;
if (fim == MAX - 1)
printf("\nA fila esta cheia!!\n\n");
else {
printf("\nDigite um numero a ser inserido na fila: ");
scanf_s("%d", &num);
fim++;
fila[fim] = num;
printf("\nNumero inserido com sucesso!!\n\n");
}
}

void Apagar() {
int num;
if (fim == -1)
printf("\nA fila esta vazia!!\n\n");
else {
printf("\nO numero apagado foi: %d\n\n", fila[0]);

for (int i = 0; i <= fim; i++) {


fila[i] = fila[i + 1];
}
fim--;
}
}

void Mostrar() {

if (fim == -1)
printf("\nA fila esta vazia!!");
else {
printf("\nNumeros na fila: \n");
for (int i = 0; i <= fim; i++) {
printf("%d ", fila[i]);
}
}
printf("\n\n");
}

int main()
{
int opt;

do {
system("cls");
printf("\tMenu\n");
printf("1 - Inserir um numero inteiro na fila\n");
printf("2 - Apagar um numero inteiro da fila\n");
printf("3 - Mostrar todos os numeros da fila\n");
printf("4 - Sair\n\n");
printf("Digite sua escolha: ");
scanf_s("%d", &opt);
switch (opt)
{
case 1:
Inserir();
system("pause");
break;
case 2:
Apagar();
system("pause");
break;
case 3:
Mostrar();
system("pause");
break;
case 4:
printf("\nPrograma encerrado com sucesso!!\n\n");
system("pause");
break;
default:
printf("\nOpcao invalida!\n\n");
system("pause");
break;
}
} while (opt != 4);

return 0;
}

----------------------------------------------------------------------------------------
Questão 4/5 Estrutura de Dados

Criar um programa utilizando a linguagem de programação C/C++ que seja capaz de


armazenar, em uma matriz 3x20, o peso (linha 0), a altura (linha1) e a idade (linha2) de 20
pessoas. Após armazenado, o programa oferecer ao usuário a possibilidade de ordenar a
matriz pela
idade, pela altura e pelo peso. Uma vez que a forma de ordenação seja selecionada, o
programa deverá exibir a matriz ordenada.

----------------------------------------------------------------------------------------

#include "stdio.h"
#include "stdlib.h"

//definir quantidade de pessoas


#define MAX 20

float matriz[3][MAX];

void inserirDados() {
for (int i = 0; i < MAX; i++) {
printf("Digite o peso, a idade e a altura de %d pessoas:\n", MAX);
printf("Peso(kg)......: ");
scanf_s("%f", &matriz[0][i]);
printf("Altura(metros): ");
scanf_s("%f", &matriz[1][i]);
printf("Idade(anos)...: ");
scanf_s("%f", &matriz[2][i]);
system("cls");
}
}

void exibirMatriz() {
for (int i = 0; i < 3; i++) {
if (i == 0)
printf("Peso(kg)......: ");
if (i == 1)
printf("Altura(metros): ");
if (i == 2)
printf("Idade(anos)...: ");
for (int j = 0; j < MAX; j++) {
printf("%.2f ", matriz[i][j]);
}
printf("\n");
}
printf("\n");
}

void ordenarPeso() {
char ch;
float aux;
int k = MAX - 1;

//BubbleSort, ordenacao por selecao


do {
ch = 'n';
for (int i = 0; i < k; i++) {
if (matriz[0][i] > matriz[0][i + 1]) {
for (int j = 0; j < 3; j++) {
aux = matriz[j][i];
matriz[j][i] = matriz[j][i + 1];
matriz[j][i + 1] = aux;
ch = 's';
}
}
}
k = k - 1;
} while (ch == 's');
}

void ordenarAltura() {
char ch;
float aux;
int k = MAX - 1;

//BubbleSort, ordenacao por selecao


do {
ch = 'n';
for (int i = 0; i < k; i++) {
if (matriz[1][i] > matriz[1][i + 1]) {
for (int j = 0; j < 3; j++) {
aux = matriz[j][i];
matriz[j][i] = matriz[j][i + 1];
matriz[j][i + 1] = aux;
ch = 's';
}
}
}
k = k - 1;
} while (ch == 's');
}
void ordenarIdade() {
char ch;
float aux;
int k = MAX - 1;

//BubbleSort, ordenacao por selecao


do {
ch = 'n';
for (int i = 0; i < k; i++) {
if (matriz[2][i] > matriz[2][i + 1]) {
for (int j = 0; j < 3; j++) {
aux = matriz[j][i];
matriz[j][i] = matriz[j][i + 1];
matriz[j][i + 1] = aux;
ch = 's';
}
}
}
k = k - 1;
} while (ch == 's');
}

int main()
{
int opt;

inserirDados();

do {
printf("Digite a forma como gostaria de ordenar: \n");
printf("1 - Por peso\n");
printf("2 - Por altura\n");
printf("3 - Por idade\n");
printf("4 - Sair\n\n");
printf("Digite sua escolha: ");
scanf_s("%d", &opt);

switch (opt)
{
case 1:
ordenarPeso();
printf("Matriz ordenada por peso:\n");
exibirMatriz();
system("pause");
break;
case 2:
ordenarAltura();
printf("Matriz ordenada por altura:\n");
exibirMatriz();
system("pause");
break;
case 3:
ordenarIdade();
printf("Matriz ordenada por idade:\n");
exibirMatriz();
system("pause");
break;

case 4:
printf("\nPrograma encerrado com sucesso!!\n\n");
system("pause");
break;
default:
printf("\nEscolha Invalida!!\n\n");
system("pause");
break;
}
system("cls");
} while (opt != 4);

return 0;
}

----------------------------------------------------------------------------------------
Questão 5/5 Estrutura de Dados

Utilizando a linguagem de programação C/C++ crie um programa que demonstre o uso de


uma estrutura de dados do tipo fila de inteiros que use como elemento de armazenamento
uma estrutura do tiplo lista encadeada. Certifique-se que sua estrutura de fila tenha funções
para inserir, apagar, criar e mostrar o conteúdo da lista além de uma função para devolver o
tamanho da fila e outra para esvaziar a fila. Observe também que, para resolver este
problema você precisará, obrigatoriamente utilizar alocação dinâmica de memória e que
para testar a fila o usuário deve ter acesso a um menu contendo todas as funções
especificadas.

-----------------------------------------------------------------------------------------

#include "stdio.h"
#include "stdlib.h"

struct Fila
{
int num;
Fila *prox;
};

Fila *inicio, *fim, *aux;


int contar = 0;

void Inserir() {
Fila *novo = (struct Fila *)malloc(sizeof(struct Fila));

printf("\nDigite um numero inteiro para ser inserido na fila: ");


scanf_s("%d", &novo->num);

novo->prox = NULL;

if (inicio == NULL) { //A Fila esta vazia e iremos inserir o primeiro


elemento
inicio = fim = novo;
}
else {
fim->prox = novo;
fim = novo;
}
contar++;
}

void Apagar() {
if (inicio == NULL) {
printf("\nA fila esta vazia!\n\n");
}
else {
printf("\nO numero %d foi apagado do inicio da fila\n\n", inicio->num);
aux = inicio;
inicio = inicio->prox;
free(aux); // Libera o espaco na memoria
contar--;
}
}

void Esvaziar() {
char ch;
if (inicio == NULL) {
printf("\nA fila esta vazia!\n\n");
}
else {
printf("\nTem certeza que deseja esvaziar toda a fila?(s/n): ");
ch = getchar();
if (ch == 's' || ch == 'S') {
while (inicio != NULL) {
aux = inicio;
inicio = inicio->prox;
free(aux); // Libera o espaco na memoria
contar--;
}
printf("\nA fila foi esvaziada com sucesso!!\n\n");
}
else {
printf("\nA fila nao foi esvaziada!!\n\n");
}
}
}

void Mostrar() {
aux = inicio;
if (inicio == NULL) {
printf("\nA fila esta vazia!");
}
else {
while (aux != NULL) {
printf("%d ", aux->num);
aux = aux->prox;
}
}
printf("\n\n");
}

void Tamanho() {
if (inicio == NULL) {
printf("\nA fila esta vazia!\n\n");
}
else {
printf("\nA fila contem %d elementos!\n\n", contar);
}
}

int main(){

int opt, c;

do {
printf("\tMenu de Escolhas\n");
printf("1 - Inserir um elemento\n");
printf("2 - Apagar um elemento\n");
printf("3 - Mostrar toda fila\n");
printf("4 - Tamanho da fila\n");
printf("5 - Esvaziar fila\n");
printf("6 - Sair\n\n");
printf("Digite sua escolha: ");
scanf_s("%d", &opt);
while ((c = getchar()) != '\n' && c != EOF){} // Limpar buffer

switch (opt) {
case 1:
Inserir();
printf("\nElemento inserido com sucesso!!\n\n");
system("pause");
break;
case 2:
Apagar();
system("pause");
break;
case 3:
Mostrar();
system("pause");
break;
case 4:
Tamanho();
system("pause");
break;
case 5:
Esvaziar();
system("pause");
break;
case 6:
printf("\nO programa foi encerrado com sucesso!!\n\n");
system("pause");
break;
default:
printf("\nEscolha Invalida!!\n\n");
system("pause");
break;
}
system("cls");
} while (opt != 6);

return 0;
}

-----------------------------------------------------------------------------------------

You might also like