• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Cristiano

preciso desenvolver 1 programa k leia noms e dps os imprima por ordm alfabetica

10 mensagens neste tópico

preciso d saber as instrucoes k sao necessarias para meter os nomes a serem imprimidos por ordem alfabetica

help me!!!!!!!!!!!!!!  :P

(tentem responder o mais rapido possivel...tou msm a rasca :wallbash:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lês os nomes para um array e depois podes usar o bubble sort para ordenar o array e/ou mostrar os valores por ordem afabetica.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

opah n da para explcares ixo melhor... ;) n sou grand coisa a programar...mas tenhu d entregar um projecto.... ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Cristiano, o melhor que podes fazer é ler um livro, ou um tutorial na web. O M6 já te disse mais que o necessário, só não te disse o código.. É assim, precisas de fazer um array, recebendo do utilizador os nomes e colocando no array, e depois de usar um algoritmo de ordenação, tal como o Bubblesort, para ordenar os valores que recebeste. No fim, devolves o array, por ordem (um ciclo que o percorra), ao utilizador.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois....mas s n consegui aprender nas aulas ...a ler um livro axo k n vou la...

estou a faxer isto com um colega meu....o maximo k conseguimmos faxer foi isto....mas o programa n corre...

program ordemalfabetica;
const nmax=50;
var
  v: array[1..nmax] of string;
  i,j,n,posMenor: integer;
  temp:string;
begin
  writeln('Digite um inteiro menor ou igual a ' ,nmax, ' :  '); readln(n);
  writeln('Digite ',n,' strings, uma em cada linha);
  for i:=1 to n do readln(v[i]);
  for i:=1 to n-1 do begin
   posMenor:=i;
   for j:=i+1 to n do 
     if v[j] < v[posMenor] then posMenor := j;
     if i <> posMenor then begin
     temp := v[i];
     v[i] := v[posMenor];
     v[posMenor] := temp;
    end;
  end;
  writeln;
  for i:=1 to n do  writeln(v[i]);
end.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes comçar por dizer qual é o erro que te dá a compilar.

Se leres o erro com atenção, vais ver que ele até te indica qual é o erro e em que linha, o que é uma excelente ajuda para o corrgir.

Numa vista de olhos rápida vejo já três erros.

program ordemalfabetica;
const nmax=50;
var
  v: array[1..nmax] of string;
  i,j,n,posMenor: integer;
  temp:string;
begin
  writeln('Digite um inteiro menor ou igual a ' ,nmax, ' :  '); readln(n);
  writeln('Digite ',n,' strings, uma em cada linha);
  for i:=1 to n do readln(v);
  for i:=1 to n-1 do begin
   posMenor:=i;
   for j:=i+1 to n do
     if v[j] < v[posMenor] then posMenor := j;
     if i <> posMenor then begin
     temp := v;
     v := v[posMenor];
     v[posMenor] := temp;
    end;
  end;
  writeln;
  for i:=1 to n do  writeln(v);
end.

Não estás a fechar a string do segundo writeln.

Estás a tentar ler um valor para o array v, o que não é possível. Tens de ler o para uma posição do array v:

for i:=1 to n do readln(v[i]);

Da mesma forma, estás a escrever o array v em vez de escreveres cada posição do array:

for i:=1 to n do  writeln(v[i]);

De novo, reforço que deves ler os erros de compilação com atenção.

Se necessitares de ajuda, podes dizer aqui quais os erros que estás a ter.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja consegui a meter o programa a correr... :cheesygrin:

obrigado pelas ajudas.... ;)

a ideia do programa é introduzir nomes d produtos d uma empresa e imprimi.los por ordem alfabeitca...

mas para completar mais o programa gostava d saber como e k faxo para a exes atribuir a exes produtos outro tipo d informaçoes...(ex:valor,cod_produto,etc)

fico a espera d resp...abc :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Cristiano, podes fazer isso usando tipos estruturados/complexos.

Ou seja, declaras um tipo que tu mesmo defines e que tem um campo/variável para cada tipo de informação que necessitas.

Depois podes declara o array v como sendo desse tipo.

Edit: PS: agradeço que escrevas os teus posts em português correcto, é uma regra do fórum.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é possivel me mostrarem 1 exemplo em codigo de como posso fazer isso? :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

program ordemalfabetica;

const nmax=50;

var

  v: array[1..nmax] of string;

  i,j,n,posMenor, res: integer;

  temp,p:string;

begin

  writeln('Digite o numero de produtos menor ou igual a ' ,nmax, ' :  ');

    readln(n);

  repeat

  writeln('Digite ',n,' produtos, uma em cada linha');

    readln(p);

  writeln('digite valor');

    readln(res);

  until n=n;

  for i:=1 to n do readln(v);

  for i:=1 to n-1 do begin

  posMenor:=i;

  for j:=i+1 to n do

    if v[j] < v[posMenor] then posMenor := j;

    if i <> posMenor then begin

    temp := v;

    v := v[posMenor];

    v[posMenor] := temp;

    end;

  end;

  writeln('resultado:');

  writeln;

for i:=1 to n do  writeln(v);

readln;

end.

gostava d saber como e que faço para meter o progama a repetir o pedido do valor igual ao numero d produtos introduzidos...neste caso "= n"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora