kde je chyba?:(

Programovacie jazyky, rady, poradňa...
sisa93
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 11
Registrovaný: 23 mar 2011, 8:56

kde je chyba?:(

Príspevok od používateľa sisa93 »

Vytvorte program, ktorý pole A prepíše do poľa B tak, že vylúči zhodné prvky.
program prepis_pola;
uses crt;
var p,x :integer;
poleA array [1..20] of integer;
poleB array [1..20] of integer;
begin
clrscr;
writeln(‘Zadajte pocet prvkov: ‘);
readln(p);
writeln(‘Zadajte prvky prveho pola:’);

for x:=1 to p do
begin
writeln(‘Zadajte prvok c.’,x,’.:’);
readln(poleA[x]);
end;
writeln(‘Zadajte prvky druheho pola:’);
for x:=1 to p do
begin
writeln (‘Zadajte prvok c.’,x,’.:’);
readln(poleB[x]);
end;
clrscr;
for x:=1 to p write(poleA[x],’ ‘);
writeln;
for x:=1 to p write(poleB[x],’ ‘);
writeln;
writeln;
for x:=1 to p do
if pole[x]<>poleB[x] then poleB[x]:=poleA[x]+’ ‘+poleB[x];
for x:=t to p do write(poleB[x]);
readln;
end.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: kde je chyba?:(

Príspevok od používateľa audiotrack »

v tebe, že si nepochopila zadanie. Neviem prečo to poleB načítavaš, keď do neho máš dávať prvky z poleA ktoré sa v ňom nachádzajú iba raz. Užívateľ prvky polaB nemá vôbec zadávať. Okrem toho tam používaš v podmienke pole[x] čo neexistuje (lebo máš poleA a poleB)

a daj si to do code, takto sa to zle číta
sisa93
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 11
Registrovaný: 23 mar 2011, 8:56

Re: kde je chyba?:(

Príspevok od používateľa sisa93 »

Vytvorte program, ktorý pole A prepíše do poľa B tak, že vylúči zhodné prvky.
program prepis_pola;
uses crt;
var p,x :integer;
poleA array [1..20] of integer;
poleB array [1..20] of integer;
begin
clrscr;
writeln(‘Zadajte pocet prvkov: ‘);
readln(p);
writeln(‘Zadajte prvky prveho pola:’);

for x:=1 to p do
begin
writeln(‘Zadajte prvok c.’,x,’.:’);
readln(poleA[x]);
end;
writeln(‘Zadajte prvky druheho pola:’);
for x:=1 to p do
begin
writeln (‘Zadajte prvok c.’,x,’.:’);
readln(poleB[x]);
end;
clrscr;
for x:=1 to p write(poleA[x],’ ‘);
writeln;
for x:=1 to p write(poleB[x],’ ‘);
writeln;
writeln;
for x:=1 to p do
if pole[x]<>poleB[x] then poleB[x]:=poleA[x]+’ ‘+poleB[x];
for x:=t to p do write(poleB[x]);
readln;
end.
ale ja musim nacitat obe polia a potom ich porovnavat ...ak su tam rovnake prvky tak sa jednen z nich vyluci,... (neviem to dat do BB kodu.. :? )
Dede
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 318
Registrovaný: 29 dec 2010, 19:58
Bydlisko: River
Kontaktovať používateľa:

Re: kde je chyba?:(

Príspevok od používateľa Dede »

To

Kód: Vybrať všetko

 daj pred "Vytvorte" alebo to celé označ a ťukni CODE.
Gregi
Light Star
Light Star
Príspevky: 224
Registrovaný: 24 mar 2005, 11:34

Re: kde je chyba?:(

Príspevok od používateľa Gregi »

Ale idealne riesenie je podla mna cez dynamicke polia, pretoze takto v tom poli tie prvky ostatnu (sice skryte). :(

Kód: Vybrať všetko

program PREPIS_POLA;
uses Crt;
var
  p,x,a: Integer;
  poleA,poleB: array [1..20] of Integer;

BEGIN
  ClrScr;
  Write ('Zadajte pocet prvkov: ');
  ReadLn(p);
  WriteLn ('Zadajte prvky prveho pola:');
  for x:=1 to p do begin
    Write ('Zadajte prvok c.',x,'.:');
    ReadLn(poleA[x]);
  end;
  WriteLn ('Zadajte prvky druheho pola:');
  for x:=1 to p do begin
    Write ('Zadajte prvok c.',x,'.:');
    ReadLn(poleB[x]);
  end;
  ClrScr;
  a:=0;
  for x:=1 to p do
    if poleA[x] <> poleB[x] then
      poleB[x-a] := poleA[x]
    else
      inc (a);
  for :=1 to p-a do Write (poleB[x],',');

END.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: kde je chyba?:(

Príspevok od používateľa audiotrack »

Gregi: tvoje riešenie tiež nerobí to, čo požaduje zadanie. Porovnávaš iba x-ty prvok poľa A s x-tym prvkom poľa B. ALe to ti nezaručí že v poli B na konci nebudem mať hodnoty ktoré nie sú v poli A (ak sa teda bavíme o takej interpretácii zadania ako si sisi myslí, lebo to tiež nie je správne. Má do pola B pridať prvky z pola A ktoré sú v A iba raz)
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: kde je chyba?:(

Príspevok od používateľa mirak2 »

nebude to tak, ze len treba eliminovat duplicity? ked mam poleA 3,4,3,6,5,7,4 tak poleB bude 3,4,6,5,7
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: kde je chyba?:(

Príspevok od používateľa audiotrack »

áno, presne tak to zadanie chápem aj ja. Neviem prečo do poľa B načítava(te) znova nejaké čísla z klávesnice
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: kde je chyba?:(

Príspevok od používateľa mirak2 »

jedine tak, lebo to je uloha taka akurat zaciatocnicka, kde si clovek precvici cykly, podmienky a algoritmicke rozmyslanie...
sisa93
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 11
Registrovaný: 23 mar 2011, 8:56

Re: kde je chyba?:(

Príspevok od používateľa sisa93 »

Kód: Vybrať všetko

uses crt;
var a,b:array[1..100]of integer;
x,y,z:integer;
begin
clrscr;
randomize;
for x:=1 to 10 do
begin;
a[x]:=random(5)+1;
write(a[x]);
end;
writeln;
for x:=1 to 10 do
for y:=x+1 to 10 do
if a[x]=a[y] then a[y]:=0;
for x:=1 to 10 do
if a[x]=0 then else begin
inc(z);
b[z]:=a[x];
end;
for x:=1 to z do
write(b[x]);
readln;
end.
takto???....

//autoeditácia príspevku (16 Apr 2011, 22:04)
ahaaa diki
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: kde je chyba?:(

Príspevok od používateľa audiotrack »

1) z nemáš na začiatku inicializovanú na 1
2) skladba if a[x]=0 then else begin je hlúposť, zapíš to ako if a[x]<>0 then begin
3) neviem prečo to pole vytvoríš pre 100 prvkov a pracuješ iba s 10
Gregi
Light Star
Light Star
Príspevky: 224
Registrovaný: 24 mar 2005, 11:34

Re: kde je chyba?:(

Príspevok od používateľa Gregi »

Netreba inicializovat premennu 'z' nakolko Ti potom priradi i '0'.
Ja prikladam riesenie pri zachovani polaA. Urcite by sa to dalo este zmensit, zrychlit, no akosi neviem prist na to ako. Poradite? :wink:

Kód: Vybrať všetko

program PREPIS_POLA;
uses Crt;
const
  max = 10;
var
  pozicia,prvkov,x,y: Integer;
  poleA,poleB: array [1..max] of Integer;
  zapis: Boolean;

BEGIN
  ClrScr;
  Randomize;
  Write ('Zadajte pocet prvkov: ');
  ReadLn(prvkov);
  pozicia:=1;
  for x := 1 to prvkov do begin
    poleA[x] := Random(10)+1;
    Write(poleA[x],',');
  end;
  poleB[1] := poleA[1];
  for x := 2 to prvkov do begin
    zapis := True;
    for y := 1 to pozicia do
      if poleB[y] = poleA[x] then begin
        zapis := False;
        break;
      end;
    if zapis = true then begin
      poleB[pozicia+1] := poleA[x];
      inc(pozicia);
    end;
  end;
  WriteLn;
  for x := 1 to pozicia do Write (poleB[x],',');
  ReadLn;

END.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: kde je chyba?:(

Príspevok od používateľa audiotrack »

Gregi napísal:Netreba inicializovat premennu 'z' nakolko Ti potom priradi i '0'.
s týmto zásadne nesúhlasím. Možno tvoj prekladač defaultne inicializuje neinicializované premenné na nulu. Som si ale istý že na nejakom inom by si tam mal krajnú hodnotu dátového typu (teda extrémne veľké alebo malé číslo)
Napísať odpoveď