Ir para conteúdo
Fórum Script Brasil

Alan Correa

Membros
  • Total de itens

    10
  • Registro em

  • Última visita

Tudo que Alan Correa postou

  1. Olá pessoal, tenho um tarefa da faculdade para realizar: Criar um protocolo, em java com algumas regras: 1. Desenvolver um aplicativo que receba uma mensagem (“String”) e coloque a mesma dentro de um protocolo proprietário (Transmissor). 2. Desenvolver um aplicativo que recebe uma mensagem com o protocolo proprietário e consiga extrair somente a mensagem transmitida (Receptor). 3. A mensagem só pode ter no máximo 16 Mbytes. 4. A transmissão e a recepção podem ser gravadas em arquivo, dessa forma simulando a comunicação. 5. O endereço do transmissor e do receptor deve ser configurável. Regras: Protocolo: Cabeçalho Mensagem Finalizador Checksum 17 bytes n Bytes 2 bytes 1 byte Cabeçalho: Início de cabeçalho = só  0x01 Byte de Sincronia SYN  0x16 Endereço de Origem = 4 bytes Endereço de Destino = 4 bytes Tamanho da Mensagem = 2 bytes – 00 até FFFF – tamanho máximo 64 kB Número de seqüencia = 2 bytes Tipo de Mensagem = 1 byte Checksum cabeçalho = 1 byte  calculado Início da Mensagem = STX  0x02 Finalizador1 = ETX  0x03 (indica o final da mensagem) Finalizador2 = EOT  0x04 (indica o final da transmissão) Checksum = 1 byte calculado. Número de seqüencia  é o campo que indica a ordem de seqüência da mensagem. Tipo de mensagem  indica qual é o tipo de mensagem que está sendo enviada. Os tipos de mensagem são os seguintes: Tipo Significado Caractere Resposta Esperada NRM Mensagem normal 0x00 ACK / NACK URG Mensagem urgente 0x05 ACK / NACK ACK Mensagem aceita 0x06 - PSH Coloca mensagem no buffer ou confirma recebimento da mensagem 0x0F ACK / NACK RST Re-inicializa a comunicação 0x18 ACK / NACK Segue o que eu já consegui comunicar, porém não está com todas as regras. Alguém pode me ajudar nas alterações? package servidor; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; public class ScreenServidor extends javax.swing.JFrame { private ServerSocket Servidor; private Socket sComunica; private BufferedInputStream is; private BufferedOutputStream os; /** Creates new form ScreenServidor */ public ScreenServidor() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jButton1 = new javax.swing.JButton(); textArea1 = new java.awt.TextArea(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Servidor"); jButton1.setText("Conecta"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); textArea1.setEditable(false); jLabel1.setText("Porta:"); jTextField1.setText("8000"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(textArea1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE) .addComponent(jButton1) .addComponent(jLabel1) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textArea1, javax.swing.GroupLayout.PREFERRED_SIZE, 236, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton1) .addContainerGap()) ); pack(); }// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try { Servidor = new ServerSocket(Integer.parseInt(jTextField1.getText().toString())); sComunica = Servidor.accept(); if(sComunica != null) { is = new BufferedInputStream(sComunica.getInputStream()); os = new BufferedOutputStream(sComunica.getOutputStream()); jTextField1.setEnabled(false); jButton1.setEnabled(false); textArea1.setText("Conectado! "+sComunica.getInetAddress().toString()); textArea1.append("\n"); ServidorOuve(); } } catch (IOException ex) { Logger.getLogger(ScreenServidor.class.getName()).log(Level.SEVERE, null, ex); } } private void ServidorOuve() throws IOException { byte[] re = new byte[1024]; String sLinha = null; int nCount=0; while(true) { try { nCount = is.read(re, 0, re.length); } catch (IOException ex) { Logger.getLogger(ScreenServidor.class.getName()).log(Level.SEVERE, null, ex); } sLinha = new String(re,0,nCount); textArea1.append(sLinha+"\n"); if(sLinha.contains("quit")) { ServidorResponde("Sevidor desconectado!"); break; } else if(sLinha.startsWith("dir")) { File Dir = new File("."); File[] Arquivos = Dir.listFiles(); for(int i = 0; i < Arquivos.length; i++) ServidorResponde(Arquivos[i].toString()); ServidorResponde("fim"); } else if(sLinha.startsWith("del")) { boolean merda; String sDeleteFile = sLinha.substring(4); File DelFile = new File(sDeleteFile); if(DelFile.delete()) ServidorResponde("Arquivo deletado!"); else ServidorResponde("Arquivo não encontrado!"); } else if(sLinha.startsWith("explorer")) { Process p = Runtime.getRuntime().exec("cmd /c "+sLinha); ServidorResponde("explorer executado!"); } else if(sLinha.startsWith("cls")) { textArea1.append("Limpando a tela do Cliente!\n"); } else { ServidorResponde("Comando inválido!"); } } jButton1.setEnabled(true); jTextField1.setEnabled(true); try { is.close(); os.close(); sComunica.close(); textArea1.append("Desconectado!\n"); } catch (IOException ex) { Logger.getLogger(ScreenServidor.class.getName()).log(Level.SEVERE, null, ex); } } private void ServidorResponde(String sResposta){ byte[] re = new byte[1024]; re = sResposta.getBytes(); try { os.write(re, 0, sResposta.length()); os.flush(); } catch (IOException ex) { Logger.getLogger(ScreenServidor.class.getName()).log(Level.SEVERE, null, ex); } } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new ScreenServidor().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JTextField jTextField1; private java.awt.TextArea textArea1; // End of variables declaration } /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /* * ScreenClient.java * */ package cliente; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author */ public class ScreenClient extends javax.swing.JFrame { private Socket sComunica; private BufferedOutputStream os; private BufferedInputStream is; /** Creates new form ScreenClient */ public ScreenClient() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jTextField3 = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); textArea1 = new java.awt.TextArea(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Cliente"); setResizable(false); jButton1.setText("Conecta"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jButton2.setText("Envia"); jButton2.setEnabled(false); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jLabel1.setText("Endereço:"); jTextField1.setText("127.0.0.1"); jTextField2.setText("8000"); jLabel2.setText("Porta:"); jTextField3.setEnabled(false); jLabel3.setText("Comando:"); jLabel4.setText("Resposta:"); textArea1.setEditable(false); textArea1.setEnabled(false); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jButton1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButton2)) .addGroup(layout.createSequentialGroup() .addGap(26, 26, 26) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1) .addComponent(jLabel2) .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 293, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel3) .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 459, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel4) .addComponent(textArea1, javax.swing.GroupLayout.PREFERRED_SIZE, 459, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap(21, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(16, 16, 16) .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(11, 11, 11) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel4) .addGap(1, 1, 1) .addComponent(textArea1, javax.swing.GroupLayout.DEFAULT_SIZE, 128, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton1) .addComponent(jButton2)) .addContainerGap()) ); pack(); }// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try { sComunica = new Socket(jTextField1.getText().toString(), Integer.parseInt(jTextField2.getText().toString())); if (sComunica != null) { os = new BufferedOutputStream(sComunica.getOutputStream()); is = new BufferedInputStream(sComunica.getInputStream()); jButton1.setEnabled(false); jTextField1.setEnabled(false); jTextField2.setEnabled(false); jTextField3.setEnabled(true); jButton2.setEnabled(true); textArea1.setEnabled(true); jTextField3.requestFocus(); } } catch (UnknownHostException ex) { Logger.getLogger(ScreenClient.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(ScreenClient.class.getName()).log(Level.SEVERE, null, ex); } } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { byte[] re = new byte[1024]; re = jTextField3.getText().getBytes(); try { os.write(re, 0, jTextField3.getText().length()); os.flush(); } catch (IOException ex) { Logger.getLogger(ScreenClient.class.getName()).log(Level.SEVERE, null, ex); } jTextField3.requestFocus(); if (jTextField3.getText().contentEquals("dir")) { String sLinha = null; while (true) { sLinha = Recebe(); textArea1.append(sLinha + "\n"); if (sLinha.contains("fim")) { break; } } } else if (jTextField3.getText().contains("quit")) { textArea1.append("Desconectando ...\n"); jButton1.setEnabled(true); jTextField1.setEnabled(true); jTextField2.setEnabled(true); jTextField3.setEnabled(false); jButton2.setEnabled(false); textArea1.setEnabled(false); try { os.close(); sComunica.close(); } catch (IOException ex) { Logger.getLogger(ScreenClient.class.getName()).log(Level.SEVERE, null, ex); } } else if (jTextField3.getText().contentEquals("cls")) { textArea1.setText(null); } else { textArea1.append(Recebe() + "\n"); } } private String Recebe() { byte[] re = new byte[1024]; String sLinha = null; int nCount = 0; try { nCount = is.read(re); } catch (IOException ex) { Logger.getLogger(ScreenClient.class.getName()).log(Level.SEVERE, null, ex); } sLinha = new String(re, 0, nCount); return sLinha; } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new ScreenClient().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextField3; private java.awt.TextArea textArea1; // End of variables declaration }
  2. Alan Correa

    Java + phpWeb

    Olá pessoal, estou com uma dificuldade..preciso /enviar/inserir dados de uma aplicação java desktop, para uma página web(php)..via get ou post. se for via get, precisa criptografar. Algué pode me dar uma ajuda? segue o que já desenvolvi: import projetofinaltiago.Id; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; import java.net.*; import java.io.*; import java.awt.Desktop; import java.net.URI; public class Main{ public static void main(String[] args){ Id id1 = new Id (); id1.mudaId ("7897hgf"); id1.exibeDados (); Desktop d = Desktop.getDesktop(); InetAddress ip; try { ip = InetAddress.getLocalHost(); //System.out.println("Current IP address : " + ip.getHostAddress()); NetworkInterface network = NetworkInterface.getByInetAddress(ip); byte[] mac = network.getHardwareAddress(); System.out.print("Endereço MAC: "); StringBuilder sb = new StringBuilder(); for (int i = 0; i < mac.length; i++) { sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "")); } System.out.println(sb.toString()); } catch (UnknownHostException e) { e.printStackTrace(); } catch (SocketException e){ e.printStackTrace(); } try { Desktop.getDesktop().browse(new URI( "http://saude.administre.me/teste")); } catch (Exception ex) { ex.printStackTrace(); } } }
  3. olá pessoal....consegui compilar corretamente conforme o exercício, vou disponibilizar o codigo que eu mesmo fiz corrigido...tentando...tentando..tentando...rsrsrs [codigo] #include <stdio.h> #include <stdlib.h> #define TAM 10 int main() { int vetor[TAM], i; int *p = &vetor[0]; printf("Preencha o Vetor\n"); for(i=0;i<TAM;i++){ printf("Informe Valor: "); scanf("%d",p++); } printf("\n"); p = &vetor[i-1]; printf("Odem inversa\n"); for(i=TAM;i>0;i--) printf("%d\n ", *p--); fflush(stdin); getchar(); return 0; }[/codigo]
  4. olá pessoal...estou com problemas com ponteiros... preciso compilar um programa que receba 10 posições e mostre o valor deles de na ordem inversa que foram informados na tela. mas tudo usando ponteiros. fiz mas não compila. mostrar o vetor na ordem inversa, ou seja, do elemento 9 ao 0.*/ #include <stdio.h> #include <stdlib.h> #define TAM 10 int main() { int vetor[TAM], i; int *p = &vetor[0]; printf("Preencha o Vetor\n"); for(i=0;i<TAM;i++){ printf("Informe Valor: "); scanf("%d",p++); } printf("\n"); p = &vetor[10]; printf("Valores Informados:\n"); for(i=10;i<=10;i){ printf("%d,", *p); p--; } fflush(stdin); getchar(); return 0; }
  5. poxa vida...não sei como agradecer a atenção de voces, aprendi muito...e realmente está um pouco confuso pra mim C++, mas fazendo, errando e observando os erros eu sei que aprendo. Obrigado e Obrigado.
  6. olá... precisei trabalhar muito em cima do codigo e arrumar bastante coisa...tentei "limpar" e fazer mais enxuto...mas ainda sim deu trabalho e não compila... [codigo] #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #define TAM_LISTA 500 typedef struct { int Codigo; char Doado; char Obra [50]; char Autor [50]; char Editora [50]; int Paginas; }livros; typedef struct { livros Exatas [500]; livros Humanas [500]; livros Biomedicas [500]; } biblio; //função cadastrar void cadastrar () { printf("CADASTRAR LIVROS\n\n"); printf("informe codigo: "); fflush(stdin); scanf("%d", &livros.Codigo[0]); printf("o livro foi doado s/n ?"); fflush(stdin); scanf("%c", &livros.Doado[0]); printf("informe nome do livro: "); fflush(stdin); scanf("%c", livros.Obra[0]); printf("informe nome do autor: "); fflush(stdin); scanf("%c", &livros.Autor[0]); printf("informe editora: "); fflush(stdin); scanf("%c", &livros.Editora[0]); printf("informe numero de paginas: "); fflush(stdin); scanf("%d", &livros.Paginas[0]); printf("CADASTRO REALIZADO COM SUCESSO"); fflush(stdin); getchar(); } //função exibir void exibir () { printf("CONSULTA DE LIVROS"); printf("codigo: %d\n", livros.Codigo[0]); printf("doado: %c\n", livros.Doado[0]); printf("nome do livro: %c\n", livros.Obra[0]); printf("nome do autor: %c\n", livros.Autor[0]); printf("editora: %c\n", livros.Editora[0]); printf("numero de paginas: %d\n", livros.Paginas[0]); } //função main int main() { biblio Biblioteca; int i, op, op1; memset(&Biblioteca, 0x00, sizeof(biblio)); while(1) { system("cls"); printf("MENU\n\n"); printf("1:cadastrar\n2:consultar\n3:Excluir\n4:encerra programa\n"); printf("digite sua opção"); fflush(stdin); scanf("%d", &op); switch (op) { case 1:{ system("cls"); printf("NOVO CADASTRO"); printf("1:biomedicas\n2:humanas\n3:exatas\n4:fim\n\n"); printf("digite sua opcao"); fflush(stdin); scanf("%d", &op1); switch (op1) { case 1: for(i=0; i<TAM_LISTA; i++) if (! Biblioteca.Biomedicas.Codigo) break; cadastrar(&Biblioteca.Biomedicas; break; case 2: for(i=0; i<TAM_LISTA; i++) if (! Biblioteca.Humanas.Codigo) break cadastrar (&Biblioteca.Humanas); break; case 3: for(i=0; i<TAM_LISTA; i++) if (! Biblioteca.Exatas.Codigo) break; cadastrar (&Biblioteca.Exatas); break; } } break; case 2:{ int nCodigo; sytem("cls"); printf("NOVO CONSULTA"); printf("1:biomedicas\n2:humanas\n3:exatas\n4:fim\n\n"); printf("digite sua opcao"); fflush(stdin); scanf("%d", &op1); if (op1 >=1 || op2 <=3) { fflush(stdin); printf("digite codigo"); scanf("%d", nCodigo); } switch (op1) { case 1: for(i=0; i<TAM_LISTA; i++) if (Biblioteca.Biomedicas.Codigo == nCodigo) { exibir (&Biblioteca.Biomedicas); break; } else printf("\n\ncodigo não cadastrado"); break; case 2: for (i=0; i<TAM_LISTA; i++) if (Biblioteca.Humanas.Codigo == nCodigo) { exibir (&Biblioteca.Humanas); break; } else printf("\n\ncodigo não cadastrado"); break; case 3: for (i=0; i<TAM_LISTA; i++) if (Biblioteca.Exatas.Codigo == nCodigo) { exibir (&Biblioteca.Exatas); break; } else printf("\n\ncodigo não cadastrado"); break; } } case 3:{ int nCodigo; system ("cls"); printf("NOVO EXCLUSAO"); printf("1:biomedicas\n2:humanas\n3:exatas\n4:fim\n\n"); printf("digite sua opcao"); fflush(stdin); scanf("%d", &op1); if (op1 >=1 || op2 <=3) { fflush(stdin); printf("\n\ndigite o codigo"); scanf("%d", &nCodigo); } switch (op1) { case 1: for (i=0; i<TAM_LISTA; i++) if (Biblioteca.Biomedicas.Codigo == nCodigo) { memset(Biblioteca.Biomedicas, 0x00, sizeof(livros)); break; } case 2: for (i=0; i<TAM_LISTA; i++) if (Biblioteca.Humanas.Codigo == nCodigo) { memset(Biblioteca.Humanas, 0x00, sizeof(livros)); break; } case 3: for (i=0; i<TAM_LISTA; i++) if (Biblioteca.Exatas.Codigo == nCodigo) { memset(Biblioteca.Exatas, 0x00, sizeof(livros)); break; } break; } } case 4: { printf ("encerrando sistema"); exit (0); break; } default: { printf ("Opcao invalida"); break; } } break; return 0; } [/codigo] ajudas e dicas são bem vindas.
  7. obrigado mesmo pela ajuda e pelas dicas, desculpa minha inexperiencia e minha bagunça no código...é que estou começando neste semestre a cadeira de estrutura de dados e só tive 4 aulas. mas vou arrumar e seguir as orientações de voces qu é muito importante pra mim. obrigado. logo em seguida eu posto o código melhorado.
  8. Ahh muito obrigado mesmo....vou realizar as modificações e postar....obrigado! olá...fiz algumas mudanças, mas está dificel de compilar e não sei onde está o erro....abaixo o codigo reformulado: #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> typedef struct { int Codigo; char Doado; char Obra [50]; char Autor [50]; char Editora [50]; int Paginas; }livros; typedef struct { livros Exatas [500]; livros Humanas [500]; livros Biomedicas [500]; } biblio; //**********funções que serão usadas**********// void cadastrar(int cod, int pos); void consultar(); int relatorio(); int verifica_pos(); int verifica_cod(int cod); int verifica_pos(); void excluir(); //**********inicio programa principal*********// main () { int opcao=0, posicao, codaux, retorno, areaConhecimento, area,codigoLivro; biblio biblioteca; while (1) { puts ("********* Bliblioteca Municipal *********"); puts ("***************** MENU ******************"); printf("\n\n"); printf("1: Cadastrar\n2: Consultar\n3: Excluir\n4: Encerrar Programa"); scanf("%d", &opcao); system("cls"); switch (opcao) { //CADASTRAR case 1:{ puts ("AREA PARA CASTRO"); printf ("Informe Area do conhecimento para cadastramento do Livro"); printf ("1: Exatas\n2: Humanas\n3: Biomedicas\n"); scanf ("%d", &areaConhecimento); //TESTA AREA DO CONHECIMENTO 1 if (areaConhecimento == 1) { posicao = verifica_pos(); if(posicao != -1 ) { printf ("Informe o código do livro para cadastrar (somente numeros)"); scanf ("%d", &codaux); fflush (stdin); retorno = verifica_cod (codaux); if (retorno == 1) { cadastrar (codaux, posicao); area = biblioteca.Exatas[0].Codigo; } else printf ("\ncodigo já cadastrado"); } } else printf ("não foi possivel realizar cadastro\n"); //TESTA AREA DO CONHECIMENTO 2 if (areaConhecimento == 2) { posicao = verifica_pos(); if(posicao != -1 ) { printf ("Informe o código do livro para cadastrar (somente numeros)"); scanf ("%d", &codaux); fflush (stdin); retorno = verifica_cod (codaux); if (retorno == 1) { cadastrar (codaux, posicao); codigoLivro = biblioteca.Humanas[0].Codigo; } else printf ("\ncodigo já cadastrado"); } } else printf ("não foi possivel realizar cadastro\n"); //TESTA AREA DO CONHECIMENTO 3 if (areaConhecimento == 3) { posicao = verifica_pos(); if(posicao != -1 ) { printf ("Informe o código do livro para cadastrar (somente numeros)"); scanf ("%d", &codaux); fflush (stdin); retorno = verifica_cod (codaux); if (retorno == 1) { cadastrar (codaux, posicao); codigoLivro = biblioteca.Biomedicas[0].Codigo; } else printf ("\ncodigo já cadastrado"); } else printf ("não foi possivel realizar cadastro\n"); } break; } //CONSULTAR case 2: { consultar(); break; } case 3: { excluir (); break; } case 4: { printf ("Programa Encerrado"); getchar(); break; } default: printf ("Opcao Invalida"); break; } } } fflush(stdin); getchar(); return 0; //FIM FUNÇÃO MAIN //FUNÇÃO CADASTRAR void cadastrar (int cod, int pos) pos = verifica_pos (); registros [pos].cod=cod; printf ("Informe se o livro foi doado (S)ou(N)?\n"); scanf ("%c", &biblioteca.Biomedicas[0].Doado ); printf ("Informe Nome da Obra\n"); scanf ("%s", biblioteca.Biomedicas[0].Obra); printf ("Informe Nome do Autor\n"); scanf ("%s", biblioteca.Biomedicas[0].Autor); printf ("Informe Editora\n"); scanf ("%s", biblioteca.Biomedicas[0].Editora); printf ("Informe Numero de páginas\n"); scanf ("%d", &biblioteca.Biomedicas[0].Paginas); printf ("Cadastro efetuado com Sucesso"); }//FIM FUNÇÃO CADASTRAR //FUNÇÃO CONSULTAR void consultar () int cont = 0, cod; puts("AREA PARA CONSULTAS"); puts ("Enter com -1 para encerrar a consulta); printf("Entre com o Codigo"); scanf ("%d", &cod); while (cod != -1) { if (registros [cont].cod == cod{ if (registros [cont].vazio == 1{ printf ("\nLivro doado %s ", registros[cont].Doado); printf ("\nNome Livro %s ", registros[cont].Obra); printf ("\nNome Autor %s ", registros[cont].Autor); printf ("\nNome Editora %s ", registros[cont].Editora); printf ("\nNumero de Paginas %s ", registros[cont].Paginas); printf("\n"); fflush(stdin); getchar(); return 0; break; } } cont ++; if (cont > 500) printf ("Codigo não encontrado"); } }//FIM FUNÇÃO CONSULTAR //FUNÇÃO VERIFICA POSIÇÃO int verifica_posicao () { int cont =0; while (cont <=500) { if (registros [cont].vazio == 0) return cont; cont ++; } return (-1); }//FIM FUNÇÃO VERIFICA POSIÇÃO //FUNÇÃO VERIFICA CODIGO int verifica_cod (int cod) { int cont = 0; while (cont <=500){ if (registros [cont].cod == cod) return (0); cont ++; } return (-1); }//FIM DA FUNÇÃO VERIFICA CODIGO //FUNÇÃO EXCLUIR void excluir() { int cod, cont =0; char resp; printf ("Informe o Codido que deseja excluir"); scanf ("%d", &cod); while (cont <=500) } if (registros[cont].cod == cod) if (registros[cont].vazio == 1) { printf ("\nLivro doado %s ", registros[cont].Doado); printf ("\nNome Livro %s ", registros[cont].Obra); printf ("\nNome Autor %s ", registros[cont].Autor); printf ("\nNome Editora %s ", registros[cont].Editora); printf ("\nNumero de Paginas %s ", registros[cont].Paginas); getchar(); printf ("Deseja Realmente Excluir? (s) ou (n)?"); if (resp == 'S' || resp == 's') { registros[cont].vazio = 0; printf ("Exclusao realizada com sucesso"); break; } else if (resp == 'N' || resp == 'n') printf ("Exclusao Cancelada\n"); break; } } cont ++; if (cont < 500) printf ("Codigo não encontrado"); } fflush(stdin); getchar(); return 0; }
  9. Ahh muito obrigado mesmo....vou realizar as modificações e postar....obrigado!
  10. Olá pessoal, sou iniciante em Estrutura de Dados....existe um sistema que preciso criar: 1. Uma biblioteca possui obras de ciências exatas, ciências humanas e ciências biomédicas, totalizando 1.500 volumes, 500 de cada área. O proprietário resolveu informatizá-la e, para tal, agrupou as informações sobre cada livro do seguinte modo: Código de catalogação: __________ Doado:______________ Nome da obra: _____________________________________ Nome do autor: ____________________________________ Editora: _______________Nro de páginas:_______________ a) Construa um algoritmo que declare tal estrutura e que reúna todas as informações de todas as obras em três vetores distintos para cada área. B) Elabore um trecho de algoritmo que, utilizando como premissa o que foi feito no item anterior, realize uma consulta à informações. O usuário fornecerá o código da obra e sua área. Existindo tal livro, informa seus campos. Do contrário, envia mensagem de aviso. c) A consulta repete-se até que o usuário introduza código finalizador com o valor -1. Escreva um trecho de algoritmo que liste todas as obras de cada área que representem livros doados. d) Idem ao item anterior, porém, obras cujos livros sejam comprados e cujo número de páginas se encontre entre 100 e 300. e) Construa um trecho de algoritmo que efetue a exclusão de algum livro; o usuário fornecerá o código e a área. Lembres-se de que somente pode ser excluído um livro existente. Eu já fiz o menu geral, o menu para cadastrare o menu de consulta...mas acredito que tem erros ...voces podem me ajudar? segue o que eu desenvolvi: #include <stdio.h> #include <stdlib.h> #include <math.h> #define TRUE 1 #define FALSE 0 typedef struct { int codigoCatalogacao [10]; char doado [50]; char nomeDaObra [50]; char nomeAutor [50]; char editora [50]; int nrPaginas; }livros; typedef struct { livros exatas [500]; livros humanas [500]; livros biomedicas [500]; } biblioteca; main () { biblioteca varBiblioteca; while (1){ printf ("Menu\n"); printf ("1- Novo Cadastro\n"); printf ("2-Consulta\n"); printf ("3-Exclusão\n"); printf ("4-Sair do Programa\n"); int menuPrincipal; switch (menuPrincipal){ case 1: printf ("Informe Area do Conhecimento Para Cadastramento \n"); printf ("1-Biomedicas\n"); printf ("2-Humanas\n"); printf ("3-Exatas\n"); break; int menuCadastrarAreaConehcimento; switch (menuCadastrarAreaConehcimento) { case 1: printf ("CADASTRO LIVROS DE CIENCIAS BIOMETRICAS\n"); printf ("Informe Código Catalogação\n"); scanf ("%d", &biblioteca.biomedicas[0].codigoCatalogacao); printf ("Informe se o livro foi doado (S)ou(N)?\n"); scanf ("%s", &biblioteca.biomedicas[0].doado); printf ("Informe Nome da Obra\n"); scanf ("%s", &biblioteca.biomedicas[0].nomeDaObra); printf ("Informe Nome do Autor\n"); scanf ("%s", &biblioteca.biomedicas[0].nomeAutor); printf ("Informe Editora\n"); scanf ("%s", &biblioteca.biomedicas[0].editora); printf ("Informe Numero de páginas\n"); scanf ("%d", &biblioteca.biomedicas[0].nrPaginas); break; case 2: printf ("CADASTRO LIVROS DE CIENCIAS HUMANAS\n"); printf ("Informe Código Catalogação\n"); scanf ("%d", &biblioteca.humanas[0].codigoCatalogacao); printf ("Informe se o livro foi doado (S)ou(N)?\n"); scanf ("%s", &biblioteca.humanas[0].doado); printf ("Informe Nome da Obra\n"); scanf ("%s", &biblioteca.humanas[0].nomeDaObra); printf ("Informe Nome do Autor\n"); scanf ("%s", &biblioteca.humanas[0].nomeAutor); printf ("Informe Editora\n"); scanf ("%s", &biblioteca.humanas[0].editora); printf ("Informe Numero de páginas\n");} scanf ("%d", &biblioteca.humanas[0].nrPaginas); break; case 3: printf ("CADASTRO LIVROS DE CIENCIAS EXATAS\n"); printf ("Informe Código Catalogação\n"); scanf ("%d", &biblioteca.exatas[0].codigoCatalogacao); printf ("Informe se o livro foi doado (S)ou(N)?\n"); scanf ("%s", &biblioteca.exatas[0].doado); printf ("Informe Nome da Obra\n"); scanf ("%s", &biblioteca.exatas[0].nomeDaObra); printf ("Informe Nome do Autor\n"); scanf ("%s", &biblioteca.exatas[0].nomeAutor); printf ("Informe Editora\n"); scanf ("%s", &biblioteca.exatas[0].editora); printf ("Informe Numero de páginas\n");} scanf ("%d", &biblioteca.exatas[0].nrPaginas); break; default: printf ("opcao invalida"); } case 2: printf ("Area para Consulta\n"); printf (" 1 Consultar\n"); printf ("-1 Sair Consulta\n"); break; int menuConsultar; switch (menuConsultar) { case 1: printf ("Informe Area Conhecimento para Consultar\n"); printf (" 1 Biomedicas\n"); printf (" 2 Humanas\n"); printf (" 3 Exatas\n"); break; int menuConsultarAreaConhecimento; switch (menuConsultarAreaConhecimento){ while (!= -1){ case 1: printf ("Consulta Titulos na Area do Conhecimento Biomedico\n"); printf ("Informe -1 para encerrar a consulta\n"); printf ("Informe Codigo Catalogação\n"); if (biblioteca.biomedicas[0].codigoCatalogacao == TRUE) { printf ("Codigo Catolacao%d: ", biblioteca.biomedicas[0].codigoCatalogacao); print ("Doação%s: ", biblioteca.biomedicas[0].doado); printf ("Nome%s: ", biblioteca.biomedicas[0].nomeDaObra); printf ("Editora%s: ", biblioteca.biomedicas[0].editora); printf ("Nº Paginas%d: ", biblioteca.biomedicas[0].nrPaginas); break; } else printf ("Código não cadastrado"); case 2: printf ("Consulta Titulos na Area do Conhecimento Humanas\n"); printf ("Informe -1 para encerrar a consulta\n"); printf ("Informe Codigo Catalogação\n"); if (biblioteca.humanas[0].codigoCatalogacao == TRUE) { printf ("Codigo Catolacao%d: ", biblioteca.humanas[0].codigoCatalogacao); printf ("Doação%s: ", biblioteca.humanas[0].doado); printf ("Nome%s: ", biblioteca.humanas[0].nomeDaObra); printf ("Editora%s: ", biblioteca.humanas[0].editora); printf ("Nº Paginas%d: ", biblioteca.humanas[0].nrPaginas); break; } else printf ("Código não cadastrado"); case 3: printf ("Consulta Titulos na Area do Conhecimento Exatas\n"); printf ("Informe -1 para encerrar a consulta\n"); printf ("Informe Codigo Catalogação\n"); if (biblioteca.exatas[0].codigoCatalogacao == TRUE) { printf ("Codigo Catolacao%d: ", &biblioteca.exatas[0].codigoCatalogacao); printf ("Doação%s: ", biblioteca.exatas[0].doado); printf ("Nome%s: ", biblioteca.exatas[0].nomeDaObra); printf ("Editora%s: ", biblioteca.exatas[0].editora); printf ("Nº Paginas%d: ", biblioteca.exatas[0].nrPaginas); break; } else printf ("Código não cadastrado"); default: printf ("opcao invalida"); } } case 2: exit (0); default: printf ("opcao invalida"); } case 3: printf ("Area para Exclusao\n");
×
×
  • Criar Novo...