Dúvida num algoritmo em pascal
22/10/2021
0
Olá pessoal, estou com serias dúvidas nesse exercício:
Construir um algoritmo em que o usuário deverá entrar com o nome de 20 cidades. Após isso, deve entrar também com as distâncias entre cada uma delas (considere que nem todas estão interconectadas, mas haverá sempre um modo de sair de uma cidade e chegar a outra passando por, no máximo, uma cidade). Uma vez que os dados das distâncias estejam armazenados, o usuário poderá entrar com os nomes de 2 cidades e o algoritmo deverá indicar qual a cidade intermediária para o percurso e os valores parciais de trajetos e o valor total da distância. o Processo pára quando entrar com dois nomes de cidade igual à FIM.
Tenho parte do código mas precisa de correções. Alguém consegue me ajudar? E me explicar o que foi corrigido e por que. Desde já agradeço
Construir um algoritmo em que o usuário deverá entrar com o nome de 20 cidades. Após isso, deve entrar também com as distâncias entre cada uma delas (considere que nem todas estão interconectadas, mas haverá sempre um modo de sair de uma cidade e chegar a outra passando por, no máximo, uma cidade). Uma vez que os dados das distâncias estejam armazenados, o usuário poderá entrar com os nomes de 2 cidades e o algoritmo deverá indicar qual a cidade intermediária para o percurso e os valores parciais de trajetos e o valor total da distância. o Processo pára quando entrar com dois nomes de cidade igual à FIM.
Tenho parte do código mas precisa de correções. Alguém consegue me ajudar? E me explicar o que foi corrigido e por que. Desde já agradeço
Program AlgoritmoDoVinicius; var C: array [1..10] of string; D: array [1..10, 1..10] of real; i, j, k, l: integer; cid1, cid2, cidade: string; pos1, pos2: integer; inicial, inter, final: integer; Begin write(''Escreva o nome de 10 cidades''); for i:=1 to 10 do begin write(i,''-ésima cidade: ''); for i := 1 to 10 do read (C[i]) end; for i := 1 to 10 do begin for j := 1 to 10 do begin write(''Digite a distancia entre a"'', i,''-ésima cidade e '', j,''-ésima cidade''); write(''Caso não exista um caminho direto, a distancia deve ser igual a 0''); for i := 1 to 10 do read(D[i,j]) end; end; repeat write(''Entre com o nome de duas cidades para saber qual a distancia entre elas''); read(cid1, cid2); k := 0; l := 0; for i := 1 to 10 do begin if (cid1 = C[i]) then begin k := k + 1; pos1 := i; end else begin write(''Cidade 1 invalida''); end; if (cid2 = C[i]) then begin l := l + 1; pos2 := i; end else begin write(''Cidade2 invalida''); end; end; if (k <> 0) and (l<>0) then begin inicial := pos1; final := pos2; while (D[pos1, pos2]=0) do begin pos1 := pos1 + 1; end; inter := pos1; if (inicial = inter) then begin write(cidade[inicial],''está interconectada a'', cidade[final]); write(''A distancia entre as duas é'', D[inicial, final]); end else begin write(cidade[inicial],''não esta interconectada a'', cidade[final]); write(''Para isso, saia de'',cidade[inicial],''ate'', cidade[inter],'' e chegue em'', cidade[final]); write(''A distância de '', cidade[inicial], '' até'', cidade[inter], '' é : '', D[inicial, inter]); write(''A distância de '', cidade[inter], '' até'', cidade[final], '' é : '', D[inter,final]); write(''A distância de total percorrida é : '', D[inicial,inter]+D[inter,final]); end; end; until ((C[i]=''FIM'') and (C[i]=''FIM'')) End.
Davi
Curtir tópico
+ 0
Responder
Posts
22/10/2021
Davi
Sou novo no fórum. Ele mostra com aspas duplas mas estou usando aspas simples no pascalzim
Responder
Clique aqui para fazer login e interagir na Comunidade :)