C
Aqui nosso acervo de exercícios em C.
Exercícios em C
(Vetores, Matrizes, Ponteiros, Funções e Registros)
Exercícios resolvidos em C
Por enquanto não tem o botão de pesquisa, para localizar o exercício pressione os botões Control + F e pesquise
por textos curtos. Infelizmente ha códigos que são muito extensos e devido a isso, não estão com a devida formatação.
Grato pela compreensão.
Exercício 01
Faça um programa que receba o código e o preço de 5 produtos, calcule e mostre:
a) a quantidade de produtos com preço inferior a R$ 50
b) o código dos produtos com preço entre R$ 50 e R$ 100
c) a média dos preços dos produtos com preço superior a R$ 100.
#include <stdio.h>
#include <locale.h>
int main ()
{
setlocale(LC_ALL, "portuguese");
int cod, cont = 0, contm = 0, media, i;
int aux[5] = {0,0,0,0};
float preco, soma = 0;
for(i=0; i<5; i++){ // processamento
printf("Digite o Código do produto e o preço: ");
scanf("%i" "%f", &cod, &preco);
if(preco < 50){
cont++;
}
if(preco >= 50 && preco <= 100){
aux[i] = cod;
}
if(preco > 100){
contm++;
soma = soma + preco;
}
}
printf("\n\n");
printf("a) a quantidade de produtos com preço inferior a R$ 50: %i\n", cont);
for(i=0; i<5; i++){
if(aux[i] > 0){
printf("b) o código dos produtos com preço entre R$ 50 e R$ 100: %i\n", aux[i]);
}
}
printf("c) a média dos preços dos produtos com preço superior a R$ 100: %.2f\n", soma/contm);
return 0;
}
Exercício 02
Faça um programa que receba o total das vendas de cada vendedor e armazene-as em um vetor. Receba também o percentual de comissão de cada vendedor a armazene-os em outro vetor. Receba os códigos destes vendedores e armazene-os em um terceiro vetor. Existem apenas 10 vendedores.
Calcule e mostre:
a) um relatório com os códigos dos vendedores e os valores a receber;
b) total das vendas de todos vendedores;
c) maior valor a receber e o código de quem o receberá;
d) menor valor a receber e o código de quem o receberá.
#include <stdio.h>
#include <locale.h>
#define MAX 10
int main ()
{
setlocale(LC_ALL, "portuguese");
int i, pos, posm;
int codvend[MAX];
float venda[MAX], perccomi[MAX], vlcomi[MAX], tvendas = 0;
float maior = 0, menor = 99999999, tvendasmais = 0, tvendasmenos = 0;
for(i=0; i < MAX ;i++){
printf("Digite o Codigo do Vendedor sua Venda e sua comissão: ");
scanf("%i %f %f", &codvend[i], &venda[i], &perccomi[i]);
vlcomi[i] = venda[i] * (perccomi[i] / 100);
tvendas = tvendas + venda[i];
}
for(i=0; i<MAX; i++) {
if(venda[i] > maior){
maior = venda[i];
tvendasmais = maior;
pos = codvend[i];
}
if(venda[i] < menor){
menor = venda[i];
tvendasmenos = venda[i]++;
posm = codvend[i];
}
}
printf("\n\n");
printf("\na) Um relatório com os códigos dos vendedores e os valores a receber;\n");
for(i=0; i<MAX; i++){
printf("Cod. Vendedor: %i | Comissão: %.2f%% | Receber: %.2f\n", codvend[i], perccomi[i], vlcomi[i]);
}
printf("\nb)Total das vendas de todos vendedores\n");
printf("R$ %.2f\n", tvendas);
printf("\nc) Maior valor a receber e o código de quem o receberá\n");
printf("Valor: %.2f Cod.: %i\n", tvendasmais, pos);
printf("\nd) Menor valor a receber e o código de quem o receberá\n");
printf("Valor: %.2f Cod.: %i\n", tvendasmenos, posm);
return 0;
}
Exercício 03
Faça um programa que carregue uma matriz 2 X 2, calcule e mostre uma matriz resultante que será a matriz digitada multiplicada pelo maior elemento da matriz.
#include <stdio.h>
#include <locale.h>
int main ()
{
setlocale(LC_ALL,"portuguese");
int mat1[2][2], l, c, maior = 0;
for(l=0; l<2; l++){
for(c=0; c<2; c++){
printf("Mande os valores da Mat2x2[%i][%i]: ", l+1, c+1);
scanf("%i", &mat1[l][c]);
}
}
printf("\n\nListando a Mat1[2][2]\n\n");
for(l=0; l<2; l++){
for(c=0; c<2; c++){
printf("[%i][%i] = %i\n", l+1, c+1, mat1[l][c]);
}
}
printf("\n\n");
printf("Maior Elemento da Matriz2x2...\n\n");
for(l=0; l<2; l++){
for(c=0; c<2; c++){
if(mat1[l][c] > maior){
maior = mat1[l][c];
}
}
}
printf(">>> %i <<<\n\n", maior);
printf("\nMatriz Resultante...\n\n");
for(l=0; l<2; l++){
for(c=0; c<2; c++){
mat1[l][c] = mat1[l][c] * maior;
}
}
for(l=0; l<2; l++){
for(c=0; c<2; c++){
printf("[%i][%i] = %i\n", l+1, c+1, mat1[l][c]);
}
}
return 0;
}
Exercício 04
Faça um programa que carregue uma matriz 10 X 3 com as notas de 10 alunos em 3 provas. Mostre um relatório com o número do aluno (número da linha) e a prova em que cada aluno obteve menor nota. Ao final do relatório, mostrar quantos alunos tiveram menor nota na prova 1, quantos alunos tiveram menor nota na prova 2 e quantos alunos tiveram menor nota na prova 3.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL,"portuguese");
int l, c, p1 = 0, p2 = 0, p3 = 0;
float menor, mat[10][3];
for(l=0; l<10; l++){ //Aqui a Matriz é Preenchida
for(c=0; c<3; c++){
printf("Digite a Nota do Aluno %i Prova %i: ", l+1, c+1);
scanf("%f", &mat[l][c]);
}
}
printf("\n\n");
printf("Alunos com menores notas nas Provas...\n\n");
for(l=0; l<10; l++){ //Separa e mostra as menores notas
for(c=0; c<3; c++){
menor = 6;
if(mat[l][c] < menor){
menor = mat[l][c];
printf("Aluno ""%i"" Prova ""%i"" e Nota: %.1f\n", l+1, c+1, menor);
}
}
}
printf("\n\n");
printf("Notas baixas por Prova...\n\n");
for(l=0; l<10; l++){ //Faz a contagem de notas baixas por prova
for(c=0; c<3; c++){
menor = 6;
if(c == 0 && mat[l][c] < menor){
p1++;
}
if(c == 1 && mat[l][c] < menor){
p2++;
}
if(c == 2 && mat[l][c] < menor){
p3++;
}
}
}
printf("Quantidade de alunos que tiveram menor nota na prova 1 foi de %i\n", p1);
printf("Quantidade de alunos que tiveram menor nota na prova 2 foi de %i\n", p2);
printf("Quantidade de alunos que tiveram menor nota na prova 3 foi de %i\n", p3);
return 0;
}
Exercício 05
Faça um programa que carregue:
um vetor com 8 posições com os nomes das lojas;
um outro vetor com 4 posições com os nomes dos produtos;
uma matriz com os preços de todos os produtos em cada loja.
O programa deve mostrar todas as relações (nome do produto - nome da loja) nas quais o preço não ultrapasse R$ 120,00.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL,"portuguese");
char lojas[8][100], produtos[4][100];
float precos[8][4];
int i, l, c;
printf("\n###################### Iniciando ######################\n\n");
printf("Preencha as Lojas\n\n");
for(i=0; i<8; i++){
fflush(stdin);
printf("Digite a Loja %i: ", i+1);
scanf("%[^\n]s", &lojas[i]);
}
printf("\nPreencha os produtos\n\n");
for(i=0; i<4; i++){
fflush(stdin);
printf("Digite o Produto %i: ", i+1);
scanf("%[^\n]s", &produtos[i]);
}
printf("\nPreencha os preços\n\n");
for(l=0; l<8; l++){
for(c=0; c<4; c++){
printf("Digite o Preço do Produto %s, na Loja %s : ", produtos[c], lojas[l]);
scanf("%f", &precos[l][c]);
}
}
printf("\n\nPreços Abaixo de R$ 12O,00...\n\n");
for(l=0; l<8; l++){
for(c=0; c<4; c++){
if(precos[l][c] <= 120){
printf("Produto %s - Loja %s - Preço %.2f\n", produtos[c], lojas[l], precos[l][c]);
}
}
}
return 0;
}
Exercício 06
Faça um programa que realize o cadastro de contas bancárias com as seguintes informações: número a conta, nome do cliente e saldo. O banco permitirá o cadastramento de apenas 15 contas e não pode haver mais que uma conta com o mesmo número. O programa deverá usar REGISTRO em sua estrutura de dados e criar um menu de opções como a seguir: Menu de Opções:
1 - Cadastrar Contas2 - Visualizar todas as contas de um determinado cliente
3 - Exclusão da conta por cliente
4 - Exclusão da conta por número
5 - Sair
Forma 01
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define tam 15
int main()
{
setlocale(LC_ALL, "portuguese");
struct conta{
int num;
char nome[35];
float saldo;
};
struct conta cad[tam];
int i, j, op, posi, achou, num_conta, verifica, cc_excluir;
float saldo_cliente, menor_saldo;
char nome_cliente[35];
for(i=0; i<tam; i++){
cad[i].num = 0;
strcpy(cad[i].nome,"NULL");
cad[i].saldo = 0;
}
do{
system("CLS");
printf("\nMenu de Opcões\n");
printf("\n1 - Cadastrar contas");
printf("\n2 - Visualizar conta p/ Cliente");
printf("\n3 - Visualizar conta p/ Conta");
printf("\n4 - Visualizar todas as contas");
printf("\n5 - Excluir conta p/ Conta");
printf("\n6 - Excluir conta c/ menor saldo");
printf("\n7 - Sair");
printf("\n\nDigite sua opcao: ");
scanf("%d",&op);
switch(op){
case 1:
achou = 0;
printf("\nDigite o numero da conta a ser incluida: ");
scanf("%i", &num_conta);
//Verifica se esta conta já está cadastrada
fflush(stdin);
for(i=0; i<tam; i++){
if(num_conta == cad[i].num){
achou = 1;
}
}
if(achou == 1){
printf("\nJa existe conta cadastrada com este numero!!");
system("pause");
}
else{// cadastrar a conta
posi = -1;
j = 0;
while(j < tam){//Olha se nao estourou o numero de contas
if(cad[j].num == 0){
posi = j;
j = tam;
}
j++;
}
if(posi == -1){
printf("\nImpossivel cadastrar novas contas, excedeu numero máximo!!");
system("pause");
}
else{
printf("\nDigite o nome do cliente: ");
scanf("\t%s", &nome_cliente);
fflush(stdin);
printf("\nDigite o saldo do cliente: ");
scanf("%f", &saldo_cliente);
cad[posi].num = num_conta;
strcpy(cad[posi].nome, nome_cliente);
cad[posi].saldo = saldo_cliente;
printf( "\nConta cadastrada com sucesso!");
}
}// Fim else cadastrar conta
break;
case 2:
system("cls");
printf("\n\n");
fflush(stdin);
printf("Digite o nome do cliente a ser consultado: ");
scanf("\t%s", &nome_cliente);
achou = 0;
for(i=0; i<tam; i++){
verifica = (stricmp(cad[i].nome, nome_cliente));
if(verifica == 0){
printf("\nConta: %i Saldo: %.2f \n", cad[i].num, cad[i].saldo);
achou = 1;
}
}
if(achou == 0){
printf("\nNao existe conta cadastrada para este cliente!\n");
}
system("pause");
system("cls");
break;
case 3:
system("cls");
printf("\n\n");
printf("Digite o Numero da Conta: ");
scanf("\t%d", &num_conta);
achou = 0;
for(i=0; i<tam; i++){
if(num_conta == cad[i].num){
printf("\nConta: %i Nome: %s Saldo: %.2f\n", cad[i].num, cad[i].nome, cad[i].saldo);
achou = 1;
}
if(achou == 0){
printf("\n \nNao existe esta conta cadastrada!!\n");
}
system("pause");
system("cls");
break;
case 4:
system("cls");
printf("\n\n");
printf("Todas as Contas Existentes...\n\n");
for(i=0; i<tam; i++){
printf("Conta: %i - Nome: %s - Saldo: %.2f\n", cad[i].num, cad[i].nome, cad[i].saldo);
}
system("pause");
system("cls");
break;
case 5:
system("pause");
system("cls");
printf("\nDigite o Numero da Conta: ");
scanf("\t%d", &cc_excluir);
achou = 0;
for(i=0; i<tam; i++){
if(cc_excluir == cad[i].num)
achou = 1;
}
if(achou == 1){
printf("\nConta Localizada!!\n");
}
if(achou == 0){
printf("\nNão existe esta conta cadastrada!!\n");
}
else{
for(i=0; i<tam; i++){
if(cc_excluir == cad[i].num){
cad[i].num = 0;
strcpy(cad[i].nome, "NULL");
cad[i].saldo = 0.0;
printf("\nConta Excluida com sucesso!!\n");
system("pause");
system("cls");
}
}
}
system("pause");
system("cls");
break;
case 6:
i = 0;
achou = 0;
while(i < tam){
if(cad[i].num != 0){
if(i == 0){
menor_saldo = cad[i].saldo;
posi = i;
}
else if(cad[i].saldo < menor_saldo){
menor_saldo = cad[i].saldo;
posi = i;
}
achou = 1;
}
i++;
}
if(achou == 0){
printf( "\nNenhuma conta foi cadastrada!");
}
else{// excluir a conta
for(i=posi; i<tam; i++){//for(i=posi;i<14;i++){
cad[i] = cad[i+1];
}
cad[i].num = 0;
strcpy(cad[i].nome,"NULL");
cad[i].saldo = 0;
printf("\nConta excluida com sucesso!");
}// Fim else excluir a conta
getch();
break;
case 7:
break;
default:
system("cls || clear");
printf("Opcão de Sair!! Xau Xau\n");
}
}while(op != 7);
}
Forma 02
Obs.: Código sem formatação
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define tam 15
main()
{
struct banco{
int num_conta;
char cliente[50];
float saldo;
};
struct banco contas[tam];
int i, j, menu = 0, ver_conta, contcliente = 0, cont = 0,
achou, numero, cc_excluir = 0;
char vnome[50];
for(i=0; i<tam; i++){
contas[i].num_conta = 0;
strcpy(contas[i].cliente, "NULL");
contas[i].saldo = 0.0;
}
do{
printf("\t\t* * * * * * * * * * * * * * * * * *\n");
printf("\t\t* CONTAS BANCARIAS *\n");
printf("\t\t* * * * * * * * * * * * * * * * * *\n");
printf("\t\t* Menu de Opcoes *\n");
printf("\t\t* * * * * * * * * * * * * * * * * *\n");
printf("\t\t* [1] Cadastrar as Contas *\n");
printf("\t\t* [2] Visualizar conta p/ Cliente *\n");
printf("\t\t* [3] Visualizar conta p/ Conta *\n");
printf("\t\t* [4] Visualizar todas as contas *\n");
printf("\t\t* [5] Excluir conta *\n");
printf("\t\t* [6] Sair *\n");
printf("\t\t* * * * * * * * * * * * * * * * * *\n");
printf("\n\n\t\t MENU: ");
scanf("\t\t%d",&menu);
switch(menu){
case 1:
system("cls");
printf("\n\n");
do{
printf("\t Digite o Numero da Conta: ");
scanf("\t%d",&ver_conta);
for(i=0; i<tam; i++){
if(ver_conta != contas[i].num_conta){
contcliente++;
}
}
if(contcliente == tam){
contas[cont].num_conta = ver_conta;
printf("\t Digite o Nome do Cliente: ");
scanf("\t%s", &contas[cont].cliente);
printf("\t Digite o saldo: ");
scanf("\t%f", &contas[cont].saldo);
printf("\t\nConta cadastrada com sucesso!\n");
printf("\n");
contcliente = 0;
}
else{
cont = cont - 1;
printf("Conta existe\n");
contcliente = 0;
}
cont++;
}while(cont<tam);
system("cls");
break;
case 2:
system("cls");
printf("\n\n");
printf("\tDigite o nome do cliente: ");
scanf("\t%s", &vnome);
achou = 0;
for(i=0; i<tam; i++){
numero = (strcmp(vnome, contas[i].cliente));
if(numero == 0){
printf("\n \n \tNumero Conta: %d - Nome: %s - Saldo:
%.2f\n", contas[i].num_conta, contas[i].cliente, contas[i].saldo);
achou = 1;
}
}
if(achou == 0){
printf("\n \n \tNao existe conta cadastrada para este
cliente!!\n");
getch();
}
system("pause");
system("cls");
break;
case 3:
system("cls");
printf("\n\n");
printf("\t Digite o Numero da Conta: ");
scanf("\t%d", &ver_conta);
achou = 0;
for(i=0; i<tam; i++){
if(ver_conta == contas[i].num_conta){
printf("\n \n \tNumero Conta: %d - Nome: %s - Saldo: %.2f\n", contas[i].num_conta, contas[i].cliente, contas[i].saldo);
achou = 1;
}
}
if(achou == 0){
printf("\n \n \tNao existe esta conta cadastrada!!\n");
}
system("pause");
system("cls");
break;
case 4:
for(i=0; i<tam; i++){
printf("\n \n \tNumero Conta: %d - Nome: %s - Saldo: %.2f\n", contas[i].num_conta, contas[i].cliente, contas[i].saldo);
}
system("pause");
system("cls");
break;
case 5:
printf("\t Digite o Numero da Conta: ");
scanf("\t%d", &cc_excluir);
achou = 0;
for(i=0; i<tam; i++){
if(cc_excluir == contas[i].num_conta)
achou = 1;
}
if(achou == 1){
printf("\n \n \tConta Localizada!!\n");
}
if(achou == 0){
printf("\n \n \tNao existe esta conta cadastrada!!\n");
getch();
system("cls");
}
else{
for(i=0; i<tam; i++){
if(cc_excluir == contas[i].num_conta){
contas[i].num_conta = 0;
strcpy(contas[i].cliente, "NULL");
contas[i].saldo = 0.0;
printf("\n \n \tConta Excluida com sucesso!!\n");
system("pause");
system("cls");
}
}
}
system("pause");
system("cls");
break;
case 6:
break;
default:
printf("OPCAO INVALIDA");
system("cls");
}
}while(menu != 6);
}
Forma 03
Obs.: Código sem formatação
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#define MAX 15
typedef struct{
char cliente[50];
int cc;
float saldo;
}conta;
int cadConta(conta *banco){ //Função que cadastra as
contas
int i, ncc, tem = 0, cont = 0, estouro =0;
for(i=0; i<MAX; i++){ //Conta zero significa que nao tem
conta, esse for verifica e conta as contas ativas para ver
se da 15 ou menos.
if(banco[i].cc != 0){
estouro++;
}
}
if(estouro == MAX){ //Aqui verifica se o banco esta cheio
printf("\nDesculpe... Banco de dados esta lotado!!\n");
system("pause");
system("cls");
}
else{
do{
fflush(stdin);
printf("Digite o Numero da Conta: ");
scanf("%d",&ncc);
tem = 0;
for(i=0; i<MAX; i++){ //Este for verifica se a conta esteja
cadastrada, caso sim, muda a variavel tem para 1.
if(ncc == banco[i].cc){
tem = 1;
}
}
if(tem == 0){ //Caso a variavel tem esteja como zero, inicia
o cadastro.
banco[cont].cc = ncc;
printf("Digite o Nome do Cliente: ");
scanf("%s", &banco[cont].cliente);
printf("Digite o saldo: ");
scanf("%f", &banco[cont].saldo);
printf("\nConta cadastrada com sucesso!\n");
printf("\n");
system("pause");
system("cls");
}
else{ //Caso a variavel tem esjeja com o valor 1, cai aqui e
diminui o contadador para que o do while seja iniciado
novamente.
cont = cont - 1;
printf("\nJa existe conta cadastrada com este numero!!\n");
system("pause");
}
cont++;
}while(cont < MAX);
}
system("cls");
return(banco[i].cc);
}
int visualizaConta(conta *banco){ //Função que visualiza
as contas
int i, tem, verificador, tipo, cc;
char cli[50] = {"NULL"};
do{
printf("\nSelecione a opção que melhor lhe atenda...\n");
printf("1 - Visualizar contas p/ Cliente\n");
printf("2 - Visualizar conta p/ Conta\n");
printf("3 - Visualizar todas as contas\n");
printf("4 - Sair deste Menu\n");
printf("\nDigite uma opção: ");
scanf("%i", &tipo);
switch(tipo){
case 1:
system("cls");
printf("\n\n");
printf("Digite o nome do cliente: ");
scanf("%s", &cli);
tem = 0;
for(i=0; i<MAX; i++){
verificador = (strcmp(cli, banco[i].cliente));
if(verificador == 0){
printf("\n\n");
printf("Conta: %d - Cliente: %s - Saldo: %.2f\n", banco[i].cc,
banco[i].cliente, banco[i].saldo);
tem = 1;
}
}
if(tem == 0){
printf("\nNão existe conta cadastrada para este
cliente!!\n");
}
system("pause");
system("cls");
break;
case 2:
system("cls");
printf("\n\n");
printf("Digite o Numero da Conta: ");
scanf("%d", &cc);
tem = 0;
for(i=0; i<MAX; i++){
if(cc == banco[i].cc){
printf("\n\n");
printf("Conta: %d - Cliente: %s - Saldo: %.2f\n", banco[i].cc,
banco[i].cliente, banco[i].saldo);
tem = 1;
}
}
if(tem == 0){
printf("\nNão existe esta conta cadastrada!!\n");
}
system("pause");
system("cls");
break;
case 3:
system("cls");
printf("\n\n");
printf("Todas as Contas Existentes...\n\n");
for(i=0; i<MAX; i++){
printf("Conta: %d - Cliente: %s - Saldo: %.2f\n", banco[i].cc,
banco[i].cliente, banco[i].saldo);
}
system("pause");
system("cls");
break;
default:
printf("Opção de Sair... XauXau");
system("cls");
}
}while(tipo != 4);
return(0);
}
int excluir(conta *banco){ //Função que exclui o registro.
int op = 0, excluir, tem, i, verificador;
char excluirC[50] = {"NULL"};
do{
printf("\nSelecione a opção que melhor lhe atenda...\n");
printf("\n1 - Excluir conta p/ Conta");
printf("\n2 - Excluir conta p/ Cliente");
printf("\n3 - Duvida? Visualize as Contas");
printf("\n4 - Sair deste Menu\n");
printf("\nDigite uma opção: ");
scanf("%i", &op);
switch(op){
case 1:
printf("Digite o Numero da Conta: ");
scanf("%d", &excluir);
tem = 0;
for(i=0; i<MAX; i++){
if(excluir == banco[i].cc)
tem = 1;
}
if(tem == 1){
printf("\nConta Localizada!!\n");
}
if(tem == 0){
printf("\nNão existe esta conta cadastrada!!\n");
system("pause");
system("cls");
}
else{
for(i=0; i<MAX; i++){
if(excluir == banco[i].cc){
banco[i].cc = 0;
strcpy(banco[i].cliente, "NULL");
banco[i].saldo = 0.0;
printf("\nConta Excluida com sucesso!!\n");
system("pause");
system("cls");
}
}
}
system("pause");
system("cls");
break;
case 2:
printf("Digite o Nome do Cliente: ");
scanf("%s", &excluirC);
tem = 0;
for(i=0; i<MAX; i++){
verificador = (strcmp(excluirC, banco[i].cliente));
if(verificador == 0){
tem = 1;
banco[i].cc = 0;
strcpy(banco[i].cliente, "NULL");
banco[i].saldo = 0.0;
printf("\nConta Localizada!!\n");
printf("\nConta Excluida com sucesso!!\n");
system("pause");
system("cls");
}
}
if(tem == 0){
printf("\nNão existe esta conta cadastrada!!\n");
system("pause");
system("cls");
}
break;
case 3:
visualizaConta(banco);
system("cls");
break;
default:
printf("Opção de Sair... XauXau");
system("pause");
system("cls");
}
}while(op != 4);
}
int main()
{
setlocale(LC_ALL,"portuguese");
int num = 0, i, rec = 0, cadConta(), visualizaConta(),
excluir();
conta banco[MAX];
for(i=0; i<MAX; i++){
strcpy(banco[i].cliente, "NULL");
banco[i].cc = 0;
banco[i].saldo = 0.0;
}
do{
printf("\nMenu de Opções:\n1 - Cadastrar Contas\n2 -
Visualizar contas\n3 - Excluir contas\n4 - Sair.\n\n");
printf("\nDigite uma opção: ");
scanf("%i", &num);
switch(num){
case 1:
system("cls || clear");
rec = cadConta(banco);
break;
case 2:
system("cls || clear");
visualizaConta(banco);
break;
case 3:
system("cls || clear");
excluir(banco);
break;
case 4:
system("cls || clear");
printf("Opcão de Sair!! Xau Xau\n");
break;
default:
system("cls || clear");
}
}while(num != 4);
return 0;
}
Exercício 07
(Código sem Formatação)
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#define MAX 15
typedef struct{
char cliente[90];
int cc;
float saldo;
float limite;
float contlim;
}conta;
int cadConta(conta *banco){ //Função que cadastra as contas
int i, ncc, tem = 0, cont = 0, estouro =0;
for(i=0; i<MAX; i++){ //Conta zero significa que nao tem conta, esse for verifica e conta as contas ativas para ver se da 15 ou menos.
if(banco[i].cc != 0){
estouro++;
}
}
if(estouro == MAX){ //Aqui verifica se o banco esta cheio
printf("\nDesculpe... Banco de dados esta lotado!!\n");
system("pause");
system("cls");
}
else{
do{
fflush(stdin);
printf("Digite o Numero da Conta: ");
fflush(stdin);
scanf("%d",&ncc);
tem = 0;
for(i=0; i<MAX; i++){ //Este for verifica se a conta esteja cadastrada, caso sim, muda a variavel tem para 1.
if(ncc == banco[i].cc){
tem = 1;
}
}
if(tem == 0){ //Caso a variavel tem esteja como zero, inicia o cadastro.
banco[cont].cc = ncc;
fflush(stdin);
printf("Digite o Nome do Cliente: ");
scanf("%[^\n]s", &banco[cont].cliente);
fflush(stdin);
printf("Digite o Saldo: ");
scanf("%f", &banco[cont].saldo);
fflush(stdin);
printf("Digite o Limite Bancario: ");
scanf("%f", &banco[cont].limite);
banco[cont].contlim = banco[cont].limite;
printf("\nConta cadastrada com sucesso!\n");
printf("\n");
system("pause");
system("cls");
}
else{ //Caso a variavel tem esjeja com o valor 1, cai aqui e diminui o contadador para que o do while seja iniciado novamente.
cont = cont - 1;
printf("\nJa existe conta cadastrada com este numero!!\n");
system("pause");
}
cont++;
}while(cont < MAX);
}
system("cls");
return(banco[i].cc);
}
int visualizaConta(conta *banco){ //Função que visualiza as contas
int i, tem, verificador, tipo, cc;
char cli[90] = {"NULL"};
do{
printf("\nSelecione a opção que melhor lhe atenda...\n\n1 - Visualizar contas p/ Cliente\n2 - Visualizar conta p/ Conta\n3 - Visualizar todas as
contas\n4 - Sair deste Menu\n\nDigite uma opção: ");
scanf("%i", &tipo);
switch(tipo){
case 1:
system("cls");
printf("\n\n");
printf("Digite o nome do cliente: ");
fflush(stdin);
scanf("%[^\n]s", &cli);
tem = 0;
for(i=0; i<MAX; i++){
verificador = (strcmp(cli, banco[i].cliente));
if(verificador == 0){
printf("\n\n");
printf("Conta: %d - Cliente: %s - Saldo: %.2f - Limite: %.2f\n", banco[i].cc, banco[i].cliente, banco[i].saldo, banco[i].limite);
tem = 1;
}
}
if(tem == 0){
printf("\nNão existe conta cadastrada para este cliente!!\n");
}
system("pause");
system("cls");
break;
case 2:
system("cls");
printf("\n\n");
printf("Digite o Numero da Conta: ");
scanf("%d", &cc);
tem = 0;
for(i=0; i<MAX; i++){
if(cc == banco[i].cc){
printf("\n\n");
printf("Conta: %d - Cliente: %s - Saldo: %.2f - Limite: %.2f\n", banco[i].cc, banco[i].cliente, banco[i].saldo, banco[i].limite);
tem = 1;
}
}
if(tem == 0){
printf("\nNão existe esta conta cadastrada!!\n");
}
system("pause");
system("cls");
break;
case 3:
system("cls");
printf("\n");
printf("Todas as Contas Existentes...\n\n");
for(i=0; i<MAX; i++){
printf("Conta: %d - Cliente: %s - Saldo: %.2f - Limite: %.2f\n", banco[i].cc, banco[i].cliente, banco[i].saldo, banco[i].limite);
}
printf("\n\n");
system("pause");
system("cls");
break;
default:
printf("Opção de Sair... XauXau");
system("cls");
}
}while(tipo != 4);
return(0);
}
float debitoCredito(conta *banco){ //Inseri Deposito/Saque
int op = 0, tem, i, cc;
float saque = 0, deposito = 0, saldo = 0;
char cliente[90] = {"NULL"};
do{
printf("\nSelecione a opção que melhor lhe atenda...\n\n1 - Saque p/ Conta\n2 - Deposito p/ Conta\n3 - Visualizar Contas/Saldos\n4 - Sair deste
Menu\n\nDigite uma opção: ");
scanf("%i", &op);
switch(op){
case 1:
system("cls");
printf("\n");
printf("Digite o Numero da Conta: ");
scanf("%d", &cc);
tem = 0;
for(i=0; i<MAX; i++){
if(cc == banco[i].cc)
tem = 1;
}
if(tem == 1){
printf("\nConta Localizada!!\n");
}
if(tem == 0){
printf("\nDesculpe... Conta nao cadastrada!!\n\n");
system("pause");
system("cls");
}
else{
printf("Saldo Atual...!!\n\n");
for(i=0; i<MAX; i++){
if(cc == banco[i].cc){
saldo = banco[i].saldo + banco[i].limite; //soma saldo + limite
printf("Conta: %d - Cliente: %s - Saldo: %.2f - Limite: %.2f\n", banco[i].cc, banco[i].cliente, banco[i].saldo, banco[i].limite);
}
}
if(saldo <= 0){
printf("\nSaldo Insuficiente!! Realize um deposito!!");
system("pause");
system("cls");
}
printf("\nDigite o valor do saque: ");
scanf("%f", &saque);
if(saque > saldo){
printf("\nSaldo Insuficiente!! Realize um deposito!!\n");
system("pause");
system("cls");
}
for(i=0; i<MAX; i++){
if(cc == banco[i].cc){
if(saque <= banco[i].saldo){
banco[i].saldo = banco[i].saldo - saque;
printf("\nSaque Realizado com Sucesso!!\n");
system("pause");
system("cls");
}
else{
for(i=0; i<MAX; i++){
if(cc == banco[i].cc){
if(banco[i].limite > 0 && saque <= banco[i].limite && banco[i].saldo <= 0){ //aqui trata o limite
banco[i].limite = banco[i].limite - saque;
banco[i].saldo = 0.0;
printf("\nSaque Realizado com Sucesso!!\n");
system("pause");
system("cls");
}
if(saque > banco[i].saldo && saque <= banco[i].limite && saque <= banco[i].saldo + banco[i].limite){
banco[i].limite = (banco[i].saldo + banco[i].limite) - saque;
banco[i].saldo = 0.0;
printf("\nSaque Realizado com Sucesso!!\n");
system("pause");
system("cls");
}
else{
if(saque > banco[i].saldo && saque >= banco[i].limite && saque <= banco[i].saldo + banco[i].limite){
banco[i].limite = (banco[i].saldo + banco[i].limite) - saque;
banco[i].saldo = 0.0;
printf("\nSaque Realizado com Sucesso!!\n");
system("pause");
system("cls");
}
system("cls");
}
}
}
}
}
}
}
system("cls");
break;
case 2:
system("cls");
printf("\n");
printf("Digite o Numero da Conta: ");
scanf("%d", &cc);
tem = 0;
for(i=0; i<MAX; i++){
if(cc == banco[i].cc)
tem = 1;
}
if(tem == 1){
printf("\nConta Localizada!!\n");
}
if(tem == 0){
printf("\nDesculpe... Conta nao cadastrada!!\n\n");
system("pause");
system("cls");
}
printf("Saldo Atual...!!\n\n");
for(i=0; i<MAX; i++){
if(cc == banco[i].cc){
saldo = banco[i].saldo + banco[i].limite; //soma saldo + limite
printf("Conta: %d - Cliente: %s - Saldo: %.2f - Limite: %.2f\n", banco[i].cc, banco[i].cliente, banco[i].saldo, banco[i].limite);
}
}
printf("\nDigite o valor do deposito: ");
scanf("%f", &deposito);
for(i=0; i<MAX; i++){
if(cc == banco[i].cc){
if(banco[i].saldo > 0){
banco[i].saldo = banco[i].saldo + deposito;
printf("\nDeposito realizado com sucesso!!\n\n");
system("pause");
system("cls");
}
else{
if(banco[i].saldo == 0 && banco[i].limite == 0){
if(deposito > banco[i].contlim){
banco[i].limite = banco[i].contlim;
banco[i].saldo = deposito - banco[i].contlim;
printf("\nDeposito realizado com sucesso!!\n\n");
system("pause");
system("cls");
}
if(deposito <= banco[i].contlim){
banco[i].limite = deposito;
banco[i].saldo = 0.0;
printf("\nDeposito realizado com sucesso!!\n\n");
system("pause");
system("cls");
}
}
else{
if(banco[i].saldo == 0 && banco[i].limite > 0){
if(deposito > banco[i].contlim){
banco[i].saldo = deposito - (banco[i].contlim - banco[i].limite);
banco[i].limite = banco[i].limite + (banco[i].contlim - banco[i].limite);
printf("\nDeposito realizado com sucesso!!\n\n");
system("pause");
system("cls");
}
if(deposito <= banco[i].contlim){
if((deposito + banco[i].limite) <= banco[i].contlim){
banco[i].limite = banco[i].limite + deposito;
banco[i].saldo = 0.0;
printf("\nDeposito realizado com sucesso!!\n\n");
system("pause");
system("cls");
}
else{
if((deposito + banco[i].limite) > banco[i].contlim){
banco[i].limite = banco[i].contlim;
banco[i].saldo = (deposito + banco[i].limite) - banco[i].contlim;
printf("\nDeposito realizado com sucesso!!\n\n");
system("pause");
system("cls");
}
}
}
}
}
}
}
}
break;
case 3:
system("cls");
printf("\n");
visualizaConta(banco);
system("cls");
break;
default:
printf("Opção de Sair... XauXau\n");
system("cls || clear");
}
}while(op != 4);
}
int excluir(conta *banco){ //Excluir conta
int op = 0, excluir, tem, i, verificador;
char excluirC[90] = {"NULL"};
do{
printf("\nSelecione a opção que melhor lhe atenda...\n\n1 - Excluir conta p/ Conta\n2 - Excluir conta p/ Cliente\n3 - Duvida? Visualize as Contas\n4 -
Sair deste Menu\n");
printf("\nDigite uma opção: ");
scanf("%i", &op);
switch(op){
case 1:
printf("Digite o Numero da Conta: ");
scanf("%d", &excluir);
tem = 0;
for(i=0; i<MAX; i++){
if(excluir == banco[i].cc)
tem = 1;
}
if(tem == 1){
printf("\nConta Localizada!!\n");
}
if(tem == 0){
printf("\nNão existe esta conta cadastrada!!\n");
system("pause");
system("cls");
}
else{
for(i=0; i<MAX; i++){
if(excluir == banco[i].cc){
banco[i].cc = 0;
strcpy(banco[i].cliente, "NULL");
banco[i].saldo = 0.0;
banco[i].limite = 0.0;
banco[i].contlim = 0.0;
printf("\nConta Excluida com sucesso!!\n");
system("pause");
system("cls");
}
}
}
system("pause");
system("cls");
break;
case 2:
printf("Digite o Nome do Cliente: ");
scanf("%s", &excluirC);
tem = 0;
for(i=0; i<MAX; i++){
verificador = (strcmp(excluirC, banco[i].cliente));
if(verificador == 0){
tem = 1;
banco[i].cc = 0;
strcpy(banco[i].cliente, "NULL");
banco[i].saldo = 0.0;
banco[i].limite = 0.0;
banco[i].contlim = 0.0;
printf("\nConta Localizada!!\n");
printf("\nConta Excluida com sucesso!!\n");
system("pause");
system("cls");
}
}
if(tem == 0){
printf("\nNão existe esta conta cadastrada!!\n");
system("pause");
system("cls");
}
break;
case 3:
visualizaConta(banco);
system("cls || clear");
break;
default:
printf("Opção de Sair... XauXau");
system("pause");
system("cls");
}
}while(op != 4);
}
int main()
{
setlocale(LC_ALL,"portuguese");
int num = 0, i, rec = 0, cadConta(), visualizaConta(), excluir();
conta banco[MAX];
printf("\nMenu de Opções:\n\n");
for(i=0; i<MAX; i++){
strcpy(banco[i].cliente, "NULL");
banco[i].cc = 0;
banco[i].saldo = 0.0;
banco[i].limite = 0.0;
banco[i].contlim = 0.0;
}
do{
printf("\nMenu de Opções:\n\n1 - Cadastrar Contas\n2 - Visualizar contas\n3 - Depositos/Saques\n4 - Excluir contas\n5 - Sair.\n");
printf("\nDigite uma opção: ");
scanf("%i", &num);
switch(num){
case 1:
system("cls || clear");
rec = cadConta(banco);
break;
case 2:
system("cls || clear");
visualizaConta(banco);
break;
case 3:
system("cls || clear");
debitoCredito(banco);
break;
case 4:
system("cls || clear");
excluir(banco);
break;
case 5:
system("cls || clear");
printf("Opcão de Sair!! Xau Xau\n");
break;
default:
system("cls || clear");
}
}while(num != 5);
return 0;
}
Exercício 08
Seja um algoritmo para controlar os produtos do estoque de um supermercado. Para cada produto, tem-se os seguintes campos:
nome: string de tamanho 15
setor: caracter
quantidade: inteiro
preço: real //preço por unidade do produto
a) Escrever a definição da estrutura produto.
b) Declarar o vetor estoque do tipo da estrutura definida acima, de tamanho 100 e global.
c) Crie um menu para:
- Definir um bloco de instruções para ler o vetor estoque.
- Definir um bloco de instruções que receba um setor e devolva o número de diferentes produtos desse setor.
- Definir um bloco de instruções que calcule e devolva o total de capital investido em produtos do supermercado.
f) Sair do Programa.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
typedef struct{
char nome[15];
char setor[15];
int qtde;
float preco;
}produto;
int main()
{
produto estoque[MAX];
int num = 0, tem = 0, cont = 0, i, verifica;
float soma = 0;
char prod[15], set[15];
do{
fflush(stdin);
printf("Menu de Opções:\n\n1 - Definir um bloco de instruções para ler o vetor estoque.\n2 - Definir um bloco de instruções que receba um setor e devolva o número de diferentes produtos desse setor.\n3 - Definir um bloco de instruções que calcule e devolva o total de capital investido em produtos do supermercado\n4 - Sair.\n");
printf("\nDigite uma opção: ");
scanf("%i", &num);
switch(num){
case 1:
system("cls");
printf("Favor inserir os dados...\n\n");
do{
fflush(stdin);
printf("Digite o nome do produto: ");
scanf("%[^\n]s", &prod);
tem = 0;
for(i=0; i<MAX; i++){
verifica = strcmp(prod, estoque[i].nome);
if(verifica == 0){
tem = 1;
}
}
if(tem == 0){
strcpy(estoque[cont].nome, prod);
fflush(stdin);
printf("Digite o nome do setor: ");
scanf("%[^\n]s", &estoque[cont].setor);
fflush(stdin);
printf("Digite a quantidade: ");
scanf("%d", &estoque[cont].qtde);
fflush(stdin);
printf("Digite o preço unitario: ");
scanf("%f", &estoque[cont].preco);
printf("\nProduto Inserido com sucesso!!\n\n");
system("pause");
system("cls");
}
else{
cont = cont - 1;
printf("\nProduto já existente!!\n\n");
system("pause");
}
cont++;
}while(cont < MAX);
system("pause");
system("cls");
break;
case 2:
system("cls");
fflush(stdin);
printf("Digite o setor para trazer os produtos: ");
scanf("%[^\n]s", &set);
tem = 0;
for(i=0; i<MAX; i++){
verifica = strcmp(set, estoque[i].setor);
if(verifica == 0){
tem = 1;
}
}
if(tem == 1){
printf("\n");
printf("Setor localizado!!\n");
printf("Listando Produtos...\n\n");
for(i=0; i<MAX; i++){
verifica = strcmp(set, estoque[i].setor);
if(verifica == 0){
printf("Setor: %s - Produto: %s\n", estoque[i].setor, estoque[i].nome);
}
}
}
if(tem == 0){
printf("\nNão foi localizado este setor, talvez não exista!!\n");
}
printf("\n\n");
system("pause");
system("cls");
break;
case 3:
system("cls");
printf("\n");
printf("Listando Valores...\n\n");
for(i=0; i<MAX; i++){
soma = soma + (estoque[i].qtde * estoque[i].preco);
printf("Setor: %s - Produto: %s - Quantidade: %d - Vl. unitário: %.2f - Vl. total: %.2f\n", estoque[i].setor, estoque[i].nome, estoque[i].qtde,
estoque[i].preco, estoque[i].qtde * estoque[i].preco);
}
printf("\n");
printf("Total de capital investidos em produtos!!\n");
printf("Valor R$: %.2f", soma);
printf("\n");
system("pause");
system("cls");
break;
default:
system("cls || clear");
}
}while(num != 4);
return 0;
}