kde je chyba?:(
kde je chyba?:(
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.
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
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: kde je chyba?:(
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
a daj si to do code, takto sa to zle číta
Re: kde je chyba?:(
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..
)
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.
Kód: Vybrať všetko
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
- Príspevky: 318
- Registrovaný: 29 dec 2010, 19:58
- Bydlisko: River
- Kontaktovať používateľa:
Re: kde je chyba?:(
To
Kód: Vybrať všetko
daj pred "Vytvorte" alebo to celé označ a ťukni CODE.Re: kde je chyba?:(
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
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: kde je chyba?:(
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
- Príspevky: 6719
- Registrovaný: 18 sep 2005, 13:44
- Bydlisko: Prague, CZE / Kosice, SVK
Re: kde je chyba?:(
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
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: kde je chyba?:(
á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
- Príspevky: 6719
- Registrovaný: 18 sep 2005, 13:44
- Bydlisko: Prague, CZE / Kosice, SVK
Re: kde je chyba?:(
jedine tak, lebo to je uloha taka akurat zaciatocnicka, kde si clovek precvici cykly, podmienky a algoritmicke rozmyslanie...
Re: kde je chyba?:(
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.
//autoeditácia príspevku (16 Apr 2011, 22:04)
ahaaa diki
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: kde je chyba?:(
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
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
Re: kde je chyba?:(
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?
Ja prikladam riesenie pri zachovani polaA. Urcite by sa to dalo este zmensit, zrychlit, no akosi neviem prist na to ako. Poradite?
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
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: kde je chyba?:(
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)Gregi napísal:Netreba inicializovat premennu 'z' nakolko Ti potom priradi i '0'.