TAREFA 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Definindo as estruturas de dados para Empresa e Funcionário
typedef struct {
char nome[100];
char telefone[15];
char endereco[200];
char cnpj[20];
} Empresa;
typedef struct {
char nome[100];
char telefone[15];
char endereco[200];
char cnpj[20];
} Funcionario;
// Funções para cadastrar e listar Empresas e Funcionários
void cadastrarEmpresa(Empresa *empresa) {
printf("\nDigite o nome da empresa: ");
fgets(empresa->nome, 100, stdin);
empresa->nome[strcspn(empresa->nome, "\n")] = '\0'; // Remover o \n da string
printf("Digite o telefone da empresa: ");
fgets(empresa->telefone, 15, stdin);
empresa->telefone[strcspn(empresa->telefone, "\n")] = '\0';
printf("Digite o endereco da empresa: ");
fgets(empresa->endereco, 200, stdin);
empresa->endereco[strcspn(empresa->endereco, "\n")] = '\0';
printf("Digite o CNPJ da empresa: ");
fgets(empresa->cnpj, 20, stdin);
empresa->cnpj[strcspn(empresa->cnpj, "\n")] = '\0';
void cadastrarFuncionario(Funcionario *funcionario) {
printf("\nDigite o nome do funcionario: ");
fgets(funcionario->nome, 100, stdin);
funcionario->nome[strcspn(funcionario->nome, "\n")] = '\0';
printf("Digite o telefone do funcionario: ");
fgets(funcionario->telefone, 15, stdin);
funcionario->telefone[strcspn(funcionario->telefone, "\n")] = '\0';
printf("Digite o endereco do funcionario: ");
fgets(funcionario->endereco, 200, stdin);
funcionario->endereco[strcspn(funcionario->endereco, "\n")] = '\0';
printf("Digite o CNPJ do funcionario: ");
fgets(funcionario->cnpj, 20, stdin);
funcionario->cnpj[strcspn(funcionario->cnpj, "\n")] = '\0';
void listarEmpresas(Empresa empresas[], int numEmpresas) {
if (numEmpresas == 0) {
printf("\nNao ha empresas cadastradas.\n");
return;
printf("\nEmpresas Cadastradas:\n");
for (int i = 0; i < numEmpresas; i++) {
printf("\nEmpresa %d:\n", i + 1);
printf("Nome: %s\n", empresas[i].nome);
printf("Telefone: %s\n", empresas[i].telefone);
printf("Endereco: %s\n", empresas[i].endereco);
printf("CNPJ: %s\n", empresas[i].cnpj);
void listarFuncionarios(Funcionario funcionarios[], int numFuncionarios) {
if (numFuncionarios == 0) {
printf("\nNao ha funcionarios cadastrados.\n");
return;
printf("\nFuncionarios Cadastrados:\n");
for (int i = 0; i < numFuncionarios; i++) {
printf("\nFuncionario %d:\n", i + 1);
printf("Nome: %s\n", funcionarios[i].nome);
printf("Telefone: %s\n", funcionarios[i].telefone);
printf("Endereco: %s\n", funcionarios[i].endereco);
printf("CNPJ: %s\n", funcionarios[i].cnpj);
}
int main() {
Empresa empresas[100];
Funcionario funcionarios[100];
int numEmpresas = 0, numFuncionarios = 0;
int opcao;
do {
printf("\nMenu:\n");
printf("1. Cadastrar uma empresa\n");
printf("2. Cadastrar um funcionario\n");
printf("3. Listar todas as empresas\n");
printf("4. Listar todos os funcionarios\n");
printf("5. Sair do programa\n");
printf("Escolha uma opcao: ");
scanf("%d", &opcao);
getchar(); // Limpar o buffer do teclado
switch (opcao) {
case 1:
if (numEmpresas < 100) {
cadastrarEmpresa(&empresas[numEmpresas]);
numEmpresas++;
} else {
printf("\nLimite de empresas atingido.\n");
break;
case 2:
if (numFuncionarios < 100) {
cadastrarFuncionario(&funcionarios[numFuncionarios]);
numFuncionarios++;
} else {
printf("\nLimite de funcionarios atingido.\n");
break;
case 3:
listarEmpresas(empresas, numEmpresas);
break;
case 4:
listarFuncionarios(funcionarios, numFuncionarios);
break;
case 5:
printf("\nSaindo do programa...\n");
break;
default:
printf("\nOpcao invalida. Tente novamente.\n");
} while (opcao != 5);
return 0;
Descrição do programa:
Estruturas de Dados: Duas estruturas foram definidas: Empresa e
Funcionario. Ambas contêm os campos necessários (nome, telefone,
endereço, CNPJ) conforme as exigências do trabalho.
Funções:
o cadastrarEmpresa() e cadastrarFuncionario() são
responsáveis por coletar os dados do usuário e armazená-los nas
respectivas variáveis.
o listarEmpresas() e listarFuncionarios() exibem as
empresas e funcionários cadastrados.
Menu: O programa apresenta um menu com opções para cadastrar empresas,
cadastrar funcionários, listar as empresas e funcionários ou sair do programa.
Validação: Limite de 100 empresas e 100 funcionários para evitar ultrapassar a
memória alocada nas arrays.
Como executar:
1. Compile o código usando um compilador C (como gcc).
2. Execute o programa, interaja com o menu e veja as opções de cadastro e
listagem.
TAREFA 2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Definindo as estruturas de dados para Produto e Categoria
typedef struct {
char nome[100];
char material[100];
float altura;
float largura;
float preco;
char nomeCategoria[100];
} Produto;
typedef struct {
char nomeCategoria[100];
char subcategoria[100];
} Categoria;
// Funções para cadastrar e listar Produtos e Categorias
void cadastrarProduto(Produto *produto) {
printf("\nDigite o nome do produto: ");
fgets(produto->nome, 100, stdin);
produto->nome[strcspn(produto->nome, "\n")] = '\0'; // Remover o \n da string
printf("Digite o material do produto: ");
fgets(produto->material, 100, stdin);
produto->material[strcspn(produto->material, "\n")] = '\0';
printf("Digite a altura do produto (em metros): ");
scanf("%f", &produto->altura);
printf("Digite a largura do produto (em metros): ");
scanf("%f", &produto->largura);
printf("Digite o preço do produto: ");
scanf("%f", &produto->preco);
getchar(); // Limpar o buffer do teclado
printf("Digite o nome da categoria do produto: ");
fgets(produto->nomeCategoria, 100, stdin);
produto->nomeCategoria[strcspn(produto->nomeCategoria, "\n")] = '\0';
void cadastrarCategoria(Categoria *categoria) {
printf("\nDigite o nome da categoria: ");
fgets(categoria->nomeCategoria, 100, stdin);
categoria->nomeCategoria[strcspn(categoria->nomeCategoria, "\n")] = '\0';
printf("Digite a subcategoria: ");
fgets(categoria->subcategoria, 100, stdin);
categoria->subcategoria[strcspn(categoria->subcategoria, "\n")] = '\0';
void listarProdutos(Produto produtos[], int numProdutos) {
if (numProdutos == 0) {
printf("\nNao ha produtos cadastrados.\n");
return;
}
printf("\nProdutos Cadastrados:\n");
for (int i = 0; i < numProdutos; i++) {
printf("\nProduto %d:\n", i + 1);
printf("Nome: %s\n", produtos[i].nome);
printf("Material: %s\n", produtos[i].material);
printf("Altura: %.2f metros\n", produtos[i].altura);
printf("Largura: %.2f metros\n", produtos[i].largura);
printf("Preco: R$ %.2f\n", produtos[i].preco);
printf("Categoria: %s\n", produtos[i].nomeCategoria);
void listarCategorias(Categoria categorias[], int numCategorias) {
if (numCategorias == 0) {
printf("\nNao ha categorias cadastradas.\n");
return;
printf("\nCategorias Cadastradas:\n");
for (int i = 0; i < numCategorias; i++) {
printf("\nCategoria %d:\n", i + 1);
printf("Nome da Categoria: %s\n", categorias[i].nomeCategoria);
printf("Subcategoria: %s\n", categorias[i].subcategoria);
}
void listarProdutosPorCategoria(Produto produtos[], int numProdutos, const char
*categoriaBusca) {
int encontrou = 0;
printf("\nProdutos da categoria %s:\n", categoriaBusca);
for (int i = 0; i < numProdutos; i++) {
if (strcmp(produtos[i].nomeCategoria, categoriaBusca) == 0) {
printf("\nProduto %d:\n", i + 1);
printf("Nome: %s\n", produtos[i].nome);
printf("Material: %s\n", produtos[i].material);
printf("Altura: %.2f metros\n", produtos[i].altura);
printf("Largura: %.2f metros\n", produtos[i].largura);
printf("Preco: R$ %.2f\n", produtos[i].preco);
int main() {
Produto produtos[100];
Categoria categorias[100];
int numProdutos = 0, numCategorias = 0;
int opcao;
char categoriaBusca[100];
do {
printf("\nMenu:\n");
printf("1. Cadastrar um produto\n");
printf("2. Cadastrar uma categoria\n");
printf("3. Listar produtos\n");
printf("4. Listar categorias\n");
printf("5. Listar produtos por categoria\n");
printf("6. Sair do programa\n");
printf("Escolha uma opcao: ");
scanf("%d", &opcao);
getchar(); // Limpar o buffer do teclado
switch (opcao) {
case 1:
if (numProdutos < 100) {
cadastrarProduto(&produtos[numProdutos]);
numProdutos++;
} else {
printf("\nLimite de produtos atingido.\n");
break;
case 2:
if (numCategorias < 100) {
cadastrarCategoria(&categorias[numCategorias]);
numCategorias++;
} else {
printf("\nLimite de categorias atingido.\n");
}
break;
case 3:
listarProdutos(produtos, numProdutos);
break;
case 4:
listarCategorias(categorias, numCategorias);
break;
case 5:
printf("\nDigite o nome da categoria para buscar os produtos: ");
fgets(categoriaBusca, 100, stdin);
categoriaBusca[strcspn(categoriaBusca, "\n")] = '\0';
listarProdutosPorCategoria(produtos, numProdutos, categoriaBusca);
break;
case 6:
printf("\nSaindo do programa...\n");
break;
default:
printf("\nOpcao invalida. Tente novamente.\n");
} while (opcao != 6);
return 0;
Descrição do programa:
Estruturas de Dados: Definimos duas estruturas: Produto e Categoria. A
estrutura Produto contém as informações necessárias para o cadastro de um
produto, incluindo o nome da categoria. A estrutura Categoria contém o
nome da categoria e sua subcategoria.
Funções:
o cadastrarProduto() e cadastrarCategoria() para coletar e
armazenar as informações fornecidas pelo usuário.
o listarProdutos() e listarCategorias() para exibir as
informações cadastradas.
o listarProdutosPorCategoria() para listar os produtos
pertencentes a uma categoria específica.
Menu: O programa exibe um menu com opções para cadastrar produtos e
categorias, listar os cadastros ou sair do programa.
Validação: O programa verifica se há espaço para cadastrar mais produtos ou
categorias, com limite de 100 para cada.
Como executar:
1. Compile o código usando um compilador C (como gcc).
2. Execute o programa, interaja com o menu e realize os cadastros e listagens.