RO7 Posted March 6, 2015 at 06:35 PM Report Share #578863 Posted March 6, 2015 at 06:35 PM (edited) Boa tarde, eu estou a tirar um curso de gestão e programação de sistemas informáticos, a professora pediu nos um um programa, eu já o terminei só que ele está com um problema que eu olhado para o código não consigo encontrar, se alguém me puder dizer onde está o erro para eu corrigir agradeço, é que tenho de entregar na segunda feira. Program Mod_4 ; var nomecliente:array[1..100]of char; codigocliente:array[1..100]of string; moradacliente:array[1..100]of char; telefonecliente:array[1..100]of integer; contribuintecliente:array[1..100]of integer; nomefornecedor:array[1..100]of char; codigofornecedor:array[1..100]of string; moradafornecedor:array[1..100]of char; telefonefornecedor:array[1..100]of integer; artigosfornecidos:array[1..100]of string; contribuintefornecedor:array[1..100]of integer; nomeartigo:array[1..100]of char; codigoartigo:array[1..100]of string; quantidadeartigo:array[1..100]of integer; precoartigo:array[1..100]of integer; secao,z,x,opcao,qnts,apagar,quant:integer; quere,qual:string; quer:char; //*************************************************** begin textcolor(lightcyan); delay(100); writeln(' ********************************* '); writeln(' * Bem-Vindo à Gráfica * '); writeln(' *********************************'); textcolor(lightred); writeln(''); writeln(' *********************************'); writeln(' * Programa Realizado por: * '); writeln(' * ####### ######## *'); writeln(' *********************************'); delay(1000); textcolor(yellow); writeln('Escolha uma opção:'); writeln(''); textcolor(lightgreen); writeln('1- Dados de clientes'); writeln('2- Dados de Fornecedores'); writeln('3- Stock'); writeln('4- Saír'); readln(secao); Case secao of //*************************************************** 1: begin repeat textcolor(lightmagenta); clrscr; delay(100); gotoxy(15,15); writeln('A Carregar'); delay(100); gotoxy(25,15) ; Writeln('.'); delay(1000); gotoxy(26,15); writeln('.'); delay(1000); gotoxy(27,15); //*************************************************** clrscr; textcolor(yellow); WRITELN('Escolha a opção que pretende '); writeln(''); textcolor(lightgreen); Writeln(' 1-Inserir'); writeln(''); writeln(' 2-Remover'); writeln(''); writeln(' 3-Alterar'); writeln(''); writeln(' 4-Pesquisar'); readln(opcao); //*************************************************** case opcao of 1: begin repeat clrscr; textcolor(yellow); Writeln('Quantos clientes deseja introduzir?'); readln(qnts); clrscr; for x:=1 to qnts do begin clrscr; textcolor(lightcyan); gotoxy(2,5); textcolor(lightcyan); writeln('Nome do Cliente:'); readln(nomecliente[x]); gotoxy(2,7); writeln('Código de cliente:'); readln(codigocliente[x]); gotoxy(2,9); writeln('Morada do cliente'); readln(moradacliente[x]); gotoxy(2,11); writeln('Contacto do cliente:'); readln(telefonecliente[x]); gotoxy(2,13); Writeln('Número de contribuinte:'); readln(contribuintecliente[x]); end; clrscr; textcolor(yellow); writeln('Deseja introduzir um novo cliente?[s]im,[N]ão'); readln(quer); until (quer='n') or (quer='N') end; //*************************************************** 2: begin clrscr; textcolor(yellow); writeln('Qual o codigo do cliente que deseja Remover?'); readln(qual); for x:=1 to qnts do begin if codigocliente[x]=qual then begin nomecliente[x]:='-'; codigocliente[x]:='-'; moradacliente[x]:='-'; telefonecliente[x]:=0; contribuintecliente[x]:=0; textcolor(lightred); writeln('Cliente removido') end else writeln(''); end; end; //*************************************************** 3: begin clrscr; textcolor(yellow); writeln('Qual o codigo do cliente que deseja alterar?'); readln(qual); for x:=1 to 100 do begin if codigocliente[x]=qual then begin clrscr; textcolor(lightcyan); gotoxy(2,5); writeln('Nome de cliente:'); readln(nomecliente[x]); gotoxy(2,7); writeln('Codigo do Cliente:'); readln(codigocliente[x]); gotoxy(2,9); writeln('Morada do cliente:'); readln(moradacliente[x]); gotoxy(2,11); writeln('Contacto do cliente:'); readln(telefonecliente[x]); gotoxy(2,13); writeln('Contribuinte do cliente:'); readln(contribuintecliente[x]); end else writeln(''); end; end; //*************************************************** 4: begin clrscr; textcolor(lightred); writeln('Digite o codigo do cliente que pretende pesquisar?'); readln(quere); for x:=1 to 100 do if codigocliente[x]=quere then begin clrscr; gotoxy(2,5); writeln('Código do Fornecedor:',' ',codigofornecedor[x]); gotoxy(2,7); writeln('Nome do Fornecedor:',' ', nomefornecedor[x]); gotoxy(2,9); writeln('Morada do Fornecedor:',' ',moradafornecedor[x]); gotoxy(2,11); writeln('Contacto do Fornecedor:',' ',telefonefornecedor[x]); gotoxy(2,13); writeln('Número de contribuinte do Fornecedor:',' ',contribuintefornecedor[x]); gotoxy(2,15); writeln('Artigos fornecidos:',' ',artigosfornecidos[x]); end; end; end; clrscr ; writeln('Deseja regressar ao menu?[s]im,[N]ão'); readln(quer); until (quer='n') or (quer='N') end; //*************************************************** 2: begin repeat textcolor(lightmagenta); clrscr; delay(1000); gotoxy(15,15); writeln('A Carregar'); delay(1000); gotoxy(25,15) ; Writeln('.'); delay(100); gotoxy(26,15); writeln('.'); delay(100); gotoxy(27,15); //*************************************************** clrscr; textcolor(yellow); WRITELN('Escolha a opção que pretende '); writeln(''); textcolor(lightgreen); Writeln(' 1-Inserir'); writeln(''); writeln(' 2-Remover'); writeln(''); writeln(' 3-Alterar'); writeln(''); writeln(' 4-Pesquisar'); readln(opcao); //*************************************************** case opcao of 1: begin repeat clrscr; textcolor(yellow); Writeln('Quantos fornecedores deseja introduzir? '); readln(qnts); clrscr; textcolor(lightcyan); for x:=1 to qnts do begin gotoxy(2,5); writeln('Nome do fornecedor:'); readln(nomefornecedor[x]); gotoxy(2,7); writeln('Codigo do Fornecedor:'); readln(codigofornecedor[x]); gotoxy(2,9); writeln('Morada do Fornecedor:'); readln(moradafornecedor[x]); gotoxy(2,11); writeln('Contacto do Fornecedor:'); readln(telefonefornecedor[x]); gotoxy(2,13); writeln('Artigos fornecidos:'); readln(artigosfornecidos[x]); gotoxy(2,15); writeln('Número de contribuinte do cliente:'); readln(contribuintefornecedor[x]); end; clrscr; writeln('Deseja introduzir um novo fornecedor?[s]im,[N]ão'); readln(quer); until (quer='n') or (quer='N') end; //*************************************************** 2: begin clrscr; writeln('Introduza o código do fornecedor que deseja remover?'); readln(qual); for x:=1 to 100 do begin if codigofornecedor[x]=qual then begin nomefornecedor[x]:='-'; codigofornecedor[x]:='-'; moradafornecedor[x]:='-'; telefonefornecedor[x]:=0; artigosfornecidos[x]:='-'; contribuintefornecedor[x]:=0; writeln('Fornecedor removido'); end else writeln(''); end; end; //*************************************************** 3: begin clrscr; writeln('Introduza o código do fornecedor que deseja alterar?'); readln(qual); for x:=1 to 100 do begin if codigofornecedor[x]=qual then begin clrscr; writeln('Nome do fornecedor:'); readln(nomefornecedor[x]); gotoxy(2,5); writeln('Codigo do fornecedor:'); readln(codigofornecedor[x]); gotoxy(2,7); writeln('Morada do fornecedor:'); readln(moradafornecedor[x]); gotoxy(2,9); writeln('Contacto do fornecedor:'); readln(telefonefornecedor[x]); gotoxy(2,11); writeln('Número de artigos fornecidos:'); readln(artigosfornecidos[x]); gotoxy(2,13); writeln('Contribuinte do fornecedor:'); readln(contribuintefornecedor[x]); end else writeln(''); end; end; //*************************************************** 4: begin clrscr; writeln('Introduza código do fornecedor que quer pesquisar?'); readln(quere); for x:=1 to 100 do if codigofornecedor[x]=quere then begin gotoxy(2,5); writeln('O nome do fornecedor é: ', nomefornecedor[x]); gotoxy(2,7); writeln('O codigo do fornecedor é: ', codigofornecedor[x]); gotoxy(2,9); writeln('O morada do fornecedor é: ', moradafornecedor[x]); gotoxy(2,11); writeln('O telefone do fornecedor é: ', telefonefornecedor[x]); gotoxy(2,13); writeln('O numero de artigos fornecidos é: ', artigosfornecidos[x]); gotoxy(2,15); writeln('O contribuinte do fornecedor é: ', contribuintefornecedor[x]); end; end; end; clrscr; writeln('Deseja ir para o menu?[s]im,[N]ão'); readln(quer); until (quer='n') or (quer='N') end; //*************************************************** 3: begin clrscr; Writeln('Qual a quantidade deseja inserir no sistema? (max.15)'); readln(qnts); clrscr; for x:=1 to qnts do begin clrscr; gotoxy(2,5); writeln('Digite o nome do artigo:'); readln(nomeartigo[x]); gotoxy(2,7); writeln('Introduza o Código do artigo:'); readln(codigoartigo[x]); gotoxy(2,9); writeln('Introduza a quantidade do artigo:'); readln(quantidadeartigo[x]); gotoxy(2,11); writeln('Introduza o preço do artigo:'); readln(precoartigo[x]); end; clrscr; if qnts<=10 then writeln('Em stock há menos de 10 unidades desse produto'); end; //*************************************************** 4: begin end; end; end. O problema está depois de inserir um cliente ou fornecedor e voltar ao menu quando escolho a opção ''4-Pesquisar'' devia de aparecer os dados do cliente/fornecedor só que passa muito depressa não entendo porque 😞 Edited March 6, 2015 at 07:20 PM by apocsantos geshi Link to comment Share on other sites More sharing options...
nunopicado Posted March 6, 2015 at 07:44 PM Report Share #578865 Posted March 6, 2015 at 07:44 PM (edited) A questão é que dentro da opção 4, tu mostras os dados mas não fazes uma pausa ao programa para dar tempo do utilizador ver esses dados. Assim, quando acaba de escrever os artigos fornecidos, ele termina imediatamente o ciclo, começando de novo, ou seja, apagando o que escreveu. Tens de colocar algo no fim da opção 4 que faça o programa parar, tipo um readln, por exemplo, que te espera pelo <Enter> para continuar: 4: begin clrscr; textcolor(lightred); writeln('Digite o codigo do cliente que pretende pesquisar?'); readln(quere); for x:=1 to 100 do if codigocliente[x]=quere then begin clrscr; gotoxy(2,5); writeln('Código do Fornecedor:',' ',codigofornecedor[x]); gotoxy(2,7); writeln('Nome do Fornecedor:',' ', nomefornecedor[x]); gotoxy(2,9); writeln('Morada do Fornecedor:',' ',moradafornecedor[x]); gotoxy(2,11); writeln('Contacto do Fornecedor:',' ',telefonefornecedor[x]); gotoxy(2,13); writeln('Número de contribuinte do Fornecedor:',' ',contribuintefornecedor[x]); gotoxy(2,15); writeln('Artigos fornecidos:',' ',artigosfornecidos[x]); writeln('Pressione <Enter> para continuar. . .'); readln; end; end; Claro que, como isto está dentro de um ciclo FOR, tem de carregar 100 vezes no <Enter>, e vai vendo um registo de cada vez. Mas de qualquer maneira, também não cabia tudo no ecrã. Edited March 6, 2015 at 07:46 PM by nunopicado "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
RO7 Posted March 6, 2015 at 08:59 PM Author Report Share #578869 Posted March 6, 2015 at 08:59 PM Obrigado, espero aprender muito mais aqui 👍 Link to comment Share on other sites More sharing options...
nunopicado Posted March 6, 2015 at 09:41 PM Report Share #578871 Posted March 6, 2015 at 09:41 PM Espera lá. Agora é que vi bem. Estava a ver o teu código e pareceu-me que querias mostrar todos os clientes (devido ao uso do FOR). Para o que queres fazer, ou seja, mostrar apenas um que o utilizador escolher, não precisas meter dentro de um ciclo. Repara, tu já tens os dados do cliente num array, acessível por um índice. Quando pedes ao utilizador qual o cliente, estás a receber o índice que ele quer ver. Ou seja, basta aceder ao array directamente com a resposta do utilizador: 4: begin clrscr; textcolor(lightred); writeln('Digite o codigo do cliente que pretende pesquisar?'); readln(quere); if (quere>=1) and (quere<=100) // Uma pequena validação para ter a certeza que o utilizador não escolheu um índice que não exista, para evitar erros de execução then begin clrscr; gotoxy(2,5); writeln('Código do Fornecedor:',' ',codigofornecedor[quere]); // Acede ao array com o índice 'quere' gotoxy(2,7); writeln('Nome do Fornecedor:',' ', nomefornecedor[quere]); gotoxy(2,9); writeln('Morada do Fornecedor:',' ',moradafornecedor[quere]); gotoxy(2,11); writeln('Contacto do Fornecedor:',' ',telefonefornecedor[quere]); gotoxy(2,13); writeln('Número de contribuinte do Fornecedor:',' ',contribuintefornecedor[quere]); gotoxy(2,15); writeln('Artigos fornecidos:',' ',artigosfornecidos[quere]); writeln('Pressione <Enter> para continuar. . .'); readln; end; end; E já agora, mais uma dica. O WriteLn é diferente do Write no sentido em que, além de escrever, muda de linha no final. Ora, se estás a usar o GotoXY para controlar a localização do cursor, não faz sentido deixares que o cursor seja controlado durante a escrita também. Ou seja, sempre que usares o GotoXY, usa o Write e não o WriteLn. Além de teres maior controlo sobre a localização do cursor, é menos uma instrução que o compilador tem de cumprir. É certo que hoje em dia, essa instrução em particular não afecta a performance de um computador, mas ganhar o hábito de programar de forma optimizada vai ajudar-te imenso se algum dia tiveres de fazer um programa com milhares ou milhões de linhas de código. 😉 "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
RO7 Posted March 7, 2015 at 11:59 AM Author Report Share #578895 Posted March 7, 2015 at 11:59 AM Obrigado pelas dicas 👍 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now