Prace s polem – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Prace s polem – Java – Fórum – Programujte.comPrace s polem – Java – Fórum – Programujte.com

 

jp
~ Anonymní uživatel
7 příspěvků
26. 11. 2009   #1
-
0
-

Zdravim, potreboval bych poradit, jak posunout prvky matice o jeden dopredu......?
Ukazka:
1 2 3 4 5 6
=>
6 1 2 3 4 5
Praci s polema uz celkem zvladam, ale na tohle nejak nemuzu prijit....
predem diky za rady

Nahlásit jako SPAM
IP: 88.101.151.–
jp
~ Anonymní uživatel
7 příspěvků
26. 11. 2009   #2
-
0
-

Nazornejsi ukazka:
1 2 3
4 5 6
=>
6 1 2
3 4 5

Nahlásit jako SPAM
IP: 88.101.151.–
KIIV
~ Moderátor
+43
God of flame
26. 11. 2009   #3
-
0
-

ulozis si jeden prvek do pomocny promenny.. (napriklad posledni), zbytek posunes o jednu vedle (pokud mozno zacit posunem na tem posledni prvek) a nakonec das prvek z tempu misto prvniho

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
jp
~ Anonymní uživatel
7 příspěvků
26. 11. 2009   #4
-
0
-

To KIIV :
no dik za radu, ale moc mi to nepomoohlo- ja v hlave zhruba vim, jak to udelat, ale nejde mi to zapsat pomoci programovaciho jazyka.......

Nahlásit jako SPAM
IP: 88.101.151.–
crAzY^
~ Moderátor
+10
Grafoman
26. 11. 2009   #5
-
0
-

v javě bohužel nedělám ale v c++ by to mohlo vypadat takto:



const int POCET = 6;
int pole[POCET] = { 1, 2, 3, 4, 5, 6 };

int temp = pole[POCET-1];

for(int i = 2; i < POCET+1; i++)
{
pole[POCET-i+1] = pole[POCET-i];
}

pole[0] = temp;


píšu to z hlavy, tak je tam možná chyba

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
KIIV
~ Moderátor
+43
God of flame
26. 11. 2009   #6
-
0
-

java mozna umi i neco = pole.shift() ; a pole.Push(neco);
pripadne pole.Push(pole.shift())

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
crAzY^
~ Moderátor
+10
Grafoman
26. 11. 2009   #7
-
0
-

To KIIV : to asi ano... javě nehovím :)

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
KIIV
~ Moderátor
+43
God of flame
26. 11. 2009   #8
-
0
-

To crAzY^ : urcite ano.. sem si to overil na google :D

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
crAzY^
~ Moderátor
+10
Grafoman
26. 11. 2009   #9
-
0
-

To KIIV : :D dobře... :D

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
jp
~ Anonymní uživatel
7 příspěvků
26. 11. 2009   #10
-
0
-

To crAzY^ : a napada Te jak to udelat pro dvourozmerne pole??
jinak diky za radu:-)

Nahlásit jako SPAM
IP: 88.101.151.–
jp
~ Anonymní uživatel
7 příspěvků
26. 11. 2009   #11
-
0
-

tak se davam zdrojovy kod, nemam tam komentare, tak trochu vysvetlim jak by to melo fungovat....

http://pastebin.com/m72f07962
http://pastebin.com/m33bca2b5

mam dve tridy - trida Matice a Main

Matice obsahuje: konstruktor pro vytvoreni dvou matic(rozmery zadane uzivatelem) a druhou - pomocnou, do ktere budu ukladat "orotovanou" matici.....dale obsahuje metody pro naplneni matice, vypis, a orotovani(coz se mi bohuzel nedari)
ve tride Main si nejprve vytvorim objekt(pomocnou matici a tu, kterou uzivatel zada), dale ji naplnim, vypisu, pak volam metodu "orotuj" a pak vypisuju orotovanou......nevim vcem je problem, ostatni ukoly jsem zvladl, ale tenhle se mi nedari...
predem moc dekuju za pomoc...


Nahlásit jako SPAM
IP: 88.101.151.–
crAzY^
~ Moderátor
+10
Grafoman
26. 11. 2009   #12
-
0
-

pro dvojrozměrné by mě napadlo udělat takto:



const int RADKY = 3;
const int SLOUPCE = 3;

int pole[RADKY][SLOUPCE]; //pole naplníš

int temp = pole[RADKY-1][SLOUPCE-1];

for(int y = RADKY-1; y >= 0; y--)
{
int i = SLOUPCE-1;
while(i > 0)
{
pole[y][i] = pole[y][i-1];
i--;
}
if(i == 0)
pole[y][i] = pole[y-1][SLOUPCE-1];
}

pole[0][0] = temp;

mělo by to fungovat

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
crAzY^
~ Moderátor
+10
Grafoman
27. 11. 2009   #13
-
0
-

To crAzY^ : toto téma mě celkem zaujalo, a tak sem se pokusil udělat co nejefektivnější funkci pro posun pole oběma směry. Myslíte, že by to šlo udělat ještě efektivněji?

void shiftArray(int *pole, int posun, int count)

{
if(posun > 0){

if(posun > count)
posun = posun % count;
if(posun > 5){
shiftArray(posun-count);
return;
}
int temp[posun];

int y;
for(int i = 0, y = count-1; y >= count-posun-1; i++, y--)
temp[i] = pole[y];

// posun
for(int i = count-posun-1; i >= 0; i--)
pole[i+posun] = pole[i];

int a;
for(int i = posun-1, a = 0; i >= 0; i--, a++)
pole[a] = temp[i];
}else if(posun < 0)
{
posun = -posun;

if(posun > count)
posun = posun % count;

if(posun > 5){
shiftArray(count-posun);
return;
}
int temp[posun];

for(int i = 0; i < posun; i++){
temp[i] = pole[i];
}
for(int i = posun; i < count; i++)
pole[i-posun] = pole[i];

int y;
for(int i = count-posun, y = 0; i < count; i++, y++)
pole[i] = temp[y];
}
}

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý