Sota Posted November 26, 2005 at 07:29 PM Report #7456 Posted November 26, 2005 at 07:29 PM Boas. Tou com um problema que é o seguinte preciso de pegar num mabriz predefenida que depois vai ser alterada pelo utilizador. se alguem nao tiver aperceber a minha duvida e tento me explicar melhor. comprimentos
Warrior Posted November 27, 2005 at 12:40 AM Report #7471 Posted November 27, 2005 at 12:40 AM Não percebi bem qual é o teu problema. Se desses um exemplo, ou dissesses melhor qual é o problema em si.. não consegues ler a matriz? não consegues alterar? especifica
Sota Posted November 27, 2005 at 11:59 AM Author Report #7475 Posted November 27, 2005 at 11:59 AM et e o seguinte o trabalho que tenho de fazer é o seguinte eu tenho um horario de comboios: 441 442 443 444 445 446 A| 9:10 15:35 7:40 B| | 10:30 17:50 | C| 11:20 11:10 | | D| | | 19:00 9:30 | E| | 13:40 20:40 | F| 14:00 21:50 11:00 em que a letras sao as estaçoes e e os numeros os combois. O meu problema tá agr em construir um programa que dê a possibilidade de se editar o horário do exemplo dado, conhecido em tempo de compilação. Até ao momento em que explicite o desejo de terminar a execução, o utilizador poderá ir escolhendo qualquer das seguintes operações elementares: 1)Apagar, no horário, a informação relativa a um dado comboio e uma dada estação. Com esta operação garante-se que este comboio não passará na estação indicada. 2)Suprimir a paragem de um dado comboio numa dada estação. O resultado desta operação será a substituição do respectivo horário pelo símbolo '|'. 3)Modificar o horário de um dado comboio numa dada estação. Se for o caso, esta operação também pode estender o percurso do comboio a essa estação ou forçar uma paragem que não existia antes. Partindo do horário dado e imaginando que os caracteres 'A', 'S' e 'M' são os comandos, respectivamente, das operações referidas nas alíneas 1), 2) e 3), a seguinte sequência possível de caracteres introduzidos pelo teclado (sendo ¿ um "enter"): A ¿ F ¿ 445 ¿ M ¿ D ¿ 441 ¿ 11 ¿ 15 ¿ M ¿ C ¿ 443 ¿ 8 ¿ 5 ¿ M ¿ D ¿ 443 ¿ 9 ¿ 20 ¿ M ¿ E ¿ 443 ¿ 10 ¿ 45 ¿ S ¿ D ¿ 443 ¿ M ¿ C¿ 446¿ 9 ¿ 30 daria origem ao horário mostrado de seguida, perfeitamente aceite pelo programa segundo as hipóteses anteriormente estipuladas, apesar de existir agora uma impossibilidade prática do comboio 441 vir a cumprir o novo percurso: HORÁRIO DOS COMBOIOS NA LINHA A -> F 441 442 443 444 445 446 A| 9:10 15:35 7:40 B| | 10:30 17:50 | C| 11:20 11:10 8:05 | 9:30 D| 11:15 | | 19:00 19:30 | E| | 13:40 10:45 20:40 | F| 14:00 11:00 so que nao sei como fazer tou mm a tona se alguem me podesse dar uma ajuda é que ando aqui as voltas e nao sei por onde começar e que ainda nao csg perceber tambem como se utiliza a funçao record mto bem comprimentos para todos.
Warrior Posted November 27, 2005 at 12:21 PM Report #7478 Posted November 27, 2005 at 12:21 PM Depois de teres lido e gravado a matriz, fazes um menu de opções chamando procedimentos do genero repeat clrscr; writeln('A. Alterar'); writeln('S. Suprimir'); writeln('M. Modificar'); writeln('0. Sair'); case readkey of 'A': alterar; 'B': suprimir; 'M': modificar; '0': halt(0) end; Depois é só criar os procedimentos que vão ler o resto dos parametros (no caso do apagar por exemplo, ler a estação e o comboio) e fazer as operações na matriz. Acho que tinhas duvidas na forma como estruturar e começar, portanto deixo as operações para ti (depende muito da forma como tiveres a guardar a informação na matriz)
Sota Posted November 27, 2005 at 12:34 PM Author Report #7479 Posted November 27, 2005 at 12:34 PM pois so que o meu problema e mm como vou estruturar a matriz :S Do genero como intruduzo o horario no pascal e depois o seguidamente como alterar :S eu sei pouco de pascal tou hoje a pesquisar etc
Sota Posted November 27, 2005 at 03:35 PM Author Report #7484 Posted November 27, 2005 at 03:35 PM axo que ja sei so que vai dar uma coisas assim: var hor : array [A..F,441..446]of integer; procedure incrementarvalores; begin hor[A,441]:=9:10 hor[A,442]:= hor[A,442]:= hor[A,442]:= ...
Warrior Posted November 27, 2005 at 04:47 PM Report #7495 Posted November 27, 2005 at 04:47 PM Não pode ser assim, porque declarando a matriz como inteira ("of integer") não podes fazer 'a'..'f'. Eu talvez resolvesse assim: - Criava um vector para guardar as estações ([1..26] of char) - Criava um vector para guardar os comboios ([1..NumeroMaximoDeComboios] of integer (talvez limitasse a 100)) - Matriz [1..26,1..NumeroMaximoDeComboios] of string (tratava o horario (está na forma hh:mm) como strings) Depois depende de como os dados são inseridos.. Eu não faço ideia de como é o input, mas se for exactamente como colocaste no inicio, começava por ler a primeira linha, separar as estações, e coloca-las no vector das estações, depois fazia o resto da leitura por sentinela, pode ser por exemplo while (not eof) (até o ficheiro de input acabar) se for algum programa a testar o codigo, ou entao outra forma qualquer (como é que se sabe que o utilizador nao quer introduzir mais dados? isso nao foi dito no enunciado). Gravava a estação (nome, neste caso "Letra") no vector das estações, e depois o horario ia gravando na matriz. Se disseres ao certo como é o input é mais facil (por exemplo, nao me parece que sejam usados "tabs" no input, e ali tens)
Sota Posted November 27, 2005 at 06:48 PM Author Report #7506 Posted November 27, 2005 at 06:48 PM bom et eu deixo aqui o enuciado todo secalhar é melhor: Uma determinada empresa de caminhos de ferro possui uma linha que liga diversas estações, sendo estas identificadas por letras maiúsculas consecutivas. Pretende-se fazer, por via informática, a edição interactiva do horário dos comboios naquela linha, não havendo distinção, para uma mesma estação não terminal, entre horas de chegada e horas de partida. O resultado de cada passo da edição deverá ser visualizado no ecrã do computador, na forma mostrada pelo exemplo seguinte: HORÁRIO DOS COMBOIOS NA LINHA A -> F 441 442 443 444 445 446 A| 9:10 15:35 7:40 B| | 10:30 17:50 | C| 11:20 11:10 | | D| | | 19:00 19:30 | E| | 13:40 20:40 | F| 14:00 21:50 11:00 Os comboios são designados por números inteiros consecutivos, as horas exprimem-se por valores de 0 a 24 e os minutos ocupam sempre duas posições de escrita. Por hipótese, qualquer operação elementar de edição do horário apenas incidirá na modificação da informação a ser apresentada para um dado comboio e uma dada estação. Como consequência, será necessário proceder-se a uma sequência de várias operações elementares para a actualização de um horário envolvendo vários comboios ou estações. Construa um programa que dê a possibilidade de se editar o horário do exemplo dado, conhecido em tempo de compilação. Até ao momento em que explicite o desejo de terminar a execução, o utilizador poderá ir escolhendo qualquer das seguintes operações elementares: Apagar, no horário, a informação relativa a um dado comboio e uma dada estação. Com esta operação garante-se que este comboio não passará na estação indicada. Suprimir a paragem de um dado comboio numa dada estação. O resultado desta operação será a substituição do respectivo horário pelo símbolo '|'. Modificar o horário de um dado comboio numa dada estação. Se for o caso, esta operação também pode estender o percurso do comboio a essa estação ou forçar uma paragem que não existia antes. Parte-se do princípio de que o horário inicial está correcto e é coerente. Por exemplo, cada comboio apresenta um percurso sem descontinuidades entre estações. As operações elementares só deverão ser executadas se forem válidas, havendo que informar o utilizador em caso contrário. Garante-se, desta forma, que o horário editado permanecerá correcto. Para não tornar o programa demasiado complexo, há, no entanto, um tipo de validação que não será exigido: que, para um dado comboio, as horas atribuídas se mantenham em sequência crescente. Por outro lado, também não se considera erro a substituição de um valor por esse mesmo valor (por exemplo, ao tentar-se eliminar uma estação do percurso dum comboio que não passa nessa estação). Admite-se que possa haver comboios desactivados (como o 443 do exemplo) ou que tenham apenas uma estação como percurso (neste caso obrigatoriamente com horas e minutos atribuídos). Deste modo será possível criar-se qualquer configuração horária a partir de um horário completamente vazio. Seguem-se duas regras a ter em conta no processo de edição e que são do conhecimento geral das pessoas familiarizadas com a consulta de horários de caminhos de ferro: Para cada comboio existe um só percurso, que não deve apresentar qualquer descontinuidade entre estações. O percurso de qualquer comboio não deve começar nem acabar com o símbolo '|'. Partindo do horário dado e imaginando que os caracteres 'A', 'S' e 'M' são os comandos, respectivamente, das operações referidas nas alíneas 1), 2) e 3), a seguinte sequência possível de caracteres introduzidos pelo teclado (sendo ¿ um "enter"): A ¿ F ¿ 445 ¿ M ¿ D ¿ 441 ¿ 11 ¿ 15 ¿ M ¿ C ¿ 443 ¿ 8 ¿ 5 ¿ M ¿ D ¿ 443 ¿ 9 ¿ 20 ¿ M ¿ E ¿ 443 ¿ 10 ¿ 45 ¿ S ¿ D ¿ 443 ¿ M ¿ C¿ 446¿ 9 ¿ 30 daria origem ao horário mostrado de seguida, perfeitamente aceite pelo programa segundo as hipóteses anteriormente estipuladas, apesar de existir agora uma impossibilidade prática do comboio 441 vir a cumprir o novo percurso: HORÁRIO DOS COMBOIOS NA LINHA A -> F 441 442 443 444 445 446 A| 9:10 15:35 7:40 B| | 10:30 17:50 | C| 11:20 11:10 8:05 | 9:30 D| 11:15 | | 19:00 19:30 | E| | 13:40 10:45 20:40 | F| 14:00 11:00
shark4ever Posted November 29, 2005 at 06:58 PM Report #7647 Posted November 29, 2005 at 06:58 PM Afinal como é k se altera as cenas dentro das matrizes
GpL Posted November 29, 2005 at 09:51 PM Report #7672 Posted November 29, 2005 at 09:51 PM Afinal como é k se altera as cenas dentro das matrizes tipo tens este array exemplo[0..20] of integer; para guardares ou alterares a posição 1 fazes exemplo[1]:=5; (podia ser outro inteiro qualquer em vez de 5..)
Sota Posted November 29, 2005 at 10:00 PM Author Report #7675 Posted November 29, 2005 at 10:00 PM type horario = record para: string [6]; npassa:char ; end; tipohorario = array ['A'..'F',441..446] of horario; var hor : tipohorario; f:char; procedure tabela ; var x:char; y: integer; begin for x:='A' to 'F' do for y:=441 to 446 do hor[x,y].npassa:= '0' ; hor['A',441].para:= '09:10'; hor['A',444].para:='15:35 '; hor['A',446].para:=' 07:40'; hor['B',442].para:= '10:30'; hor['B',444].para:=' 17:50'; hor['C',441].para:= '11:20'; hor['C',442].para:= '11:10'; hor['D',444].para:= '19:00'; hor['D',445].para:= '19:30'; hor['E',442].para:= '13:40'; hor['E',445].para:= '20:40'; hor['F',441].para:= '14:00'; hor['F',445].para:= '21:50'; hor['F',446].para:= '11:00'; hor['B',441].para:= '|'; hor['D',441].para:= '|'; hor['E',441].para:= '|'; hor['D',442].para:= '|'; hor['C',444].para:= '|'; hor['B',446].para:= '|'; hor['C',446].para:= '|'; hor['D',446].para:= '|'; hor['E',446].para:= '|'; end; tipo ja tenho a tabla feita so que agr falatame fazer a funçoes de apagar suprimir e modificar eu tenho estas duas ja feitas [code]procedure apagar; var x: integer; e,c:char; begin writeln('insira a estação'); read (e); writeln('insira o comboio'); readln(c); if (ORD(e) < 65) or (ord(e)> 70) then writeln('ERRO ESSA ESTAÇÃO NAO EXISTE') else begin if hor[chr(ord( e )+1),c].para <> '' then writeln('ERRO NAO PODE APAGAR ESSA PARAGEM') else hor[e,c]:=''; x:=0; while (hor[chr(ord( e )-x),c] = '|') do begin hor[chr(ord( e )-x),c]:=''; x:=x-1; end; end; while (hor[chr(ord( e )-x),c] = '|') do begin hor[chr(ord( e )-x),c]:=''; (*duvida*) x:=x-1; end; end; procedure suprimir; var e,c:char; begin writeln('insira a estação'); read (e); writeln('insira o comboio'); readln(c); if (ORD (e) < 65) or (ord (e) > 70) then writeln('ERRO ESSA ESTAÇÃO NAO EXISTE'); else begin if (hor[chr(ord +1),c].para = '') or (hor[chr(ord -1),c].para = '') then writeln('ERRO NAO PODE SUPRIMIR ESSA PARAGEM'); else hor[e,c].para:='|'; end; mas diz que error mitch match:s alguem me podia ajudar
GpL Posted November 29, 2005 at 10:24 PM Report #7688 Posted November 29, 2005 at 10:24 PM dá esse erro onde ? esse é o tipo de erro que acontece quando declaras uma variavel dum tipo e tentas dar lhe valores de outro tipo.
Sota Posted November 30, 2005 at 10:46 AM Author Report #7712 Posted November 30, 2005 at 10:46 AM if hor[chr(ord( e )+1),c] <> '' then hor[e,c]:=''; while (hor[chr(ord( e )-x),c] = '|') do while (hor[chr(ord( e )-x),c] = '|') do nestes sitios
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