Ir ao conteúdo
  • Cadastre-se

Procurar o proximo em ordem alfabetica


Visitante: na.vicente

Posts recomendados

Visitante: na.vicente
 


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.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...