Top Sertanejo

terça-feira, 6 de dezembro de 2011

Automated Teller Machine

Automated Teller Machine (ATM)
Um banco local pretende instalar um novo ATM para permitir que seus clientes realizem
transações financeiras básicas. Cada cliente pode ter somente uma conta no banco. Os
usuários do ATM, ou seja, os clientes do banco devem ser capazes de visualizar seus sados
bancários, sacar um valor em dinheiro, depositar um valor em dinheiro e transferir um valor
do saldo para outra conta do mesmo banco.
O banco quer que você e sua equipe desenvolvam um software para realizar as transações
financeiras iniciadas pelos cientes do banco por meio do ATM. O banco integrará o software
com o hardware do ATM em um momento posterior. O software deve encapsular a
funcionalidade dos dispositivos de hardware dentro dos componentes de software, mas ele
próprio não precisa se preocupar com a maneira como esses dispositivos realizam suas
tarefas. O hardware do ATM ainda não foi desenvolvido; assim, em vez de escrever seu
software para ser executado no ATM você desenvolverá uma primeira versão do software
para executar em um computador pessoal. Essa versão deve utilizar o monitor do
computador para simular a tela do ATM e o teclado do computador para simular o teclado do
ATM.
Uma sessão do ATM consiste na autenticação de um cliente a partir de um número de conta
e senha para então executar as transações financeiras. Para autenticar um cliente e realizar
as transações, o ATM deve interagir com o banco de dados das informações da conta
bancária (isto é, uma coleção organizada de dados armazenados - vetor de objetos de conta).
Para cada conta bancária (posição do vetor de objetos de conta) devem ser armazenados o
número de conta, a senha, o saldo da conta e o limite da conta.

Na primeira abordagem do ATM (supondo que ninguém o está utilizando), o sistema deve se
comportar conforme a sequência de eventos abaixo:
1. A tela exibe uma mensagem de boas-vindas e solicita que o usuário insira o número
da conta.
2. O usuário insere um número de conta utilizando o teclado.
3. A tela solicita que o usuário insira sua senha associada com o número de conta
especificado.
4. O usuário insere sua senha utilizando o teclado.
5. Se o usuário inserir um número de conta e senha válido, ou seja, que exista na base
de dados (vetor de objetos conta), a tela exibe o menu principal. Se o usuário inserir
um número inválido de conta ou senha, a tela exibe uma mensagem apropriada e
então o ATM retorna ao Passo 1 para reiniciar o processo de autenticação.
Depois de o ATM autenticar o usuário, o menu principal deve conter uma opção numerada
para cada um dos quatro tipos de transação: consulta de saldos (opção 1), saque (opção 2),
depósito (opção 3) e transferência (opção 4). O menu principal também deve conter uma
opção que permita ao usuário finalizar a sessão do ATM (opção 5). O usuário então opta por
realizar uma transação (inserindo 1, 2, 3 ou 4) ou sair do sistema (inserindo 5).
Se o usuário inserir 1 para fazer uma consulta de saldos, a tela exibe o saldo da conta do
usuário autenticado. Para fazer isso, o ATM deve recuperar o saldo a partir do banco de
dados do banco (recuperar o valor do atributo saldo do objeto conta selecionado no vetor de
objetos conta).
Os passos a seguir descrevem as ações que ocorrem quando o usuário insere 2 para fazer um
saque:
1. A tela exibe um menu que contém valores-padrão de saque: R$ 20,00 (opção 1), R$
40,00 (opção 2) R$ 60,00 (opção 3), R$ 100,00 (opção 4) e outros valores (opção 5). O
menu contém uma opção para permitir que o usuário cancele a transação (opção 6).
A opção 5 exige que o usuário digite o valor do saque.
2. O usuário insere uma seleção no menu utilizando o teclado.
3. Se o valor do saque escolhido for maior que o saldo mais o limite a tela exibe uma
mensagem informando isso e sugerindo que o usuário escolha um valor menor. O
ATM então retorna ao Passo 1 deste menu. Se o valor do saque escolhido for menor
ou igual ao saldo mais a conta do usuário o ATM prossegue para o Passo 4. Se o
usuário optar por cancelar a transação (opção 6), o ATM exibe o menu principal e
espera pela entrada do usuário.
4. O ATM debita o valor do saque na conta do usuário e retorna ao menu principal.
Os passos a seguir descrevem as ações que ocorrem quando o usuário insere 3 para fazer um
depósito:
1. A tela exibe uma mensagem para que o usuário insira um valor de depósito ou que
digita 0 (zero) para cancelar a transação.
2. O usuário insere um valor de depósito ou 0 utilizando o teclado.
3. Se o usuário especificar um valor de depósito o ATM prossegue para o Passo 4. Se o
usuário optar por cancelar a transação (inserindo 0), o ATM exibe o menu principal e
espera pela entrada do usuário.
4. O ATM exibe então o menu principal e espera a entrada do usuário.
Os passos a seguir descrevem as ações que ocorrem quando o usuário insere 4 para fazer
uma transferência:
1. A tela exibe uma mensagem para o usuário informar a conta destino da transferência.
2. O usuário insere a conta destino da transferência utilizando o teclado.
3. O sistema verifica na base de dados (vetor de objetos de conta) se conta destino
existe (processo similar da autenticação). Caso a conta não exista a tela exibe uma
mensagem de conta inexistente e retorna ao menu principal. Caso a conta exista
prossegue para o Passo 4.
4. A tela exibe uma mensagem para o usuário informar o valor da transferência.
5. O usuário insere o valor da transferência utilizando o teclado.
5. Se o valor da transferência for maior que o saldo mais o limite a tela exibe uma
mensagem informando isso e sugerindo que o usuário escolha um valor menor. O
ATM então retorna ao Passo 4 deste menu. Se o valor da transferência for menor ou
igual ao saldo mais o limite da conta do usuário o ATM prossegue para o Passo 6.
6. O ATM debita o valor da transferência na conta origem e deposita na conta destino.
Em seguida retorna ao menu principal.
código fonte:
classe principal
import java.io.IOException;
import java.util.Scanner;

public class AutomatedTellerMachine {

/*
* MÉTODO PRINCIPAL
*
*
*/

public static void main(String[] args) throws IOException {
            float bb=1;
            int p=0;    
Conta[] minhasContas = new Conta[5];
Scanner input = new Scanner ( System.in );

System.out.println("Iniciando ATM ...");

// invoca o método para popular a base (vetor) de contas
// passa por parâmetro o vetor para ser populado e a quantidade de posições
populaVetorContas(minhasContas, 5);

System.out.println("Contas carregadas no ATM ...");
System.out.println("ATM Iniciado! \n");
                float menu=0;
                while(bb==1){
                   menu=0;
                   while(menu!=5){
     System.out.print("Numero da conta: ");
     int num = input.nextInt();
     System.out.print("Senha da conta: ");
     int sen = input.nextInt();

                
                      Conta c = new Conta();

         // busca o numero da conta e a senha na base (vetor de contas)
         boolean achou = false;
     for (int i = 0; i < 5; i++) {

c = minhasContas[i];

if (c.numero == num && c.senha == sen) {
achou = true;
                                 
                                 if(i == 0){
                                    System.out.println("\nBem vindo: Astolfo\n   CPF: 033\n");
                                 }
                                 if(i == 1){
                                    System.out.println("\nBem vindo: Baruk\n   CPF: 034\n");
                                 }
                                 if(i == 2){
                                    System.out.println("\nBem vindo: Rubião\n   CPF: 035\n");
                                 }
                                 if(i == 3){
                                    System.out.println("\nBem vindo: Carlos\n  CPF: 036\n");
                                 }
                                 if(i == 4){
                                    System.out.println("\nBem vindo: Lucas\n   CPF: 037\n");
                                 }
                                 
break;
}
}
                   
// verifica se a busca encontrou ou não o numero e senha de conta
                    
                    if (achou) {
                        while(menu != 5){
                           System.out.println("Digite 1 para Saldo");
                           System.out.println("Digite 2 para Saque");
                           System.out.println("Digite 3 para Depósito");
                           System.out.println("Digite 4 para Transferência");
                           System.out.println("Digite 5 para Encerrar");
                           menu = input.nextInt();

                           if(menu == 1){
                              c.saldo();


                           }
                           if(menu == 2){
                              c.saque();

                           }
                           if(menu == 3){
                              c.deposito();

                           }
                           if (menu == 4){
                               
                             int testa = 0;
                              Conta co = new Conta();



                              do {

                                 System.out.println("Conta de destino: ");
                                  float conta_destino = input.nextInt();
                                  float valor;
                                     for (int i = 0; i < 5; i++){
                                        co = minhasContas[i];
                                        //int p = i;
                                        if (co.numero == conta_destino){
                                               ++testa;
                                               valor = c.transfere();
                                               co.saldo = co.saldo + valor;
                                               c = minhasContas[p];
                                               
                                        }
                                     }
                                   if (testa == 0){
                                      System.out.print("\nConta não encontrada!");
                                      System.out.print("\nDigite novamente a conta de destino\n\n!");

                                   }
                                 
                               }
                            while (testa == 0);
                            }
                        
                       }
                            
                            
                }





else {
System.out.println("\n\n\n\nConta NAO encontrada no ATM\n\n\n\n");
}

            }
         }
            
System.out.println("\nATM Finalizado");

               
}

/*
* MÉTODO POPULA VETOR
*
* Método para criar e popular o vetor com as contas do ATM
*/
public static void populaVetorContas(Conta minhasContas[], int qtdContas) {
                qtdContas=5;
// dados dos objetos conta
// cada posição do vetor corresponde a um objeto Conta
                
int numerosConta[] = {1,2,3,4,5};
int senhasConta[] = {11,22,33,44,55};
float limitesConta[] = {1000,2000,3000,4000,5000};
float saldosConta[] = {10,0,20,100,50};

// dados dos objetos cliente
// cada posição do vetor corresponde a um objeto cliente
// do atributo titular da conta

String nomesCliente[] = {"Astolfo","Baruk","Rubião","Carlos","Lucas"};
int cpfsCliente[] = {033,034,035,036,037};

// define os objetos e atribui ao vetor
for (int i = 0; i < qtdContas; i++) {
// cria objeto conta
Conta conta = new Conta ();
// definie os valores dos atributos
conta.numero = numerosConta[i];
conta.senha = senhasConta[i];
conta.limite = limitesConta[i];
conta.saldo = saldosConta[i];

// cria objeto cliente
Cliente cliente = new Cliente();
// define os valores dos atributos
cliente.nome = nomesCliente[i];
cliente.cpf = cpfsCliente[i];

// define o objeto cliente no atributo titular da conta
conta.titular = cliente;

minhasContas[i] = conta;
}
    }
}
classe conta
import java.io.IOException;
import java.util.Scanner;


public class Conta {

int numero,op=0;
int senha,aux2=1;
float limite;
float saldo;
        int saque =0;
        float deposito;
        float transferencia,transfere;
        float aux;
Cliente titular;

Scanner input= new Scanner(System.in);
        public void saque() throws IOException{
            System.out.println("valor op:"+op);
            while(op != 6){
               op=0;

               System.out.println("Digite 1 para sacar R$20,00");
               System.out.println("Digite 2 para sacar R$40,00");
               System.out.println("Digite 3 para sacar R$60,00");
               System.out.println("Digite 4 para sacar R$100,00");
               System.out.println("Digite 5 para sacar outros valores");
               System.out.println("Digite 6 para voltar ao menu principal");
            
               saque = input.nextInt();
               aux=limite+saldo;
               op=saque;

               if (saque == 1){
                   this.saldo = this.saldo - 20;
                   JEjectDrive ejct = new JEjectDrive();
                   JEjectDrive.main(null);
                   System.out.println("\n\n\n\n\n\n\nRETIRE SEU DINHEIRO E FECHE A BANDEJA\n\n\n\n\n\n\n");
                   break;
               }
               if (saque == 2){
                   this.saldo = this.saldo - 40;
                   JEjectDrive ejct = new JEjectDrive();
                   JEjectDrive.main(null);
                   System.out.println("\n\n\n\n\n\n\nRETIRE SEU DINHEIRO E FECHE A BANDEJA\n\n\n\n\n\n\n");
                   break;            }
               if (saque == 3){
                   this.saldo = this.saldo - 60;
                   JEjectDrive ejct = new JEjectDrive();
                   JEjectDrive.main(null);
                   System.out.println("\n\n\n\n\n\n\nRETIRE SEU DINHEIRO E FECHE A BANDEJA\n\n\n\n\n\n\n");
                   break;
               }
               if (saque == 4){
                   this.saldo = this.saldo - 100;
                   JEjectDrive ejct = new JEjectDrive();
                   JEjectDrive.main(null);
                   System.out.println("\n\n\n\n\n\n\nRETIRE SEU DINHEIRO E FECHE A BANDEJA\n\n\n\n\n\n\n");
                   break;
               }
               if (saque == 5){
                   System.out.println("imforme o valor do saque");
                   saque = input.nextInt();
                   this.saldo = this.saldo - this.saque;
               if (aux>saque){
                    JEjectDrive ejct = new JEjectDrive();
                    JEjectDrive.main(null);
                    System.out.println("\n\n\n\n\n\n\nRETIRE SEU DINHEIRO E FECHE A BANDEJA\n\n\n\n\n\n\n");
                    break;
                }
                if(saque > aux){
                      System.out.println("o valor do saque é maior que seu limite... imforme outro valor");
                      this.saldo = this.saldo+ this.saque;
                      break;


                }
                
            }


               
            }
            }

        public void deposito(){
            System.out.println("\nDigite 0 para sair ");
            System.out.println("Imforme o valor do depósito");
            deposito = input.nextInt();
            this.saldo = this.saldo+ this.deposito;
            System.out.println("Depósito efetuado com sucesso");
        }
        
        public float transfere(){
        float valor=1;


        while(aux2!=0){

            System.out.println("Informe o Valor da Transferência: ");
            Scanner input1= new Scanner(System.in);
            valor = input1.nextFloat();
            //vai o usuario informa o valor para ser transferido
            if (valor > this.saldo+this.limite){
                System.out.println("\nLimite INSUFICIENTE\n");
            }
            if (valor <= this.saldo+this.limite && valor != 0){
                this.saldo = this.saldo - valor;
                System.out.println("\nTransferencia efetuada com sucesso\n");
            } 
            aux2=0;
        }
        return valor;
    }
        public void saldo(){
            System.out.println(this.saldo);
        }
}
classe cliente

public class Cliente {

String nome;
int cpf;
       }
ejeta driver
import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileWriter;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.ArrayList;  
import java.util.List;  
  
/** 
* @author Fagner Granella 
*/  
public class JEjectDrive {
  
    // Array contendo as letras das unidades de CD/DVD  
    private List<String> driver = new ArrayList<String>();  
  
    /** 
     * 
     */  
    public JEjectDrive() {  
        this.getDriver();  
    }  
  
    /** 
     * Método utilizado para executar os scripts em VB. 
     * @param script Código em VB a ser executado. 
     * @return Retorna toda a saída da execução. 
     * @throws java.io.IOException 
     */  
    private String executeVBScript(String script) {  
        String output = "";  
        String line = null;  
  
        try {  
            File f = File.createTempFile("tmp", ".vbs");  
            f.deleteOnExit();  
  
            FileWriter fw = new FileWriter(f);  
            fw.write(script);  
            fw.close();  
  
            Process p = Runtime.getRuntime().exec("cscript //NoLogo " + f.getPath());  
            BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));  
  
            while ((line = input.readLine()) != null) {  
                output += line;  
            }  
  
            input.close();  
        } catch (Exception ex) {  
            ex.printStackTrace();  
        }  
  
        return output;
    }  
  
    /** 
     * Método para checar as unidades existentes. 
     */  
    private void getDriver() {  
        StringBuilder sb = new StringBuilder();  
        sb.append("Const DriveTypeCDROM = 4\n");  
        sb.append("Set oFSO = Wscript.CreateObject(\"Scripting.FileSystemObject\")\n");  
        sb.append("Set oDrives = oFSO.Drives\n");  
        sb.append("For Each Drive in oDrives\n");  
        sb.append("If Drive.DriveType = DriveTypeCDROM Then Wscript.Echo Drive.DriveLetter End If\n");  
        sb.append("Next");  
  
        String dr = executeVBScript(sb.toString());  
  
        for (int i = 0; i < dr.length(); i++) {  
            driver.add(dr.substring(i, i + 1));  
        }  
    }  
  
    /** 
     * Método para abrir/fechar a bandeja do CD/DVD com opção do usuário fecha-lá. 
     * @param drv Letra da unidade para abrir. 
     * @param msg Mensagem perguntando se quer fechar. 
     * @param title Título da Mensagem. 
     */  
    public void eject(String drv, String msg, String title) {  
        if (driver.contains(drv)) {  
            StringBuilder sb = new StringBuilder();  
            sb.append("Set oWMP = CreateObject(\"WMPlayer.OCX.7\")\n");  
            sb.append("Set oCD = oWMP.CdromCollection.getByDriveSpecifier(\"");  
            sb.append(drv);  
            sb.append(":\\\")\n");  
            sb.append("oCD.Eject\n");  
  
            if (msg != null && title != null) {  
                sb.append("If vbOK = MsgBox(\"");  
                sb.append(msg);  
                sb.append("\", vbOKCancel, \"");  
                sb.append(title);  
                sb.append("\") Then\noCD.Eject\nEnd If");  
            }  
  
            String dr = executeVBScript(sb.toString());  
        } else {  
            throw new IllegalArgumentException("Unidade " + drv + " não encontrada");  
        }  
    }  
  
    /** 
     * Método para abrir/fechar a bandeja do CD/DVD. 
     * @param drv Letra da unidade para abrir. 
     */  
    public void eject(String drv) {  
        eject(drv, null, null);  
    }  
  
    /** 
     * Método para abrir todas as bandejas de CD/DVD 
     */  
    public void ejectAll() {  
        StringBuilder sb = new StringBuilder();  
        sb.append("Set oWMP = CreateObject(\"WMPlayer.OCX.7\")\n");  
        sb.append("Set oDrv = oWMP.CdromCollection\n");  
        sb.append("If oDrv.Count >= 1 Then\n");  
        sb.append("For i = 0 To oDrv.Count - 1\n");  
        sb.append("oDrv.Item(i).Eject\n");  
        sb.append("Next\nEnd If");  
  
        String dr = executeVBScript(sb.toString());  
    }  
  
    /** 
     * 
     * @return Retorna as letras das unidades de CD/DVD 
     */  
    public String[] getDrivers() {  
        return driver.toArray(new String[driver.size()]);  
    }  
  
    /** 
     * 
     * @param args 
     */  
    public static void main(String[] args) {  
        JEjectDrive je = new JEjectDrive();  
  
        for (String drv : je.getDrivers()) {  
           /* System.out.println("Unidade encontrada: " + drv);  
            je.eject(drv, "Deseja fechar a gaveta?", "CD/DVD");  */
        }  
  
        je.ejectAll();  
    }  
}


segunda-feira, 5 de dezembro de 2011

Cálculos com matriz

Cálculos com Matriz: Dada uma matriz M, determine a linha de M que possui a maior soma de seus
elementos; Qual o menor elemento de M; Quantos elementos pares M possui; Quantos elementos são
divisíveis por 3.
código fonte abaixo:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int linha,coluna,aux=0,count=0,soma=0,c,valor=0,v=0,menor=0,i,a,result,cont=0;
    int xd=0,pqp=0,cv=0,vc=0,conti=0,x=0,d=0;
    printf("informe a linha ");
    scanf("%d",& linha);
    printf("informe a coluna ");
    scanf("%d",& coluna);
    int mtrx [linha] [coluna];
    result = linha*coluna;
    menor=mtrx [linha] [coluna];
    for ( i=0; i<linha; i++)
    {
       valor=v;
       v=0;
       count=0;
       aux=aux+1;
       for ( a=0; a<coluna; a++)
       {
          count=count+1;
          printf(" linha %d coluna %d " , aux,count );
          scanf("%d",& mtrx [i] [a]);
          xd=mtrx [i] [a];
          x=mtrx [i] [a];
          d=mtrx [i] [a];
          if (xd % 2 ==0)//pares
             {
              cont++;
             }
          if (x % 3 ==0)//divisiveis por 3
             {
              conti++;
             }
          v = v + mtrx [i] [a];//somar as matriz
          if (valor < v)//maior soma
             {
             c = aux ;
             soma = v;
             }
          if ( mtrx [i] [a] < menor )//menor elemento
             {
             menor = mtrx [i] [a];
             }
       }
    }
    printf("\n      Maior soma %d linha %d  ",soma,c);
    printf("\n\n      Menor %d  ",menor);
    printf("\n\n      Tem %d termos a matriz ",result);
    printf("\n\n      Tem %d numeros pares ",cont);
    printf("\n\n      Tem %d numeros divisiveis por 3 \n",conti);
}


Criptografia do tio Elder

Criptografia  do  Tio  Elder:  Você  é  o  programador  mais  experiente  do  FBI  quando  se  trata  de
criptografar mensagens que são enviadas para a INTERPOL e vice‐versa, e você deverá implementar
um programa que tenha a criptografia mais complexa já pensada pelo maior gênio contemporâneo da
computação, Elder Schemberger.
A criptografia embaralha a frase que deve ser enviada com uma frase‐chave digitada pelo usuário,
criando uma terceira frase, a qual poderá ser enviada entre as agencias de segurança sem qualquer
risco de ser lida pelas milícias interessadas em seu conteúdo.
Para embaralhar a string 1 com a string 2 é necessário preencher os índices pares da string 3 com os
elementos da string 1 e os ímpares com os elementos da string 2 até que os elementos de uma das
duas strings termine. Os demais elementos da string 3 serão preenchidos com os elementos da string
restante (seja da frase ou da chave). Espaços devem ser preenchidos com “!”.
Por exemplo:
  Digite a mensagem a ser enviada: Ataque Capanema míssil.
  Digite a chave de criptografia: Sabado chopp gelado.
  String criptografada: AStaabqaudeo!!Ccahpoapnpe!mgae!lmaídsosil.

Seu programa deve fazer esse processo de criptografia e o processo de decriptografia. Escolha isso
com  um  menu  no  início  do  programa  (Claro,  não  é  possível  decriptografar  se  não  há  algo
criptografado! Trate isso!).
Código fonte abaixo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
    int tamanho_mensagem=0, tamanho=0,tamanho_pchave=0,i=0,pospar=0,posimpar=0,pos1=0,pos2=0;
    char mensagem[100],pchave[100],pchave1[100],cripto[200],cripto2[200],cripto3[200];
    printf("Digite a Frase: ");
    gets(mensagem);
    tamanho_mensagem = strlen(mensagem);
    printf("\nDigite a Palavra Chave: ");
    gets(pchave);
    tamanho_pchave = strlen(pchave);
    tamanho = tamanho_mensagem + tamanho_pchave;
    for (i=0;mensagem[i]!='\0';i++)
    {
        if (mensagem[i] == ' ')
        {
            mensagem[i] = '!';
        }
        if (i<=tamanho_pchave)
        {
            pospar=i*2;
            cripto[pospar]=mensagem[i];
        }
        if (i>tamanho_pchave)
        {
                pospar++;
                cripto[pospar]=mensagem[i];
        }
    }
    for (i=0; pchave[i]!='\0'; i++)
    {
        if (pchave[i] == ' ')
        {
            pchave[i] = '!';
        }
        if(i==0)
        {
            cripto[1]=pchave[i];
        }
        if (i<=tamanho_mensagem)
        {
            if (i>0)
            {
                posimpar = (i*2)+1;
                cripto[posimpar]=pchave[i];
            }
        }
        if (i>=tamanho_mensagem)
        {
            cripto[posimpar-1]=pchave[i];
            posimpar++;
        }
        if(tamanho_mensagem==0)
        {
        cripto[0]=' ';
        }
    }
    cripto[tamanho] = '\0';
    for (i=0;cripto[i]!='\0';i++)
    {
        if((i<tamanho_mensagem) && (i<tamanho_pchave))
        {
        pospar = i * 2;
        cripto2[i]=cripto[pospar];
        posimpar = (i*2)+1;
        cripto3[i]=cripto[posimpar];
        pos1 = i + 1;
        pos2 = i + 1;
        }
        if((tamanho_mensagem>tamanho_pchave) && (i>=tamanho_pchave))
        {
            posimpar++;
            cripto2[i]=cripto[posimpar];
            pos1 = i + 1;
        }
       if((tamanho_pchave>tamanho_mensagem) && (i>=tamanho_mensagem))
       {
       posimpar++;
       cripto3[i]=cripto[posimpar];
       pos2 = i + 1;
       }
       if(cripto2[i]=='!')
       {
       cripto2[i] = ' ';
       }
       if(cripto3[i]=='!')
       {
       cripto3[i] = ' ';
       }
    }
    cripto2[pos1] = '\0';
    cripto3[pos2] = '\0';
    printf("\nA Palavra Criptografada e:\n %s",cripto);
    printf("\nA Mensagem informada descriptografada e:\n %s ", cripto2);
    printf("\nA Chave de descriptografia e:\n %s ", cripto3);
}


Brincando com Matriz

Brincando com matriz: Seja a seguinte declaração float numeros[LINHA][COLUNA]. Escrever um
programa capaz de:
• Ler os elementos da matriz.
• Identificar o número de elementos iguais a zero em cada uma das linhas.
• Identificar o número de elementos iguais a zero em cada uma das colunas.
• Identificar o número de elementos pares em determinada linha (lida)
• Identificar o número de elementos pares em determinada coluna (lida)
• Calcular a média aritmética dos elementos de cada uma das linhas, armazenando esses valores em
um vetor.
• Identificar a linha que tem a maior media de seus elementos.
• Imprimir todos os resultados.
conforme código fonte abaixo:

int main()
{
    int i,j,l=0,cont=0,cont2=0,aux=0, contador=0,cont3=-1, aux4=0,contar=0;
    int cont4=-1,cont5=0,valor, cont6=-1,aux2=0,cont7=-1, posicao=0, posi=0,cont8=1;
    float media1=0,maior=0,soma=0, valor2=0;

    printf("informe a linha ");
    scanf("%d",& i);
    printf("informe a coluna ");
    scanf("%d",& j);
    if ((i != 0) && (j != 0))
    {
        float numeros[i][j];
        float zero[i];
        float colunazero[j];
        int par[i];
        int parCol[j];
        float media[i];
        for (int c=0;c<j; c++)
        {
            colunazero[c]=0;
            parCol[c]=0;
        }
        for (int n=0;n<i; n++)
        {
            cont=cont+1;
            cont2=0;
            aux=0;
            cont6=-1;
            cont8=-1;
            aux2=0;
            soma=0;
            media1=0;
                for (int c=0;c<j; c++)
                {
                    cont2=cont2+1;
                    printf(" linha %d  coluna %d: ", cont,cont2);
                    scanf("%f", &numeros[n][c]);
                    cont6=cont6+1;
                    cont8=cont8+1;
                    cont5=0;
                    cont7=0;
                    valor=numeros[n][c];
                    valor2=numeros[n][c];
                    if (valor == 0)
                    {
                        aux=aux+1;
                        cont5=cont5+1;
                    }
                    colunazero[cont6]= cont5 + colunazero[cont6];
                    if (valor % 2 == 0)
                    {
                        aux2=aux2+1;
                        cont7=cont7+1;
                    }
                    parCol[cont8]=cont7 + parCol[cont8];
                    soma=soma+valor2;
                }
                if (aux > 0)
                {
                    zero[n]=aux;
                    aux4=aux4+1;
                }
                else
                {
                    zero[n]=0;
                }
                aux=0;
                if (aux2 > 0)
                {
                    par[n]=aux2;
                }
                else
                {
                    par[n]=0;
                }
                media1=(soma/j);
                media[n]=media1;
                if (media1 > maior)
                {
                    maior=media1;
                    l=cont;
                }
        }
        do
        {
            printf("\nem que linha deseja saber os pares\n");
            scanf("%d", &posicao);
            posi=posicao-1;
            if (posicao > i)
            {
                printf("\n NAO POSSUI ESTA LINHA, INFORME NOVAMENTE:\n");
            }
        }while(posicao > i);
        int posicao2=0;
        int posi2=-1;
        do
        {
            printf("\nem que coluna deseja saber os pares\n");
            scanf("%d", &posicao2);
            posi2=posicao2-1;
            if (posicao2 > j)
            {
                printf("\nNAO PUSSUI ESTA COLUNA, INFORME NOVAMENTE\n");
            }
        }while(posicao2 > j);
        do
        {
            cont3=cont3+1;
            contador=contador+1;
            if (zero[cont3] > 0)
            {
                printf("\nA linha %d contem %.0f elementos iguais a zero.",contador, zero[cont3]);
            }
            else
            {
                printf("\nA linha %d NAO contem elementos iguais a zero.", contador);
            }

        } while (contador < i);
        do
        {
            cont4=cont4+1;
            contar=contar+1;
            if (colunazero[cont4] > 0)
            {
                printf("A coluna %d tem %.0f elementos iguais a zero.\n", contar, colunazero[cont4]);
            }
            else
            {
                printf("A coluna %.0d NAO tem elementos iguais a zero.\n", contar);
            }

        } while (contar < j);
        if (par[posi] < 1)
        {
            printf("\nA linha %.0d NAO tem numeros pares.\n", posicao);
        }
        else
        {
            printf("\nA linha %d tem %d numeros pares.\n ", posicao, par[posi]);
        }
        if (parCol[posi2] > 0)
        {
            printf("\nA coluna %d contem %d numeros pares.\n ", posicao2, parCol[posi2]);
        }
        else
        {
            printf("\nA coluna %d nao cotem numeros pares.\n", posicao2);
        }
        int contar2=0,cont9=-1;
        do
        {
            contar2=contar2+1;
            cont9=cont9+1;
            printf("A media da linha %d é %.2f.\n", contar2, media[cont9]);
        } while (contar2 < i);
        printf("\nA linha com a maior media eh a %.0d com valor de %.2f.\n", l,maior);
       }
    else
    {
        printf("\nOS VALORES INFORMADOS NÃO FORMAM MATRIZ.\n");
    }
}