Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
na.vicente

Procurar o proximo em ordem alfabetica

Recommended Posts


carro=record;
placa:string;
modelo:string;
fabricante:string;
ano:integer;
preco:integer;
end;

Edição do preço de um carro (a busca deve ser feita baseada no modelo e, caso haja mais de um carro, na placa. Se o modelo não for encontrado, o próximo em ordem alfabética deve ser apresentado. Semelhantemente, se a placa de um modelo existente não for encontrada, o próximo em ordem alfabética de placa deve ser apresentado.);

Fiz isso aqui, mas tá errado:


procedure editar_preco;
var
nome:string;
i:integer;
temp:real;
teste,teste2,teste3,teste4:integer;
placaaux:string;
posicao,posicao2:integer;
resposta:char;
begin
assign(arquivo,'catalogo.dat');
reset(arquivo);
if (total_carros=0) then
begin
writeln('Nao é possivel editar o preco do carro, uma vez que nenhum carro foi inserido ');
writeln('Entre com algum carro antes ');
end
else
begin
writeln('Digite o modelo do carro: ');
readln(nome);
if (total_carros=1) then
begin
if (lista_carros[0].modelo=nome) then
begin
writeln('Digite o novo valor para o preco do carro: ');
readln(temp);
lista_carros[0].preco:=temp;
seek(arquivo,0);
write(arquivo,lista_carros[0]);
writeln('Alteracao feita com sucesso ');
end
else
begin
writeln('O carro armazenado nao é deste modelo ');
end;
end
else
begin
teste:=0;
teste2:=0;
for i:=0 to total_carros-1 do
begin
if(lista_carros[i].modelo=nome) then
begin
teste:=teste+1;
posicao:=i;
end;
end;
if (teste=0) then
begin
writeln('Esse modelo nao existe neste catalogo ');
for i:=0 to total_carros-1 do
begin
if (lista_carros[i].modelo>nome) then
begin
posicao:=i;
teste2:=teste2+1;
break;
end;
end;
if (teste2=0) then
begin
posicao:=0;
end;
writeln;
writeln('O proximo modelo, em ordem alfabetica, é: ');
writeln(lista_carros[posicao].modelo);
writeln;
writeln('Deseja editar o preco do primeiro/unico carro deste modelo? (S/N) ');
readln(resposta);
if (resposta='s') or (resposta='S') then
begin
for i:=0 to total_carros-1 do
begin
if (lista_carros[i].modelo=lista_carros[posicao].modelo) then
begin
posicao2:=i;
end;
end;
writeln;
writeln('Qual sera o novo preco? ');
readln(temp);
lista_carros[posicao2].preco:=temp;
seek(arquivo,posicao2);
write(arquivo,lista_carros[posicao2]);
writeln('Alteracao feita com sucesso ');
end;
end;
if (teste=1) then
begin
writeln('So existe um carro deste modelo ');
writeln;
writeln('Qual sera o novo preco do carro? ');
readln(temp);
lista_carros[posicao].preco:=temp;
seek(arquivo,posicao);
write(arquivo,lista_carros[posicao]);
writeln('Alteracao feita com sucesso ');
end;
if (teste>1) then
begin
teste3:=0;
writeln('Existe mais que um carro desse modelo ');
writeln('Digite a placa do carro: ');
readln(placaaux);
for i:=0 to total_carros-1 do
begin
if (lista_carros[i].modelo=nome) then
begin
if (placaaux=lista_carros[i].placa) then
begin
writeln('Qual sera o novo preco do carro? ');
readln(temp);
lista_carros[i].preco:=temp;
seek(arquivo,i);
write(arquivo,lista_carros[i]);
writeln('Alteracao feita com sucesso ');
teste3:=teste3+1;
end;
end;
end;
if (teste3=0) then
begin
teste4:=0;
writeln('Nao existe nenhum carro deste modelo com esta placa ');
for i:=0 to total_carros-1 do
begin
if (lista_carros[i].modelo=nome) then
begin
teste4:=teste4+1;
if (placaaux<lista_carros[i].placa) then
begin
posicao:=i;
end;
end;
break;
end;
if (teste4=0) then
begin
for i:=0 to total_carros-1 do
begin
if (lista_carros[i].modelo=nome) then
begin
posicao:=i;
break;
end;
end;
end;
end;
writeln('A proxima placa, em ordem alfabetica deste modelo, é: ');
writeln(lista_carros[posicao].placa);
writeln;
writeln('Deseja editar o preco deste carro? (S/N) ');
readln(resposta);
if (resposta='s') or (resposta='S') then
begin
writeln;
writeln('Qual sera o novo preco?');
readln(temp);
lista_carros[posicao].preco:=temp;
seek(arquivo,posicao);
write(arquivo,lista_carros[posicao]);
writeln('Alteracao feita com sucesso ');
end;
end; //else do total
end;
end;
close(arquivo);
end;

Alguém pode me dar uma luz? Não to conseguindo imaginar essas partes onde pede para encontrar o proximo em ordem alfabetica. Seria o depois ou antes?

Por favor, me ajudem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





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

×