Vytvorenie dvojrozmerneho pola v C++ – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vytvorenie dvojrozmerneho pola v C++ – C / C++ – Fórum – Programujte.comVytvorenie dvojrozmerneho pola v C++ – C / C++ – Fórum – Programujte.com

 

tomino
~ Anonymní uživatel
20 příspěvků
10. 5. 2013   #1
-
0
-

Zdravim, vyskitol sa mi dost banalny problem pri vytvarani dvojrozmerneho pola v C++, neviem co a kde robim zle,
#include <iostream>

using namespace std;

int main()
{
    int i,j;
    int pole[10][10];
    for(i=0; i<10; i++)
{
  cout<<"\n";
  for(j=0; j<10; j++)
  {
    cout<<" "<<pole[i][j];
  }
}
    return 0;
}

Nahlásit jako SPAM
IP: 80.87.216.–
ingiraxo+15
Grafoman
10. 5. 2013   #2
-
0
-

však to je dobře, akorát je pole prázdný, což předpokládám víš

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
tomino
~ Anonymní uživatel
20 příspěvků
10. 5. 2013   #3
-
0
-

to viem ze pole je prazdne, ale nechce mi spravit maticu napr int pole[3][3] a ked tam bude napr znak "a"
tak by malo spravit :
a a a

a a a

a a a

a ono mi to tak nesprvi mi to rozhadze a  nahadze mi tam "random cisla " neviem preco, v jazyku C to tak fungovalo bez problemov

Nahlásit jako SPAM
IP: 80.87.216.–
ingiraxo+15
Grafoman
10. 5. 2013   #4
-
0
-

tvar matice to udělá a pokud místo čísel tam dáváš znaky, tak to vypisuje dec hodnotu znaků - to nejsou random čísla.. takže když chceš vypsat ten znak, tak musíš přetypovat buď pole na char nebo vystup na char

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
tomino
~ Anonymní uživatel
20 příspěvků
10. 5. 2013   #5
-
0
-

#4 ingiraxo
taka blba otazka ako pretypujem vystup ?? :)

lebo ked pretypujem vstup char i, j; char pole[10][10], a znak "a" tak to spravi  100 a pod sebe a vedla kazdeho je vypisany neaky znak, robim v codeblocks


#include <iostream>

using namespace std;

int main()
{
    char i,j;
    char pole[10][10];
for(i=0; i<10; i++)
{
  cout<<endl;
  for(j=0; j<10; j++)
  {

    cout<<" a "<<pole[j]<<endl;
  }
}

    return 0;
}

Nahlásit jako SPAM
IP: 80.87.216.–
ingiraxo+15
Grafoman
10. 5. 2013   #6
-
0
-

#5 tomino
 

int main()
{
    int pole[10][10]; // ukladas dec hodnoty znaků

    for (int i = 0; i < 10; ++i)
    {
        for(int j = 0; j < 10; ++j)
        {
            pole[i][j] = 'a';
            cout << " " << (char)pole[i][j]; // vystup pretypujes na znak
        }
        cout << endl;
    }
    return EXIT_SUCCESS;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
tomino
~ Anonymní uživatel
20 příspěvků
10. 5. 2013   #7
-
0
-

velmi pekne dakujem funguje to tak ako som potreboval  :D

Nahlásit jako SPAM
IP: 80.87.216.–
tomino
~ Anonymní uživatel
20 příspěvků
10. 5. 2013   #8
-
0
-

este jedna otazka (dnes som uz asi prepracovany  )

for(i=0; i<10; i++)
    {
        cout<<endl;
        for(j=0; j<10; j++)
        {
           if(i==0||j==0||i==9||j==9)
           {
            pole[i][j]='a';
            cout<<" "<<(char) pole[i][j];
           }
        }
    }
nemalo by to vypisat znaky len po obvode stvorca ? prve tri podmienky funguju a ta posledna nie je tam kde by mala byt a to na konci

Nahlásit jako SPAM
IP: 80.87.216.–
ingiraxo+15
Grafoman
10. 5. 2013   #9
-
0
-

#8 tomino
to máš dobře, ten posun je tam proto, protože je pole prázný a vyplnuješ jenom obvod

dej si do vnořenýho cyklu: 



pole[i][j] = ' ';

if (i == 0 || j == 0 || i == 9 || j == 9)
    pole[i][j] = 'x';

cout << " " << (char)pole[i][j];
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
tomino
~ Anonymní uživatel
20 příspěvků
11. 5. 2013   #10
-
0
-

nevies este nahodou ako do toho pola vlozim jeden znak napr A ktori bude chodit po tych X dookola ??
skusam to cez gotoxy ale neviem neviem neako stojim, neaky impluz, naznak syntaxu a pod,dik

Nahlásit jako SPAM
IP: 80.87.216.–
ingiraxo+15
Grafoman
11. 5. 2013   #11
-
0
-

#10 tomino
noo, na to je nejlepší si udělat pattern, který to bude řídit 



int main()
{
    int arr[5][5]; // matice 5x5
    // aktuální indexy (x,y) u kterých se má změnit znak
    const int pattern[][2] =
    {
        {0,0}, {1,0}, {2,0}, {3,0}, {4,0},
        {4,1}, {4,2}, {4,3}, {4,4},
        {3,4}, {2,4}, {1,4}, {0,4},
        {0,3}, {0,2}, {0,1}, {0,0}
    };
    // délka pattern
    const int patternLength = sizeof(pattern) / sizeof(int) / 2;

    // projde všechny prvky v patternu
    for (int n = 0; n < patternLength; ++n)
    {
        system("cls"); // smaže konzoli (bylo by lepší řešit jinak než přes system(..))

        for (int i = 0; i < 5; ++i)
        {
            for (int j = 0; j < 5; ++j)
            {
                *(*(arr + i) + j) = ' ';

                if (i == 0 || j == 0 || i == 4 || j == 4)
                {
                    *(*(arr + i) + j) = '.'; // po obvodu budou tečky

                    // pokud se bude schodovat pattern s aktuálním indexem, tak změní tečku na "x"
                    if (*(*(pattern + n) + 0) == j && *(*(pattern + n) + 1) == i)
                        *(*(arr + i) + j) = 'x';
                }
                cout << ' ' << (char)*(*(arr + i) + j);
            }
            cout << endl;
        }
        _sleep(100); // uspí vlákno na 100ms při každém průchodu v patternu
    }
    return EXIT_SUCCESS;
}

nijak jsem to neoptimalizoval, tohle řešení je jen na ukázku, lepší by bylo použít klasický pole a vytvořit si funkce pro jednotlivé operace, ale to už je na tobě

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
tomino
~ Anonymní uživatel
20 příspěvků
11. 5. 2013   #12
-
0
-

super diky, inak co znamena *(*(arr ... s tymto som sa este nestretol

Nahlásit jako SPAM
IP: 80.87.216.–
KIIV
~ Moderátor
+43
God of flame
11. 5. 2013   #13
-
0
-

to samy jako arr[i][j] - pointerova aritmetika

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
tomino
~ Anonymní uživatel
20 příspěvků
12. 5. 2013   #14
-
0
-

dik aj tebe, este jenda otazka, mam menu spravene cez while, ako sprvaim ze po zadani neakeho klavesu sa vratim spat do menu.

Nahlásit jako SPAM
IP: 77.234.230.–
ingiraxo+15
Grafoman
12. 5. 2013   #15
-
0
-

#14 tomino
smaž obsah v konzoli a vypiš znova menu když zmáčkneš tu klávesu 
takže něco takovýho...

if (key == 'm') // menu
{
    system("cls");
    vypisMenu();
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
tomino
~ Anonymní uživatel
20 příspěvků
13. 5. 2013   #16
-
0
-

dik, a este jedna otazka, co je to vektor, ake je jeho vyuzitie, neviem sa knicomu dogooglit co by mi dalo ako taky zmysel :)

Nahlásit jako SPAM
IP: 158.193.4.–
KIIV
~ Moderátor
+43
God of flame
13. 5. 2013   #17
-
0
-

musis hledat: stl vector

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Honza
~ Anonymní uživatel
450 příspěvků
14. 5. 2013   #18
-
-1
-
Mimo téma

Hosi, co to tu mastite? Jestli to ma byt v C++, tak povinne nastudovat knihovnu STL!

Nahlásit jako SPAM
IP: 62.209.224.–
vitamin+8
Grafoman
14. 5. 2013   #19
-
0
-

#18 Honza
stl je sice dvolezita cast c++, ale treba vediet pracovat aj s poliami.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
tomino
~ Anonymní uživatel
20 příspěvků
14. 5. 2013   #20
-
0
-

int Trasa[][2];  toto je co za druh pola, resp ako to nazvat ?

Nahlásit jako SPAM
IP: 158.193.4.–
vitamin+8
Grafoman
14. 5. 2013   #21
-
0
-

#20 tomino
Takato deklaracia pola je chybna, musis tam mat aj inicializaciu:


int Trasa[][2] = {{1, 2}, {3, 4}};	//velkost bude [2][2]

1. rozmer pola za teba doplni kompilator.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
ingiraxo+15
Grafoman
14. 5. 2013   #22
-
0
-

#20 tomino
tohle nejde u statickýho pole bez současný initializace, tam musíš vždy zadat jak počet sloupců, tak řádků, pokud chceš nastavit jen počet sloupců (jako to máš v kódu) a počet řádků nechat dynamickej, tak to musíš udělat jako 

int* pole[2];

kde dyn. alokuješ každej řádek zvlášt

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
tomino
~ Anonymní uživatel
20 příspěvků
14. 5. 2013   #23
-
0
-

ano tako to mam, dik, ale preco tam je 2 ma neake dovod ? 

Nahlásit jako SPAM
IP: 158.193.4.–
tomino
~ Anonymní uživatel
20 příspěvků
14. 5. 2013   #24
-
0
-

v subore.h to mam  int Trasa[][2];

a v subore.cpp int Trasa[][2] = {{1, 2}, {3, 4}};  (80suradnic) ale mna zaujima ze preco, a ako to je mozne ze to funguje ked sa jedna v podstate o staticke pole, preco mi kompilator nevyhodi chybu ??

Nahlásit jako SPAM
IP: 158.193.4.–
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, 41 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ý