Reklama
Pokazuje wyniki od 1 do 11 z 11

Temat: C++ tabela - Pomocy !!!

  1. #1
    SowLox

    Domyślny C++ tabela - Pomocy !!!

    Witam, dostałem zadanie domowe którego nie jestem w stanie wykonać:

    Napisz progra, który utworzy i wypisze tablicę według poniższego modelu.
    Wymiary tablic podaje użytkownik programu.
    Elementami tablicy są liczby całkowite.
    Liczby w kolejnych polach tablicy odwzorowują kolejność odwiedzenia pół tej tablicy ( trasę wędrówki po polach tablicy).


    1 2 6 7 14 15 22
    3 5 8 13 16 21 23
    4 9 12 17 20 24 27
    10 11 18 19 25 26 28

    Znalazłem w temacie ogólnym rozwiązanie w PHP, oraz jedno w c++ użytkownika @Gray ; ( link do kodu tego Pana:http://ideone.com/b1VKxC), trochę go zmodyfikowałem jednak nie rozumiem niektórych linijek (tych pogrubionych):

    Kod:
    #include <iostream>
     using namespace std;
     int main()
    {
    	int t[101][51];
    	int i = 0, j = 0, k = 2, w,h;
    	int dir = 1;
    	
    do
     {
      cout<<"Podaj liczbe wierszy: ";
      cin>>h;
     } while( (h<1) || (h>100) );
     
     do
     {
      cout<<"Podaj liczbe kolumn: ";
      cin>>w;
     } while ( (w<1) || (w>50) );
     
    	t[0][0] = 1;
     
    	while (k <= w*h)
    		if (dir == 1) // z gory na dol
    		{
    			if(j+1<w)
    			{
    			 j=j+1;
    			}
    			else
    			{
    			 i=i+1;
    			}
    			while ( (i < h) && (j >= 0))
    				t[i++][j--] = k++;
     
    			 i--, j++;
    			dir = 2;
    		}
    		else // z dolu do gory
    		{
    			if(i+1<h)
    			{
    			 i=i+1;
    			}
    			else
    			{
    			 j=j+1;
    			}
     
    			while (i >= 0 && j < w)
    				t[i--][j++] = k++;
     
    			i++, j--;
    			dir = 1;
    		}
     
    	for (int i = 0; i < h; i++)
    	{
    		for (int j = 0; j < w; j++)
    			printf("%d ", t[i][j]);
    		printf("\n");
    	}
     
    
    	return 0;
    }
    Da się to uprościć dla początkującego ucznia?
    Ostatnio zmieniony przez SowLox : 21-09-2014, 21:13

  2. #2
    Avatar Absherr
    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    578
    Siła reputacji
    16

    Domyślny

    Z grubsza to wygląda na to, że k to jest liczba, którą wpisujesz (czyli 1,2,3,4 ..., 28), i i j to miejsce w tabeli (pewnie rząd i kolumna) gdzie wpisujesz k, dir to kierunek: jak popatrzysz na tą tablicę to widzisz kolejne liczby pisane z góry do dołu ukosem albo z dołu do góry (co jest oznaczane dir=1 i dir=2).

    t[i++][j--] = k++; oznacza:
    w miejsce w[i][j] wpisz k;
    zwiększ i (powiedzmy rząd tabeli);
    zmniejsz j (powiedzmy kolumnę tabeli);
    zwiększ k
    Czyli: wpisz jedną liczbę i przygotuj się do wpisania następnej ;d

    Kod:
    printf("%d ", t[i][j]);
    printf("\n");
    Oznacza wypisz na ekran to co jest w t[i][j], a \n oznacza nową linię.
    Ostatnio zmieniony przez Absherr : 21-09-2014, 21:16

  3. Reklama
  4. #3
    SowLox

    Domyślny

    A ten kod na końcu ??? Pierwszy raz się z czymś takim spotykam, zawsze używam cout
    Kod:
    printf("%d ", t[i][j]);
    printf("\n");
    /edit

    ok, spróbuję to pozmieniać na moje żeby nauczyciel się nie czepiał i jakaś ocenka może wpadnie.
    Ostatnio zmieniony przez SowLox : 21-09-2014, 21:18

  5. #4
    Avatar Absherr
    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    578
    Siła reputacji
    16

    Domyślny

    Ogólnie problem dosyć trudny, a idea tego rozwiązania jest chyba najbardziej intuicyjna z tych co mi przyszły do głowy ;d Więc może być trudno to przerobić.

  6. #5
    SowLox

    Domyślny

    Jak usuwam to printf [...] i próbuję zamienić na cout wszystko wyskakuje w jednym wierszu, cout<<t[i][j]<<" "; - da się jakoś wykorzystać mimo wszystko cout, wkleić gdzieś czy coś?

  7. #6
    Avatar Absherr
    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    578
    Siła reputacji
    16

    Domyślny

    No jak dasz same cout<<tab[i][j]<<" "; to wypisujesz liczba, spacja, liczba, spacja, liczba, spacja ...
    Musisz dać w odpowiednim miejscu cout<<"\n"; czyli nową linię.

  8. #7

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    Cytuj Absherr napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Ogólnie problem dosyć trudny, a idea tego rozwiązania jest chyba najbardziej intuicyjna z tych co mi przyszły do głowy ;d Więc może być trudno to przerobić.
    wtf

    czemu trudny? xD

    Cytuj Absherr napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    No jak dasz same cout<<tab[i][j]<<" "; to wypisujesz liczba, spacja, liczba, spacja, liczba, spacja ...
    Musisz dać w odpowiednim miejscu cout<<"\n"; czyli nową linię.
    Najłatwiej endl, nie jestem pewien czy \n zostanie dobrze sparsowany przez konsole

  9. #8
    SowLox

    Domyślny

    z cout sobie poradziłem tylko został jeszcze ten problem:

    t[i++][j--] = k++;

    zastąpiłem tym:

    t[i][j]=t[i++][j--];
    k=k+1;
    t[i][j]=k;

    według tego co pisałeś na górze jednak wpisuje 0 :(

  10. #9
    Avatar Absherr
    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    578
    Siła reputacji
    16

    Domyślny

    Cytuj Alex Fortune napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    wtf

    czemu trudny? xD



    Najłatwiej endl, nie jestem pewien czy \n zostanie dobrze sparsowany przez konsole
    Dla kogoś, kto nie umie printfa i tabel jest trudny :P
    A \n dobrze przejdzie, przynajmniej na windowsie.


    #up
    Kod:
    t[i++][j--] = k++;
    to:
    Kod:
    t[i][j] = k;
    i += 1; // albo i++;
    j -= 1; // albo j--;
    k += 1; // albo k++;
    Ostatnio zmieniony przez Absherr : 21-09-2014, 21:57

  11. #10
    SowLox

    Domyślny

    @up gdy tak wpisuję program nie działa.

  12. #11
    SowLox

    Domyślny

    Dobra, głupi błąd, brak klamry... Dzięki za pomoc :)

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. tabela html
    Przez Asyria w dziale Skrypty i technika
    Odpowiedzi: 10
    Ostatni post: 16-09-2020, 08:52
  2. Javascript problem z tabelą
    Przez Mikol_92 w dziale Programowanie
    Odpowiedzi: 3
    Ostatni post: 11-12-2017, 22:21
  3. Word-przemieszczająca się tabela
    Przez Katalonczyk w dziale Sprzęt i oprogramowanie
    Odpowiedzi: 0
    Ostatni post: 30-05-2017, 11:41
  4. MS - Tabela Expa :)
    Przez Rodenos w dziale Tibia
    Odpowiedzi: 6
    Ostatni post: 28-12-2012, 04:13
  5. Odpowiedzi: 273
    Ostatni post: 25-08-2011, 21:02

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •