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 Contas

2 - 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)

Altere o exercício anterior de forma que ele inclua um "limite" de conta para os clientes, e as opções de "depósito" e "saque" também deverão ser implementadas seguindo as regras abaixo:
A opção depósito deverá solicitar qual é o número da conta do cliente para realizar a operação, o  saldo deverá ser atualizado conforme o lançamento efetuado, verificar se o cliente estava usando o limite e também atualizar seu valor.
A opção saque também deverá solicitar o número da conta e verificar se o cliente possui dinheiro suficiente para efetuar a operação, esta operação deverá considerar o valor do saldo da conta e também do limite disponível.

#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;
}

© 2024 Exercícios Net. Campo Grande - Ms
Desenvolvido por Webnode Cookies
Crie seu site grátis! Este site foi criado com Webnode. Crie um grátis para você também! Comece agora