Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

LuisGCarv

Membros Plenos
  • Total de itens

    32
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. Eu sou iniciante na linguagem C# e encontrei um problema na fase de debug de um programa que acabei de testar. O código não foi criado por mim, ele foi tirado de uma apostila da faculdade, mas aparentemente há algum erro nele ou eu cometi algum erro na hora de configurar o projeto ou a classe. Vocês podem por favor checar qual é o real problema que está causando a mensagem "The name 'InitializeComponent' does not exist in the current context"? A primeira parte do código é do arquivo do Program, a outra é da classe que eu criei com o que encontrei na apostila. using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace TADSWinFormApp { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new ConexADO()); } } } using System; using System.Windows.Forms; using System.Data.OleDb; namespace TADSWinFormApp { public partial class ConexADO : Form { public ConexADO() { InitializeComponent(); } private void ConexADO_Load(object sender, EventArgs e) { string strConnString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB\Northwind.accdb; Persist Security Info=False;"; OleDbConnection conn = new OleDbConnection(strConnString); conn.Open(); conn.Close(); } } }
  2. Eu utilizo um HD externo para "aliviar" o disco rígido principal do meu computador, mas estou enfrentando problemas com uma pasta específica deste HD externo. Aparece a seguinte mensagem quando tento abrí-la: "D:\Users\... não está acessível. O arquivo ou pasta está corrompido e ilegível". Quando entro nas propriedades, o direito aparece como se estivesse vazio, mas quando escaneio ele com um antivirus, aparece o número de arquivos, subpastas e quantidade de dados sem qualquer problema. Minha questão é bem simples: eu acredito que o problema será resolvido apenas utilizando o comando "chkdsk" do prompt de comando, mas o que eu gostaria de saber mesmo é se é possível utilizá-lo apenas na pasta que está com problemas ou terei que obrigatoriamente pedir para verificar e resolver os erros do disco inteiro. Agradeço desde já pela atenção e compreensão de todos.
  3. @Erciley Junior , eu já tinha tentado esse site antes e encontrei mais problemas ainda do que com o outro. Agradeço de qualquer forma pela ajuda.
  4. Eu sou um estudante iniciante da linguagem SQL e estou tendo que praticá-la montando scripts simples utilizando alguns sites que encontrei utilizando o Google, mas não sei se é suficiente, porque estou encontrando problemas para criar chaves estrangeiras para as tabelas. Alguém saberia me dizer como fazer e se é possível criar chaves estrangeiras no Sqlite Browser? E se não for possível, teria como fazer isso utilizando um programa prático e leve ou até mesmo um outro site com mais recursos? Eu agradeço desde já pela paciência e atenção de vocês.
  5. @DiF , muito obrigado mesmo pelas dicas! Eu não conhecia essa versão Community, como é possível baixá-la? É necessário fazer todo aquele cadastro da página? De qualquer forma eu consegui obter uma licença que eles disponibilizam para estudantes no período que estão fazendo o curso, então eu não sei se é exatamente esse o problema. Eu acabei de desinstalar o programa e instalar em outra pasta e o problema persiste com arquivos mais antigos.
  6. Olá pessoal. Eu não sei se esta é a parte exata do fórum para tentar resolver esse tipo de problema, mas infelizmente não consegui achar um lugar mais específico ou que achei mais próximo do assunto do que este daqui . Então, eu tenho enfrentado alguns problemas com o Astah Professional no últimos dias. Ele funcionava perfeitamente até mais ou menos uma semana atrás, quando eu utilizei ele pra criar alguns diagramas para um trabalho de faculdade. Só que ultimamente eu simplesmente não consigo mais exportar um diagrama como arquivo de imagem (Tools > Export Image > Current Diagram > qualquer uma das opções). Sempre aparece essa mensagem: "Alert - The file could not be saved. Please check the file's permissions, the select path, and ensure that no other applications are using the file." Um outro problema que eu percebi que surgiu na mesma época foi que eu não consigo mais visualizar arquivos .asta mais antigos. O arquivo até chega a abrir, aparece toda a estrutura do diagrama na opção da lateral, mas a tela principal fica toda escura e eu simplesmente não consigo manipulá-lo. Algum de vocês sabe mexer nesse programa e saberia me informar como esses problemas poderiam ser resolvidos? Agradeço desde já pela atenção.
  7. Ah, muito obrigado! As suas alterações fizeram com que o programa lesse todo o arquivo sem travar. Eu não conhecia esse comando da flecha ->, como ele funciona exatamente?
  8. Ah @Mauro Britivaldo , eu consegui resolver parte do problema com essa sua dica, agora não está mais travando exatamente naquela parte, estava faltando atribuir memória pra esse ponteiro CadastroImovel mesmo, só que agora ele lê até uma parte do arquivo e trava no meio. Vou postar o código inteiro dessa vez pra ver se você sabe o que está dando de errado, porque o código não acusa erro algum na hora de compilar, só quando vou executar mesmo. Teve um momento que eu até consegui passar essa fase da leitura dos dados do arquivo sem a travada, mas a leitura dos dados não estava correta, agora ela está correta mas está travando no meio: #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> struct cadastro1 { int codigo; char nome[40], cargo[10]; }; struct cadastro2 { int codigo; char proprietario[40], tipo[16]; }; struct movimentacao { int codigoc1, codigoc2, codigoc3, codigoi; char nome1[40], nome2[40], nome3[40], tipo[10]; }; int opc; int menu(); int cadastroCol(); int cadastroImo(); int orcamento(); int main (void) { int opcao1, loop1; setlocale (LC_ALL,"Portuguese"); do{ opcao1 = menu(); switch(opcao1) { case 1: loop1 = cadastroCol(); break; case 2: loop1 = cadastroImo(); break; case 3: loop1 = orcamento(); break; case 4: loop1 = 2; break; default: printf ("Opção inválida!\nTente novamente\n"); system ("pause"); system ("cls"); break; } }while(loop1 == 1); system ("pause"); return 0; } int menu(void) { int loop2, opcao2; do { printf ("Digite o número da sua opção desejada\nEX: 1\n\n"); printf ("1) Cadastro de colaborador \n"); printf ("2) Cadastro de imóvel \n"); printf ("3) Orçamento de obra \n"); printf ("4) Encerrar o processo\n"); scanf ("%d",&opcao2); loop2 = 0; system ("cls"); if (opcao2 < 1 || opcao2 > 4) { printf ("Opção inválida!\nTente novamente\n"); system ("pause"); system ("cls"); loop2 = 1; } }while(loop2!=0); return opcao2; } int cadastroCol(void) { struct cadastro1 *CadastroColab; int a = -1, b = 1001, c = 2001, d = 3001, aloc = 0, fim, opcao3, opcao4, loop3; FILE *ponteiro; do { printf ("Digite o número da sua opção desejada\nEX: 2\n\n"); printf ("1) Cadastrar um colaborador \n"); printf ("2) Voltar ao menu anterior \n"); printf ("3) Encerrar o processo \n"); scanf ("%d",&opcao3); system ("cls"); switch(opcao3) { case 1: a++; aloc++; CadastroColab = (cadastro1*) calloc(aloc, sizeof(cadastro1)); if (!CadastroColab) { printf("O cadastro infelizmente não poderá ser realizado!\n"); exit(1); } else { printf ("Digite o nome do colaborador : \n"); getchar (); scanf ("%[^\n]s",&CadastroColab[a].nome); do { printf ("\nDigite o número com a área do colaborador\nEX: 3\n\n"); printf ("1) Arquiteto\n"); printf ("2) Engenheiro \n"); printf ("3) Pedreiro \n"); scanf ("%d",&opcao4); system ("cls"); if (opcao4 == 1) { strcpy (CadastroColab[a].cargo,"Arquiteto"); CadastroColab[a].codigo = b; ponteiro = fopen("Cadastroarquiteto.dat", "ab"); fwrite(&CadastroColab[a],sizeof(struct cadastro1), 1, ponteiro); b++; loop3 = 0; } else { if (opcao4 == 2) { strcpy (CadastroColab[a].cargo,"Engenheiro"); CadastroColab[a].codigo = c; ponteiro = fopen("Cadastroengenheiro.dat", "ab"); fwrite(&CadastroColab[a],sizeof(struct cadastro1), 1, ponteiro); c++; loop3 = 0; } else { if (opcao4 == 3) { strcpy (CadastroColab[a].cargo,"Pedreiro"); CadastroColab[a].codigo = d; ponteiro = fopen("Cadastropedreiro.dat", "ab"); fwrite(&CadastroColab[a],sizeof(struct cadastro1), 1, ponteiro); d++; loop3 = 0; } else { printf ("Opção inválida!\nTente novamente\n"); system ("pause"); system ("cls"); loop3 = 1; } } } }while(loop3!=0); } free (CadastroColab); fclose (ponteiro); break; case 2: fim = 1; break; case 3: fim = 2; break; default: printf ("Opção inválida!\nTente novamente\n"); system ("pause"); system ("cls"); } }while(opcao3!=2 && opcao3!=3); return fim; } int cadastroImo(void) { struct cadastro2 *CadastroImovel; int e = -1, f = 4001, g = 5001, h = 6001, fim, opcao5, opcao6, loop4, aloc = 0; FILE *ponteiro; do { printf ("Digite o número da sua opção desejada\nEX: 2\n\n"); printf ("1) Cadastrar um imóvel \n"); printf ("2) Voltar ao menu anterior \n"); printf ("3) Encerrar o processo \n"); scanf ("%d",&opcao5); system ("cls"); switch(opcao5) { case 1: e++; aloc++; CadastroImovel = (cadastro2*) calloc(aloc, sizeof(cadastro2)); if (!CadastroImovel) { printf("O cadastro infelizmente não poderá ser realizado!\n"); exit(1); } else { printf ("Digite o nome do proprietário do imóvel a ser construído: \n"); getchar (); scanf ("%[^\n]s",&CadastroImovel[e].proprietario); do { printf ("\nDigite o número com o tipo de imóvel a ser construído: \nEX: 3\n\n"); printf ("1) Comercial\n"); printf ("2) Construção Civil\n"); printf ("3) Residencial \n"); scanf ("%d",&opcao6); system ("cls"); if (opcao6 == 1) { strcpy (CadastroImovel[e].tipo,"Comercial"); CadastroImovel[e].codigo = f; ponteiro = fopen("Cadastrocomercial.dat", "ab"); fwrite(&CadastroImovel[e],sizeof(struct cadastro2), 1, ponteiro); f++; loop4 = 0; } else { if (opcao6 == 2) { strcpy (CadastroImovel[e].tipo,"Construção Civil"); CadastroImovel[e].codigo = g; ponteiro = fopen("Cadastroconstrucaocivil.dat", "ab"); fwrite(&CadastroImovel[e],sizeof(struct cadastro2), 1, ponteiro); g++; loop4 = 0; } else { if (opcao6 == 3) { strcpy (CadastroImovel[e].tipo,"Residencial"); CadastroImovel[e].codigo = h; ponteiro = fopen("Cadastroresidencial.dat", "ab"); fwrite(&CadastroImovel[e],sizeof(struct cadastro2), 1, ponteiro); h++; loop4 = 0; } else { printf ("Opção inválida!\nTente novamente\n"); system ("pause"); system ("cls"); loop4 = 1; } } } }while(loop4!=0); } free (CadastroImovel); fclose (ponteiro); break; case 2: fim = 1; break; case 3: fim = 2; break; default: printf ("Opção inválida!\nTente novamente\n"); system ("pause"); system ("cls"); } }while(opcao5!=2 && opcao5!=3); return fim; } int orcamento(void) { struct movimentacao *OrcamentoObra; struct cadastro2 *CadastroImovel; struct cadastro1 *CadastroColab; int i = -1, j, k, l, m = -1, n = -1, o = -1, fim, opcao7, opcao8, loop5, aloc = 0; FILE *ponteiro; do { printf ("Digite o número da sua opção desejada\nEX: 2\n\n"); printf ("1) Realizar o orçamento de uma obra \n"); printf ("2) Voltar ao menu anterior \n"); printf ("3) Encerrar o processo \n"); scanf ("%d",&opcao7); system ("cls"); switch(opcao7) { case 1: i++; aloc++; OrcamentoObra = (movimentacao*) calloc(aloc, sizeof(movimentacao)); CadastroImovel = (cadastro2*) calloc(aloc, sizeof(cadastro2)); CadastroColab = (cadastro1*) calloc(aloc, sizeof(cadastro1)); if (!OrcamentoObra) { printf("O orçamento infelizmente não poderá ser realizado!\n"); exit(1); } else { do { printf ("Digite o tipo de imóvel que será realizado o orçamento\nEX: 3\n\n"); printf ("1) Comercial\n"); printf ("2) Construção Civil\n"); printf ("3) Residencial \n"); scanf ("%d",&opcao8); system ("cls"); if (opcao8 == 1) { strcpy (OrcamentoObra[i].tipo,"Comercial"); ponteiro = fopen("Cadastrocomercial.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de imóvel comercial realizado, tente novamente!\n"); system ("pause"); exit (1); } else { printf ("Imóveis Comerciais"); j = 0; while (!feof(ponteiro)) { fread(&CadastroImovel[j],sizeof(struct cadastro2), 1, ponteiro); printf ("\nCódigo = %d\nProprietário = %s\n", CadastroImovel[j].codigo, CadastroImovel[j].proprietario); j++; } printf ("\nDigite o código do imóvel que será realizado o orçamento\n"); scanf ("%d",&OrcamentoObra[i].codigoi); system ("cls"); } } else { if (opcao8 == 2) { strcpy (OrcamentoObra[i].tipo,"Construção Civil"); ponteiro = fopen("Cadastroconstrucaocivil.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de imóvel de construção civil realizado, tente novamente!\n"); system ("pause"); exit (1); } else { printf ("Imóveis de Construção Civil"); k = 0; while (!feof(ponteiro)) { fread(&CadastroImovel[k],sizeof(struct cadastro2), 1, ponteiro); printf ("\nCódigo = %d\nProprietário = %s\n", CadastroImovel[k].codigo, CadastroImovel[k].proprietario); k++; } printf ("\nDigite o código do imóvel que será realizado o orçamento\n"); scanf ("%d",&OrcamentoObra[i].codigoi); system ("cls"); } } else { if (opcao8 == 3) { strcpy (OrcamentoObra[i].tipo,"Residencial"); ponteiro = fopen("Cadastroresidencial.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de imóvel residencial realizado, tente novamente!\n"); system ("pause"); exit (1); } else { printf ("Imóveis Residenciais"); l = 0; while (!feof(ponteiro)) { fread(&CadastroImovel[l],sizeof(struct cadastro2), 1, ponteiro); printf ("\nCódigo = %d\nProprietário = %s\n", CadastroImovel[l].codigo, CadastroImovel[l].proprietario); l++; } printf ("\nDigite o código do imóvel que será realizado o orçamento\n"); scanf ("%d",&OrcamentoObra[i].codigoi); system ("cls"); } } else { printf ("Opção inválida!\nTente novamente\n"); system ("pause"); system ("cls"); loop5 = 1; } } } }while(loop5!=0); } free (CadastroImovel); fclose (ponteiro); ponteiro = fopen("Cadastroarquiteto.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de arquiteto realizado, tente novamente!\n"); system ("pause"); exit (1); } fread(&CadastroColab,sizeof(struct cadastro1), 1, ponteiro); m++; OrcamentoObra[i].codigoc1 = CadastroColab[m].codigo; strcpy (OrcamentoObra[i].nome1 , CadastroColab[m].nome); free (CadastroColab); ponteiro = fopen("Cadastroengenheiro.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de engenheiro realizado, tente novamente!\n"); system ("pause"); exit (1); } fread(&CadastroColab,sizeof(struct cadastro1), 1, ponteiro); n++; OrcamentoObra[i].codigoc2 = CadastroColab[n].codigo; strcpy (OrcamentoObra[i].nome2 , CadastroColab[n].nome); free (CadastroColab); ponteiro = fopen("Cadastropedreiro.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de pedreiro realizado, tente novamente!\n"); system ("pause"); exit (1); } fread(&CadastroColab,sizeof(struct cadastro1), 1, ponteiro); o++; OrcamentoObra[i].codigoc3 = CadastroColab[o].codigo; strcpy (OrcamentoObra[i].nome3 , CadastroColab[o].nome); system ("pause"); system ("cls"); printf ("DADOS DO ORÇAMENTO DA OBRA\n"); printf ("\nTipo de imóvel = %s", OrcamentoObra[i].tipo); printf ("\nCódigo do imóvel = %d", OrcamentoObra[i].codigoi); printf ("\n\nNome do arquiteto = %s", OrcamentoObra[i].nome1); printf ("\nCódigo do arquiteto = %d", OrcamentoObra[i].codigoc1); printf ("\nNome do engenheiro = %s", OrcamentoObra[i].nome2); printf ("\nCódigo do engenheiro = %d", OrcamentoObra[i].codigoc2); printf ("\nNome do pedreiro = %s", OrcamentoObra[i].nome3); printf ("\nCódigo do pedreiro = %d", OrcamentoObra[i].codigoc3); if (OrcamentoObra[i].tipo == "Residencial") { printf ("\nValor total dos gastos = 30.000,00\n"); } else { if (OrcamentoObra[i].tipo == "Comercial") { printf ("\nValor total dos gastos = 60.000,00\n"); } else { if (OrcamentoObra[i].tipo == "Construção civil") { printf ("\nValor total dos gastos = 90.000,00\n"); } } } free (OrcamentoObra); break; case 2: fim = 1; break; case 3: fim = 2; break; default: printf ("Opção inválida!\nTente novamente\n"); system ("pause"); system ("cls"); } }while(opcao7!=2 && opcao7!=3); return fim; } adicionado 34 minutos depois Queria também poder enxugar esse código ao máximo sem perder as operações dele, mas por enquanto a prioridade é fazê-lo não dar erro.
  9. Agora tá dando bug na hora de gravar os dados também. É que eu gostaria de alocar memória em lugar diferente toda vez que eu faço uma interação, mas eu só queria manter enquanto o programa estiver ligado, porque todos os dados coletados serão gravados em arquivos binários. Os arquivos estão sendo gravados normalmente, o programa só estava travando na parte onde eu tento ler o que está escrito nos arquivos, então eu acredito que eu tenha feito algo errado no laço de repetição pra leitura do arquivo, mas eu não tenho ideia do que pode ter sido. Pra ler todo o conteúdo de um arquivo binário você só precisa fazer um while com com a condição !feof(o ponteiro), um fread e o printf?
  10. O código buga nessa parte e todas as partes onde essa sequência de comandos é repetida. strcpy (OrcamentoObra[i].tipo,"Comercial"); ponteiro = fopen("Cadastrocomercial.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de imóvel comercial realizado, tente novamente!\n"); system ("pause"); exit (1); } printf ("Imóveis Comerciais"); j = 0; while (!feof(ponteiro)) { fread(&CadastroImovel,sizeof(struct cadastro2), 1, ponteiro); printf ("\nCódigo = %d\nProprietário = %s\n", CadastroImovel[j].codigo, CadastroImovel[j].proprietario); j++; } printf ("\nDigite o código do imóvel que será realizado o orçamento\n"); scanf ("%d",&OrcamentoObra[i].codigoi); system ("cls"); } Esse laço de repetição pra leitura está certo? Por favor, me ajudem!
  11. A parte do meu código onde eu gravo informações no arquivo binário aparentemente está correta, porque todos os arquivos são criados normalmente e eu consigo adicionar informações a eles e o tamanho é aumentado quase que simultaneamente. Estou com problemas para passar os dados desses arquivos para as variáveis e apresentar na tela, alguém poderia me ajudar a descobrir o que estou fazendo de errado? Na hora que vai mostrar a lista de dados na tela, o programa simplesmente trava. int orcamento(void) { struct movimentacao *OrcamentoObra; struct cadastro2 *CadastroImovel; struct cadastro1 *CadastroColab; int i = -1, j, k, l, m = -1, n = -1, o = -1, aloc = 0, fim, opcao7, opcao8, loop5; FILE *ponteiro; do { printf ("Digite o número da sua opção desejada\nEX: 2\n"); printf ("\n"); printf ("1) Realizar o orçamento de uma obra \n"); printf ("2) Voltar ao menu anterior \n"); printf ("3) Encerrar o processo \n"); scanf ("%d",&opcao7); system ("cls"); switch(opcao7) { case 1: i++; aloc++; OrcamentoObra = (movimentacao*) malloc(aloc * sizeof(movimentacao)); if (!OrcamentoObra) { printf("O orçamento infelizmente não poderá ser realizado!\n"); exit(1); } else { do { printf ("Digite o tipo de imóvel que será realizado o orçamento"); printf ("\nEX: 3\n"); printf ("1) Comercial\n"); printf ("2) Construção Civil\n"); printf ("3) Residencial \n"); scanf ("%d",&opcao8); system ("cls"); if (opcao8 == 1) { strcpy (OrcamentoObra[i].tipo,"Comercial"); ponteiro = fopen("Cadastrocomercial.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de imóvel comercial realizado, tente novamente!\n"); system ("pause"); exit (1); } printf ("Imóveis Comerciais"); j = 0; while (!feof(ponteiro)) { fread(&CadastroImovel,sizeof(struct cadastro2), 1, ponteiro); printf ("\nCódigo = %d\nProprietário = %s\n", CadastroImovel[j].codigo, CadastroImovel[j].proprietario); j++; } printf ("\nDigite o código do imóvel que será realizado o orçamento\n"); scanf ("%d",&OrcamentoObra[i].codigoi); system ("cls"); } else { if (opcao8 == 2) { strcpy (OrcamentoObra[i].tipo,"Construção Civil"); ponteiro = fopen("Cadastroconstrucaocivil.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de imóvel de construção civil realizado, tente novamente!\n"); system ("pause"); exit (1); } printf ("Imóveis de Construção Civil"); k = 0; while (!feof(ponteiro)) { fread(&CadastroImovel,sizeof(struct cadastro2), 1, ponteiro); printf ("\nCódigo = %d\nProprietário = %s\n", CadastroImovel[k].codigo, CadastroImovel[k].proprietario); k++; } printf ("\nDigite o código do imóvel que será realizado o orçamento\n"); scanf ("%d",&OrcamentoObra[i].codigoi); system ("cls"); } else { if (opcao8 == 3) { strcpy (OrcamentoObra[i].tipo,"Residencial"); ponteiro = fopen("Cadastroresidencial.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de imóvel residencial realizado, tente novamente!\n"); system ("pause"); exit (1); } printf ("Imóveis Residenciais"); l = 0; while (!feof(ponteiro)) { fread(&CadastroImovel,sizeof(struct cadastro2), 1, ponteiro); printf ("\nCódigo = %d\nProprietário = %s\n", CadastroImovel[l].codigo, CadastroImovel[l].proprietario); l++; } printf ("\nDigite o código do imóvel que será realizado o orçamento\n"); scanf ("%d",&OrcamentoObra[i].codigoi); system ("cls"); } else { printf ("Opção inválida!\nTente novamente\n"); system ("pause"); system ("cls"); loop5 = 1; } } } }while(loop5!=0); } free (CadastroImovel); fclose (ponteiro); ponteiro = fopen("Cadastroarquiteto.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de arquiteto realizado, tente novamente!\n"); system ("pause"); exit (1); } fread(&CadastroColab,sizeof(struct cadastro1), 1, ponteiro); m++; OrcamentoObra[i].codigoc1 = CadastroColab[m].codigo; strcpy (OrcamentoObra[i].nome1 , CadastroColab[m].nome); free (CadastroColab); ponteiro = fopen("Cadastroengenheiro.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de engenheiro realizado, tente novamente!\n"); system ("pause"); exit (1); } fread(&CadastroColab,sizeof(struct cadastro1), 1, ponteiro); n++; OrcamentoObra[i].codigoc2 = CadastroColab[n].codigo; strcpy (OrcamentoObra[i].nome2 , CadastroColab[n].nome); free (CadastroColab); ponteiro = fopen("Cadastropedreiro.dat", "rb"); if (ponteiro == NULL) { printf ("Nenhum cadastro de pedreiro realizado, tente novamente!\n"); system ("pause"); exit (1); } fread(&CadastroColab,sizeof(struct cadastro1), 1, ponteiro); o++; OrcamentoObra[i].codigoc3 = CadastroColab[o].codigo; strcpy (OrcamentoObra[i].nome3 , CadastroColab[o].nome); system ("pause"); system ("cls"); printf ("DADOS DO ORÇAMENTO DA OBRA\n"); printf ("\nTipo de imóvel = %s", OrcamentoObra[i].tipo); printf ("\nCódigo do imóvel = %d", OrcamentoObra[i].codigoi); printf ("\n\nNome do arquiteto = %s", OrcamentoObra[i].nome1); printf ("\nCódigo do arquiteto = %d", OrcamentoObra[i].codigoc1); printf ("\nNome do engenheiro = %s", OrcamentoObra[i].nome2); printf ("\nCódigo do engenheiro = %d", OrcamentoObra[i].codigoc2); printf ("\nNome do pedreiro = %s", OrcamentoObra[i].nome3); printf ("\nCódigo do pedreiro = %d", OrcamentoObra[i].codigoc3); if (OrcamentoObra[i].tipo == "Residencial") { printf ("\nValor total dos gastos = 30.000,00\n"); } else { if (OrcamentoObra[i].tipo == "Comercial") { printf ("\nValor total dos gastos = 60.000,00\n"); } else { if (OrcamentoObra[i].tipo == "Construção civil") { printf ("\nValor total dos gastos = 90.000,00\n"); } } } free (OrcamentoObra); break; case 2: fim = 1; break; case 3: fim = 2; break; default: printf ("Opção inválida!\nTente novamente\n"); system ("pause"); system ("cls"); } }while(opcao7!=2 && opcao7!=3); return fim; } Resolvi postar apenas a função onde eu faço a leitura, ai se vocês não encontrarem nada para arrumar, eu posto as outras partes do código. Agradeço desde já pela atenção
  12. Eu acho que já consegui arrumar tudo. Como o case não aceita strings, quando eu digitava enter, estava entrando na opção de default, mas eu consegui resolver isso com alguns getchar (); .
  13. Eu consegui acessar as outras opções em outro tópico, nesse não está vindo, fica travado em html. Mas se não tem problema postar assim, então aqui vai: Algoritmo "CadastrarClienteeAutomovel" Tipo Processos = registro Codigo : inteiro Nome, Marca, Modelo, Cor, Ano, Placa, Chassi : caractere fimregistro Var // Seção de Declarações das variáveis Cadastro : Vetor [1..100] de Processos i ,j, n, o, p, q : inteiro Inicio // Seção de Comandos, procedimento, funções, operadores, etc... q := 1 enquanto q = 1 faca escreval ("MENU PRINCIPAL") escreval (" ") escreval ("1- Cadastrar cliente") escreval ("2- Checar um cadastro já realizado") escreval ("3- Fechar o programa") leia (o) limpatela escolha o caso 1 escreval ("Digite o número de clientes a serem cadastrados : ") leia (n) limpatela j := 1 repita i := i + 1 Cadastro[i].Codigo:= i + 1000 escreval ("CADASTRO") escreval (" ") escreval ("Digite o nome do cliente : ") leia (Cadastro[i].Nome) escreval ("Digite a marca do veículo : ") leia (Cadastro[i].Marca) escreval ("Digite o modelo do veículo : ") leia (Cadastro[i].Modelo) escreval ("Digite a cor do veículo : ") leia (Cadastro[i].Cor) escreval ("Digite o ano do veículo : ") leia (Cadastro[i].Ano) escreval ("Digite o código da placa do veículo : ") leia (Cadastro[i].Placa) escreval ("Digite o código de chassi do veículo : ") leia (Cadastro[i].Chassi) j := j + 1 limpatela ate j > n escreval ("Escolha uma opção:") escreval ("1- Voltar ao menu principal") escreval ("2- Fechar o programa") leia (q) limpatela caso 2 se (Cadastro[1].Codigo<1000) então escreval ("Sem clientes cadastrados!") escreval (" ") escreval ("Escolha uma opção:") escreval ("1- Voltar ao menu principal") escreval ("2- Fechar o programa") leia (q) limpatela senao escreval ("CLIENTES CADASTRADOS") escreval (" ") i := 1 enquanto (Cadastro[i].Codigo>1000) faca escreval ("Código : ", Cadastro[i].Codigo) escreval ("Nome do cliente: ", Cadastro[i].Nome) escreval (" ") i := i + 1 fimenquanto escreval ("Digite o código do cliente que você deseja acessar as informações") leia (p) limpatela escreval ("Código : ", Cadastro[p-1000].Codigo) escreval ("Nome do cliente: ", Cadastro[p-1000].Nome) escreval ("Veículo") escreval ("Marca : ", Cadastro[p-1000].Marca) escreval ("Modelo: ", Cadastro[p-1000].Modelo) escreval ("Cor : ", Cadastro[p-1000].Cor) escreval ("Ano : ", Cadastro[p-1000].Ano) escreval ("Placa : ", Cadastro[p-1000].Placa) escreval ("Chassi : ", Cadastro[p-1000].Chassi) escreval (" ") escreval ("Escolha uma opção:") escreval ("1- Voltar ao menu principal") escreval ("2- Fechar o programa") leia (q) limpatela fimse caso 3 limpatela interrompa outrocaso repita escreval ("Opção inválida!") escreval (" ") escreval ("Escolha uma opção:") escreval ("1- Voltar ao menu principal") escreval ("2- Fechar o programa") leia (q) limpatela ate q < 3 fimescolha fimenquanto Fimalgoritmo
  14. o codigo é um pouco grande e eu percebi que coloquei um case dentro de outro, será que pode ser isso? aqui a parte do código até o primeiro case. int controlepag(void) { struct controle pagamento[100]; int a, b, c, fim, op, horas; char o[5]; do { printf ("Escolha uma opção \n"); printf ("\n"); printf ("1) Cadastrar um funcionário \n"); printf ("2) Verificar o cadastro de um funcionário \n"); printf ("3) Voltar ao menu anterior \n"); printf ("4) Encerrar o processo \n"); scanf ("%d",&op); system ("cls"); switch(op) { case 1: pagamento[a].codigo = a + 2001; printf ("Digite o nome do funcionário : \n"); scanf (pagamento[a].nome); printf ("O código do funcionário é %d \n", pagamento[a].codigo); system ("pause"); system ("cls"); strcpy (o,"A"); while (o!="D") { printf ("Selecione um serviço que o funcionário realizou : \n"); printf ("A) 1M \n"); printf ("B) 2S \n"); printf ("C) 3F \n"); printf ("D) Encerrar cálculo de salário \n"); scanf ("%s",&o); system ("cls"); switch (o) { case "A" : printf ("Quantas horas o funcionário trabalhou nesse setor : \n"); scanf ("%d",&horas); pagamento[a].salario += horas * 100; break; case "B" : printf ("Quantas horas o funcionário trabalhou nesse setor : \n"); scanf ("%d",&horas); pagamento[a].salario += horas * 200; break; case "C" : printf ("Quantas horas o funcionário trabalhou nesse setor : \n"); scanf ("%d",&horas); pagamento[a].salario += horas * 300; break; case "D" : printf ("Cálculo encerrado! \n"); printf ("\n"); system ("pause"); system ("cls"); break; default : printf ("Opção inválida! Tente novamente. \n"); printf ("\n"); system ("pause"); system ("cls"); break; } } a += 1; break; O problema aparece no switch (o).
  15. Eu estou tentando mandar o código, mas a opção para usar a tag de code só está me trazendo a de html. Eu só estou conseguindo postar códigos com tag personalizada quando inicio um tópico.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×