Pereiti prie turinio

ferN

Nariai
  • Pranešimai

    9
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    0%

Reputacijos išklotinė

  1. Patinka
    ferN sureagavo į wi_lius Skaiciu grupes (C++)   
    Trumpesnis variantas:
     

    #include <iostream> using namespace std; int main() { freopen("a.out", "w", stdout); int n; cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << j*n + (n + i - j) % n + 1 << ' '; } cout << endl; } return 0; }
     
    Esmė labai paprasta. Jei skirstysim skaičius iš eilės vis kitai grupei, tai gausim kažką tokio:
     1  5  9 13
     2  6 10 14
     3  7 11 15
     4  8 12 16
     
    Kol kas kiekviena grupė turi skirtingas sumas. Kad geriau matytųsi, kaip pasiskirstę dydžiai, iš kiekvieno stulpelio atimsim mažiausią skaičių stulpelyje:
    0  0  0  0
    1  1  1  1
    2  2  2  2
    3  3  3  3
     
    Vienodas sumas gausime tuo atvejų, jei kiekviename stulpelyje perstatysim reikšmes taip, kad kiekvienoj eilutėj būtų vien tik skirtingi skaičiai:
    0  3  2  1
    1  0  3  2
    2  1  0  3
    3  2  1  0
     
    Prisimuojam ką anksčiau buvom atėmę:
    1  8 11 14
    2  5 12 15
    3  6  9 16
    4  7 10 13
  2. Patinka
    ferN sureagavo į paradigm Skaiciu grupes (C++)   
    Sveikas. Pirmiausia pastebime, kad matricos įstrižainė yra 1, 2, ... , n . Nuo įstrižainės einant žemyn reikšmė mažinama nuo n*n - n + eilNr. O aukštyn - didinama. Viskas turėtų būti aišku, išnagrinėjus kodą.
    P.S Reikia patikrinti ar įvestas n yra teigiamas skaičius. Bet tai jau palieku padaryti pačiam.
     

    #include <iostream> using namespace std; int** fillMatrix(int n); void printMatrix(int **m, int size); int main() { cout << "Iveskite n "; int n; cin >> n; cout << "\n"; int **m = fillMatrix(n); printMatrix(m, n); cin >> n; // tik tam, kad neuzsidarytu konsoles langas return 0; } int** fillMatrix(int n) { int **matrix = new int*[n]; for (int i = 0; i < n; i++) matrix[i] = new int[n]; for (int i = 0; i < n; i++) { int nDiag = i + 1; matrix[i][i] = nDiag; for (int j = i - 1; j >= 0; j--) { nDiag = nDiag + n; matrix[i][j] = nDiag; } nDiag = n * n - n + i + 1; for (int j = i + 1; j < n; j++) { matrix[i][j] = nDiag; nDiag = nDiag - n; } } return matrix; } void printMatrix(int **m, int size) { for (int row = 0; row < size; row++) { int sum = 0; for (int column = 0; column < size; column++) { sum += m[column][row]; cout << m[column][row] << " "; } cout << " sum = " << sum << "\n"; } return; }
×
×
  • Pasirinkite naujai kuriamo turinio tipą...