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

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

Davi

Responder

Posts

22/10/2021

Davi

Sou novo no fórum. Ele mostra com aspas duplas mas estou usando aspas simples no pascalzim
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar