Jump to content

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


Cristiano
 Share

Recommended Posts

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.

Link to comment
Share on other 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.
Link to comment
Share on other 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.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

ja consegui a meter o programa a correr... 😁

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 😁

Link to comment
Share on other 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.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other 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"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.