Kezdőoldal » Számítástechnika » Programozás » Feltöltök 10 100 elemet...

Feltöltök 10 100 elemet tartalmazó tömböt véletlen számokkal és azt az elemet szeretném megtalálni, ami legalább két tömbben előfordul azonos pozíción, például t4[7]=5 és t8[7]=5. kód lent, de az elemeket megtaláló ciklus megírásában segítene valaki?

Figyelt kérdés

Tehát először feltöltöm random számokkal, aztán gondoltam, hogy segítheti a dolgot, ha egyenként kiteszem az elemeket egy összesítő tömbbe, de így se volt ötletem a mindent mindennel összehasonlító ciklusra, amely ráadásul úgy kellene hogy működjön, hogy azonos elemet önmagával ne hasonlítson össze...


Program tomb;

uses crt,dos;

var

t1,t2,t3,t4,t5,t6,t7,t8,t9,t10:array[1..100] of word;

i,j:word;

elem:word;

bigarray:array[1..1000] of word;

begin

randomize;

for i:=1 to 100 do

begin

elem:=random(65000);

t1[i]:=elem;

elem:=random(65000);

t2[i]:=elem;

elem:=random(65000);

t3[i]:=elem;

elem:=random(65000);

t4[i]:=elem;

elem:=random(65000);

t5[i]:=elem;

elem:=random(65000);

t6[i]:=elem;

elem:=random(65000);

t7[i]:=elem;

elem:=random(65000);

t8[i]:=elem;

elem:=random(65000);

t9[i]:=elem;

elem:=random(65000);

t10[i]:=elem;

end;

i:=0;

j:=0;

repeat

inc(i);

inc(j);

bigarray[j]:=t1[i];

inc(j);

bigarray[j]:=t2[i];

inc(j);

bigarray[j]:=t3[i];

inc(j);

bigarray[j]:=t4[i];

inc(j);

bigarray[j]:=t5[i];

inc(j);

bigarray[j]:=t6[i];

inc(j);

bigarray[j]:=t7[i];

inc(j);

bigarray[j]:=t8[i];

inc(j);

bigarray[j]:=t9[i];

inc(j);

bigarray[j]:=t10[i];

until(j=1000);

end.



2014. júl. 26. 21:42
1 2
 1/13 anonim ***** válasza:
Tudod ennél a programnál a nehézség egyedül az erőforrás kihasználásban rejlik, mert eyébkén olyan egyszerű mint egy faék. Mennyit fizetsz a megoldásért?
2014. júl. 26. 21:50
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:
Miért, mennyiért csinálnád meg?
2014. júl. 26. 21:54
 3/13 anonim ***** válasza:

nem értek pascalhoz, de jézusom ez a kód :O

miért nem kétdimenziós tömb?

t[1 - 10][1 - 100] = randomszám

a másik fele is elég fura...

2014. júl. 26. 22:17
Hasznos számodra ez a válasz?
 4/13 anonim ***** válasza:
74%
3e-ért elvállalom.
2014. júl. 26. 22:41
Hasznos számodra ez a válasz?
 5/13 tabaki ***** válasza:
100%

"miért nem kétdimenziós tömb?"

...És miért nem két egymásba ágyazott ciklussal töltöd fel, és vizsgálod? Miért kéne mindent mindennel összehasonlítanod, amikor csak az azonos indexű tömbelemek érdekesek? Mi a búbánatos lótúrót remélsz a bigarraytől? Miért repeat..untilt használsz az amúgy tökéletesen értelmetlen második ciklusban, amikor minden ciklushatárt előre ismersz?

Az egész program az átgondolatlanság és a tanácstalanság násztánca. Találd már ki előre, hogy mit akarsz, és csak akkor kezdd el kódolni, ha már van mit.

2014. júl. 26. 23:12
Hasznos számodra ez a válasz?
 6/13 ejbenjaro ***** válasza:

Nem túl szép megoldás, de majd tovább gondolod (ha meg nem, akkor megírtam a leckédet, vagy valami...):


(Free Pascalban lett elkövetve és 64 bites Ubuntun lett tesztelve)


Program tomb;


{$mode objfpc}{$H+}


type

tTomb=array[1..100] of word;


var

bigArray: array[1..10,1..100] of word;


procedure feltolt(var aTomb: tTomb);

var

i: integer;

begin

for i:=1 to 100 do

aTomb[i]:=random(65000);

end;


procedure bemasol(aTomb: tTomb; oszlop: word);

var

i: integer;

begin

for i:=1 to 100 do

bigArray[oszlop,i]:=aTomb[i];

end;


var

t0,t1,t2,t3,t4,t5,t6,t7,t8,t9: tTomb;

i, j, k: word;


begin

randomize;


feltolt(t0);

feltolt(t1);

feltolt(t2);

feltolt(t3);

feltolt(t4);

feltolt(t5);

feltolt(t6);

feltolt(t7);

feltolt(t8);

feltolt(t9);


bemasol(t0,1);

bemasol(t1,2);

bemasol(t2,3);

bemasol(t3,4);

bemasol(t4,5);

bemasol(t5,6);

bemasol(t6,7);

bemasol(t7,8);

bemasol(t8,9);

bemasol(t9,10);


{teszteléshez berakunk három azonos értéket ugyan abba a pozícióba}


{

bigArray[3,45]:=125;

bigArray[5,45]:=125;

bigArray[7,45]:=125;

}


for i:=1 to 9 do

begin

for j:=i+1 to 10 do

begin

for k:=1 to 100 do

begin

if bigArray[i,k]=bigArray[j,k] then

begin

writeln('t',i-1,' tomb ',k,'. eleme (',bigArray[i,k],') megegyezik a t',j-1,' tomb ',k,'. elemevel (',bigArray[j,k],')');

end;

end;

end;

end;

writeln('A kilepeshez nyomj ENTER-t!');

readln;

end.

2014. júl. 26. 23:20
Hasznos számodra ez a válasz?
 7/13 SimkoL ***** válasza:
Halmzokkal is csodát lehetne művelni mivel csak 100 elemű tömbökről van szó :)
2014. júl. 27. 00:58
Hasznos számodra ez a válasz?
 8/13 tabaki ***** válasza:
100%

Én ilyesmit képzeltem el (kétdimenziós tömb, Free Pascal, 64 bites Linux Minten kipróbálva):


program tombok_tabaki;

uses crt;


var

tombok: array[1..10,1..100] of word; ertekelo: array[1..100] of boolean;

i,j: integer;

ujabb: char;


procedure feltoltes;

begin

for i:=1 to 100 do ertekelo[i]:=false;

for j:=1 to 10 do for i:=1 to 100 do tombok[j,i]:=random(1000);

end;


procedure ertekeles;

var k: integer; egyezes: byte;

begin;

for i:=1 to 100 do

for j:=1 to 10 do begin

egyezes:=0;

for k:=1 to 10 do if tombok[j,i]=tombok[k,i] then inc(egyezes);

if egyezes>1 then ertekelo[i]:=true;

end;

clrscr; writeln('Egyezések a következő indexeken:');

for i:=1 to 100 do begin

if ertekelo[i] then begin

if i<100 then write(' '); if i<10 then write(' '); write(i,':'#9);

for j:=1 to 10 do begin

write(tombok[j,i]); if j<10 then write(', ') else writeln;

end;

end;

end;

writeln;

end;


BEGIN

randomize;

repeat;

feltoltes; ertekeles;

write('Újabb menet? (i/n)'); ujabb:=upcase(readkey);

until ujabb='N';

END.

2014. júl. 27. 01:07
Hasznos számodra ez a válasz?
 9/13 tabaki ***** válasza:
Ja, bocs: A random() határértékét szándékosan csökkentettem le 1000-re, hogy több legyen az egyezés. 65000-rel egy kicsit unalmas volt...
2014. júl. 27. 01:42
Hasznos számodra ez a válasz?
 10/13 A kérdező kommentje:

Nagyon szépen köszönöm a kreatív válaszokat, Ejbenjaro-nak és Tabaki-nak pedig a programot.

Gondoltam hogy a feltöltéshez nem túl elegáns a repeat-until ciklus meg hogy lehetne egyszerűbben...

2014. júl. 27. 06:46
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!