Agenda usando arquivo em C/C++


#include <stdio.h>
#include <stdlib.h>
#include <iostream>

#define Capacidade_Maxima_da_Agenda 5

// Autor: Mathias Santos Assis

 /*Este programa permite a gravação em arquivo
 de no máximo 5 contatos.

 Ao escolher a opção 1 do menu principal,
 o usuário deverá preencher os campos
 exibidos. As informações obtidas irá
 posteriormente ser gravadas no arquivo.

 Ao escolher a opção 2 do menu principal,
 se não existe pelo menos 1 contato em arquivo,
 uma mensagem informativa irá ser exibida para o usuário.
 Caso o contrário, se buscará no arquivo todos
 os contatos salvos e exibirá na tela.

 Quando o programa é executado, primeiramente se
 procura saber quantos contatos se tem salvo.

 Se já tiver, por exemplo 4 contatos salvos, e
 o programa for executado, ao escolher a primeira
 opção do menu principal (Inserir um cadastro),
 o cadastrado será o quinto contato.

 Se já tiver, por exemplo 5 contatos salvos
 (número limites de contatos), e o programa
 for executado, ao selecionar a primeira opção,
 uma mensagem para avisar o usuário que a
 agenda já está cheia.
 */



 // Registro
 struct Aluno{
    char nome[80];
    int idade;
    char telefone[15];
    char celular[15];
    char endereco[255];
 };


 void Imprime(Aluno reg);
 Aluno ler();

 FILE *Arq_Agenda;


 int main(){
    
     struct Aluno contato;
    
     int op=0;
     int Quantidade_de_Contatos_no_Arquivo=0;
     int Numero_do_Cadastrado;
     int Capacidade = 0;
    
     /*O modo de abertura (a+), permite anexar novos dados ou criar um
     arquivo de texto para operações de leitura e de escritas*/
     // Mude o diretório conforme suas necessidades ou preferência

     Arq_Agenda=fopen ("C:\\Users\\Cliente\\Desktop\\Arquivando.txt","a+");
    
     if(Arq_Agenda!=NULL){
       
        fread(&contato,sizeof(Aluno),1,Arq_Agenda);
    
        // Verificando o número de Pessoas cadastradas       
        while(!feof(Arq_Agenda)){                                                         
           fread(&contato,sizeof(Aluno),1,Arq_Agenda);
           // Quantidade_de_Contatos_no_Arquivo armazenará a quantidade de contatos salvo no arquivo
           Quantidade_de_Contatos_no_Arquivo++;
        }
       
     } fclose(Arq_Agenda);
    
     if (Quantidade_de_Contatos_no_Arquivo!=0) Capacidade=1;

      while (op!=3){
        system("CLS");
       
        printf("\n Numero de pessoas ja cadastras.: %d\n",Quantidade_de_Contatos_no_Arquivo);
        printf(" Capacidade Maxima da Agenda....: 5\n\n");
       
        // Menu principal
        printf(" 1 - Inserir contato\n");
        printf(" 2 - Imprimir todos contatos\n");
        printf(" 3 - Sair\n\n");
       
        printf(" Digite a opcao: ");
        scanf("%d",&op);
       
         switch (op){
            case 1:
                if(Quantidade_de_Contatos_no_Arquivo<Capacidade_Maxima_da_Agenda){
                    Arq_Agenda=fopen ("C:\\Users\\Cliente\\Desktop\\Arquivando.txt","a+");
                    contato=ler();
                    // Gravando no arquivo
                    fwrite (&contato,sizeof(Aluno),1,Arq_Agenda);
                    fclose(Arq_Agenda);
                    Quantidade_de_Contatos_no_Arquivo++; Capacidade=1;
                } else {printf("\n\tAGENDA CHEIA!\n\n "); system("pause");}
            break;
           
            case 2:
                
                 Arq_Agenda=fopen ("C:\\Users\\Cliente\\Desktop\\Arquivando.txt","a+");
                
                 if(Capacidade==0){
                    printf("\n\tNENHUM CONTATO CADASTRADO AINDA!\n\n ");
                    system("pause");
                 }
                 else{
                    Numero_do_Cadastrado=0;
                   
                    // Lendo o arquivo
                    fread(&contato,sizeof(Aluno),1,Arq_Agenda);
                   
                    // Enquanto o fim do arquivo não seja encontrado...
                    while(!feof(Arq_Agenda)){ 
                                                              
                       printf("\n============= %d CONTATO ============\n",Numero_do_Cadastrado+1);
                       Imprime(contato);
                       fread(&contato,sizeof(Aluno),1,Arq_Agenda);
                       Numero_do_Cadastrado++;
                      
                       // Ocorreu algum erro durante o uso do arquivo?
                       if(ferror(Arq_Agenda))
                          printf("\nErro na leitura\n");
                       else printf("\nLeitura realizada com sucesso\n");
                   
                       system("PAUSE");
                    } 
                } fclose(Arq_Agenda);
            break;
         }
     }

  return 0;
 }


 void Imprime(Aluno reg){
    printf("  Nome......: %s\n", reg.nome);
    printf("  Idade.....: %d\n", reg.idade);
    printf("  Telefone..: %s\n", reg.telefone);
    printf("  Celular...: %s\n", reg.celular);
    printf("  Endereco..: %s\n", reg.endereco);
 }


 Aluno ler(){
      
    struct Aluno temp;
   
     printf("\n  Nome......: ");
     scanf("%s",&temp.nome);
    
     printf("  Idade.....: ");
     scanf("%d",&temp.idade);
    
     printf("  Telefone..: ");
     scanf("%s",temp.telefone);
    
     printf("  Celular...: ");
     scanf("%s",temp.celular);
    
     printf("  Endereco..: ");
     scanf("%s",temp.endereco);
    
     printf("\n   Contato cadastrado!\n");
    
     system("pause");
    
    return temp;




Palavras-Chaves: Agenda, arquivo, fopen, diretório, feof, fread, sizeof, fclose, struct, Nome, Idade, Telefone, Celular, Endereço, C/C++.

Nota.: Deve-se alterar o diretório do arquivo.


Artigos relacionados em C/C++:




Feito no Dev C++ 4.9.9.2 | Executável




Feito no Dev C++ 4.9.9.2 | Executável

Obtendo o IP do computador em C/C++

#include <stdlib.h>

int main(void) {
    
    /*
    Site: https://programjm.blogspot.com.br/
    Author: Mathias Santos Assis.
    Creation date: 13/01/2013.
    Last updated: 05/07/2016.
    Description: Imprimi o IP (Internet Protocol) do computador.
    */
    
    
    // Atribuindo um título a janela.
    system("title IP do Computador");
    
    // Imprimindo o IP do computador.
    system("ipconfig");
    
    // Interrompendo a execução do programa.
    system("pause");
    
    return 0;
}





Internet Protocol
IP - Internet Protocol.



Nota: Programa feito para Sistema Operacional Windows.



Palavras-Chaves: Internet Protocol, Endereço de IP, Biblioteca stdlib.h, Programação em C/C++.




Jogo da Forca em Java

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;

/*O Jogo da Forca consiste em adivinhar uma determinada palavra.
É conveniente jogar com dois jogadores, alternadamente.
O Jogador_1 pode começar escolhendo uma palavra (de preferência difícil)
ao qual deverá ser adivinhada, sendo que está deverá ter tamanho
(ou seja, quantidade de letras) entre 1 (inclusive) e 12 (inclusive).


O jogador_2 responsável por adivinhar a palavra, começa dando um palpite
da letra que pode fazer parte da palavra secreta podendo errar até sete
vezes, após isso será decretada a derrota.


Evite o uso de palavras acentuadas. Caso seja selecionada a letra A, por exemplo, e
na palavra misteriosa existir Ã, está última não irá ser considerada.


A cada erro uma parte da cabeça de um boneco é desenhada na tela, cabeça, olhos, boca...

Para o jogador_2 sair vitorioso ele deverá preencher todos os campos com as letras corretas,
ou caso este já saber a palavra a ser adivinhada pode clicar em um botão especial no qual
aparecerá uma caixa de diálogo, pedindo-lhe digitar a palavra correta, se for digitado
uma palavra incorreta é informada a derrota, caso contrário a vitória.*/


public class JogoDaForca extends JFrame{
   
   
    String Lista[] = {" " ,"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
                        "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
                        "U", "V", "W", "X", "Y", "Z"};
   
    private JToolBar Barra_Ferramenta = new JToolBar();
    private JLabel MSN = new JLabel(" Escolha uma Letra: ");
    private JButton Novo_Jogo = new JButton("Novo Jogo");
    private JComboBox Opcao = new JComboBox(Lista);
    private JLabel Ultima_Letra_Escolhida = new JLabel(" Utima Letra Escolhida: ");
    private JTextField Text_Letra = new JTextField();
    private JButton Palavra = new JButton("Ja sei a palavra certa!");
   
   
    // Definindo o layout da Janela
    private GridLayout Layout = new GridLayout(2,1);
    private JPanel Geral = new JPanel();
    private JPanel Panel_de_Controle = new JPanel();
    private JLabel Letra[] = new JLabel[12];
    private Enforcado Panel_da_Animacao = new Enforcado();
   
    // Barra de Status informando o número de erros do Jogador
    private JLabel Barra_de_Status = new JLabel("  Numero de Letra(s) errada(s): 0");
   
   
   
    public JogoDaForca(){
        super("Jogo da Forca");

        // Adicionando os componentes a Barra de Ferramenta
        Barra_Ferramenta.add(Novo_Jogo);
        Barra_Ferramenta.add(MSN);
        Barra_Ferramenta.add(Opcao);
        Barra_Ferramenta.add(Ultima_Letra_Escolhida);
        Barra_Ferramenta.add(Text_Letra);
        Barra_Ferramenta.add(Palavra);
        add(Barra_Ferramenta, BorderLayout.NORTH);
       
       
        // Configurações Iniciais
        for (int i=0; i<12; ++i){
            Letra[i] = new JLabel("__");
            Panel_de_Controle.add(Letra[i]);
            Letra[i].setFont(new Font("Serif" , Font.BOLD, 48)); 
            Letra[i].setVisible(false);
        }
       
       
        Geral.setLayout(Layout);
        Geral.add(Panel_de_Controle);
        Geral.add(Panel_da_Animacao);
        add(Geral);
       
        Barra_de_Status.setFont(new Font("Serif", Font.BOLD, 14));
        Barra_de_Status.setHorizontalAlignment(SwingConstants.LEFT);
        add(Barra_de_Status, BorderLayout.SOUTH);
       
       
            Opcao.setEnabled(false);
            Text_Letra.setEnabled(false);
            Palavra.setEnabled(false);
       
           
        Eventos_JogoDaForca Eventos = new Eventos_JogoDaForca();
        Novo_Jogo.addActionListener(Eventos);
        Palavra.addActionListener(Eventos);
        Opcao.addItemListener(Eventos);
    
 }  
   
   
   
    private class Eventos_JogoDaForca implements ActionListener, ItemListener{
       
        private String Palavra_Misteriosa, Palavra_Certa;
        int Tamanho_da_Palavra_Misteriosa, Letras_Encontradas, Numeros_de_Erros, Campos_Nao_Preenchidos;
        int Exibir_Messagem=0;
       
        public void actionPerformed (ActionEvent event){
           
            // Inicializando um novo Jogo
            if (event.getSource() == Novo_Jogo){
               
                Exibir_Messagem=0;
                Numeros_de_Erros = 0;
               
                Habilitando_Desabilitando_Componentes(false);
               
                for (int i=0; i<Tamanho_da_Palavra_Misteriosa; ++i)
                    Letra[i].setVisible(false);
               
                Palavra_Misteriosa = JOptionPane.showInputDialog(JogoDaForca.this, "Qual nome deve ser advinhado?");
               
                if(Palavra_Misteriosa != null){
               
                    if ((Palavra_Misteriosa.length() > 12) || (Palavra_Misteriosa.length() <= 0))
                        JOptionPane.showMessageDialog(
                                JogoDaForca.this, "A palavra escolhida deverá ter no mímimo 1 e no máximo 12 caracteres!",
                            "Menssagem", JOptionPane.PLAIN_MESSAGE);
                    else{
               
                        Habilitando_Desabilitando_Componentes(true);
                        Tamanho_da_Palavra_Misteriosa = Palavra_Misteriosa.length();
                   
                        for (int i=0; i<Tamanho_da_Palavra_Misteriosa; ++i){
                            Letra[i].setVisible(true);
                            Letra[i].setText("__");
                        }
                    }
                }
            }
           
           
           
            // Caso já se saiba a palavra a ser adivinhada
            if (event.getSource() == Palavra){
               
                Palavra_Certa = JOptionPane.showInputDialog(JogoDaForca.this, "Qual é a palavra?");
           
                if (Palavra_Certa != null){
                    Exibir_Messagem=1;
                    // Caso a palavra digitada estiver correta...
                    if ((Palavra_Misteriosa.toUpperCase()).equals(Palavra_Certa.toUpperCase())){
                       
                        // ... será atualizado o campo de exibição (palavra certa irá ser mostrada na tela)
                        for (int i=0; i<Tamanho_da_Palavra_Misteriosa; ++i)
                            Letra[i].setText("" + Palavra_Misteriosa.toUpperCase().charAt(i));
                       
                        Vencir();
                       
                    } else Perdir();
                   
                    Habilitando_Desabilitando_Componentes(false);
                }
            }
        }
       
        public void itemStateChanged(ItemEvent event){
            if(event.getStateChange() == ItemEvent.SELECTED){
               
                // Exibindo a última letra selecionada
                Text_Letra.setText("" + Opcao.getSelectedItem());
               
               
                Letras_Encontradas = 0;
                // Verificando se a letra selecionada é existente na palavra misteriosa
                for (int i=0; i<Tamanho_da_Palavra_Misteriosa; ++i){
                    if (Text_Letra.getText().charAt(0) == Palavra_Misteriosa.toUpperCase().charAt(i)){
                       Letra[i].setText("" + Text_Letra.getText().charAt(0));
                       Letras_Encontradas++;
                    }
                }
               
               
                Campos_Nao_Preenchidos = 0;
                for (int i=0; i<Tamanho_da_Palavra_Misteriosa; ++i)
                    if (Letra[i].getText() != "__") Campos_Nao_Preenchidos++;
               
                if ((Campos_Nao_Preenchidos == Tamanho_da_Palavra_Misteriosa) && (Exibir_Messagem==0)){
                   
                        Habilitando_Desabilitando_Componentes(false);
                        Exibir_Messagem = 1;
                        Vencir();
                   
                } else{
               
                    /* Caso a letra selecionada pelo Jogador não faça parte da
                    palavra misteriosa será contabilizado erro*/
                    if ((Letras_Encontradas == 0) && (Exibir_Messagem==0)){
                   
                        Numeros_de_Erros++; // Incrementando variável
                        // Desenhando animação
                        Panel_da_Animacao.setErro(Numeros_de_Erros);
                        // Atualizando o número de erros
                        Barra_de_Status.setText(" Numero de Letra(s) errada(s): " + Numeros_de_Erros);
                   
                        if (Numeros_de_Erros == 7){
                            Habilitando_Desabilitando_Componentes(false);
                            Perdir();
                        }
                    }
                }
            }
        }
       
       
        public void Habilitando_Desabilitando_Componentes(boolean parametro){
            /* Quando parâmetro for verdadeiro os componetes abaixo
            estaram ativados, ao contrário desativados*/
            Opcao.setEnabled(parametro);
            Text_Letra.setEnabled(parametro);
            Palavra.setEnabled(parametro);
        }
       
        public void Vencir(){     
            JOptionPane.showMessageDialog(JogoDaForca.this, "Parabéns!!!"); 
            Atualizar();
        }
   
   
        public void Perdir(){
            JOptionPane.showMessageDialog(JogoDaForca.this, "Você falhou! \n Tente Novamete!");
            Atualizar();
        }
   
        public void Atualizar(){
            Panel_da_Animacao.setErro(7);
            Text_Letra.setText("");
            Opcao.setSelectedIndex(0);
            Barra_de_Status.setText(" Numero de Letra(s) errada(s): 0");
        }
 }
   
   
   
   
   
   
   
 
  class Enforcado extends JPanel{
   
    private int Erros;
   
        void setErro(int Numeros_de_Erros) {
            Erros = Numeros_de_Erros;
        } 
           
        public void paintComponent(Graphics g){
            super.paintComponents(g);

            if (Erros == 1){
                g.fillOval(5,5,205,205);
                repaint();
            }
           
            if (Erros == 2){
                g.fillOval(5,5,205,205);
                g.setColor(Color.WHITE);
                g.fillOval(55,65,30,30); 
                repaint();
            }
           
            if (Erros == 3){
                g.setColor(Color.BLACK);
                g.fillOval(5,5,205,205);
                g.setColor(Color.WHITE);
                g.fillOval(55,65,30,30);
                g.fillOval(135,65,30,30);
                repaint();
            }
           
            if (Erros == 4){
                g.setColor(Color.BLACK);
                g.fillOval(5,5,205,205);
                g.setColor(Color.WHITE);
                g.fillOval(55,65,30,30);
                g.fillOval(135,65,30,30);
                g.fillOval(50,110,120,60);
                repaint();
            }
           
            if (Erros == 5){
                g.setColor(Color.BLACK);
                g.fillOval(5,5,205,205);
                g.setColor(Color.WHITE);
                g.fillRect(45,65,30,8);
                g.fillOval(55,65,30,30);
                g.fillOval(135,65,30,30);
                g.fillOval(50,110,120,60); 
                repaint();
            }
           
            if (Erros == 6){
                g.setColor(Color.BLACK);
                // Desenhando a cabeça
                g.fillOval(5,5,205,205);
                g.setColor(Color.WHITE);
                // Desenhando a primeira sobrancelha
                g.fillRect(45,65,30,8);
                // Desenhando o primeiro olho
                g.fillOval(55,65,30,30);
                // Desenhando a segunda sobrancelha
                g.fillRect(125,65,30,8);
                // Desenhando o segundo olho
                g.fillOval(135,65,30,30);
                // Desenhando a boca
                g.fillOval(50,110,120,60);
                repaint();
            }
           
            // Limpa o Panel
            if (Erros == 7){
                g.clearRect(0,0,250,250);
                repaint();
            }
        }
    } 
 
    public static void main(String[] args){
   
        // Propriedades da Janela
        JogoDaForca Propriedades = new  JogoDaForca();
        Propriedades.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Propriedades.setSize(800,520);
        Propriedades.setVisible(true);
        Propriedades.setResizable(false);
        Propriedades.setLocationRelativeTo(null);
    }
}



Palavras-Chaves: Jogo da Forca, Novo Jogo, Palavra Misteriosa, JOptionPane, Escolhendo uma letra, Enforcado, Número de erros, Já sei a palavra certa, Vencir, Perdir, Atualizando, Java.


Artigos relacionados em Java:



Feito no NetBeans-5.5.1 | Executável



Feito no NetBeans-5.5.1 | Executável


Feito no NetBeans-5.5.1 | Executável



Cálculo da Nota Final em C/C++

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    
    /*
    Site: http://programjm.blogspot.com.br/
    Author: Mathias Santos Assis.
    Creation date: 03/01/2013.
    Last updated: 26/06/2016.
    Description: Recebe as três notas tiradas pelo usuário ao longo do semestre
    e calcula a sua média, informando sua situação (Aprovado ou Reprovado).
    Caso o aluno tenha direito a fazer a prova final, o software informará
    a nota mínima a ser obtida para conseguir a aprovação na disciplina.
    */
    
    
    // Declarando as variáveis do tipo float.
    float primeiraNota, segundaNota, terceiraNota;
    float media;
    
    printf("\n\t\tCalculo da Nota Final.\n\n");
    
    // Inicializando a variável para entrar no laço de repetição (while).
    primeiraNota = -1;
    // O programa só considera válidas as notas entre 0 à 10.
    while ((primeiraNota < 0) || (primeiraNota > 10)) {
        printf(" Primeira Nota.: ");
        scanf("%f", &primeiraNota);
    }
    
    segundaNota = -1;
    while ((segundaNota < 0) || (segundaNota > 10)) {
        printf(" Segunda Nota..: ");
        scanf("%f", &segundaNota);
    }
    
    terceiraNota = -1;
    while ((terceiraNota < 0) || (terceiraNota > 10)) {
        printf(" Terceira Nota.: ");
        scanf("%f", &terceiraNota);
    }
    
    
    /*
    Exibi as três notas válidas informada pelo usuário.
    Esta linha é útil caso o usuário insira notas inválidas (menor que zero e
    maior que dez), fazendo assim, uma confirmação das notas válidas inseridas.
    */
    printf("\n\n\tNotas: %.2f\t%.2f\t%.2f\n", primeiraNota, segundaNota, terceiraNota);
    // Armazenando a Média das três notas em uma variável.
    media = (primeiraNota + segundaNota + terceiraNota) / 3;
    printf("\n\n\tMedia: %4.2f\n\n", media);
    
    
    /*
    Após calcular e exibir a média, é necessário informar ao estudante 
    a sua situação na disciplina. Neste programa, assim como em muitas 
    universidades (faculdades ou instituições de ensino superior), o aluno
    é considerado aprovado caso sua média seja igual ou superior a sete pontos.
    */
    if (media >= 7)
        printf("\tAPROVADO!\n\n");
    
    /*
    Caso a média esteja entre o intervalo aberto de 7 a 2.5, o estudante está
    reprovado, porém credenciado a fazer a prova final. Nesta referida avaliação
    o estudante deverá tirar no mínimo a nota informada na variável notaDaProvaFinal.
    */
    if ((media < 7) && (media > 2.5)) {
        printf("\tREPROVADO - COM DIREITO A PROVA FINAL!\n");
        float notaDaProvaFinal = 15 - 2 * media;
        printf("\tNota minima a ser tirada no exame: %4.2f\n\n", notaDaProvaFinal);
    }
    
    /*
    Se a média das três avaliações for inferior a 2.5, o aluno estará 
    automaticamente reprovado na disciplina, devendo repeti-la novamente.
    */
    if (media <= 2.5)
        printf("\tREPROVADO - SEM DIREITO A PROVA FINAL!\n\n");
    
    system("pause");
    return 0;
}




Aluno aprovado!
Feito no Dev C++ 4.9.9.2 | Executável



Aluno reprovado com direito a prova final!
Feito no Dev C++ 4.9.9.2 | Executável



Aluno reprovado sem direito a prova final!
Feito no Dev C++ 4.9.9.2 | Executável



Palavras-Chaves: Semestre, Disciplina, Média de três notas, Exame, Aprovado, Reprovado, Prova final, Estrutura de Seleção, Laço de Repetição, Programação em C/C++.



Artigos relacionados em C/C++: