1 Востаннє редагувалося koala (29.10.2018 22:05:07)

Тема: Помістіть на бічну діагональ суми елементів над нею на перпендикулярах

Перейменував тему, попередня назва була безглузда - Koala

#include <math.h>
#include <stdio.h>
#include <ctime>
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include "iomanip"
#include <string.h>
using namespace std;

int main() 
{
    int j,i,n = 9;
    int A[n][n];

  int k = 0;
    
     srand(time(NULL));
    for (i = 0; i < n; i++)
    { 
        for (j = 0; j<n; j++)
      {
     
        A[i][j]=rand() % 99;
        printf("%2d ", A[i][j]);
      }
        printf("\n");
    }   
    int m;
    int l = n%2;
    if (l) 
 { 
    m = int (n/2);
 }  else
  {
    m = n/2 - 1;
  } 
    for (int i = 1; i < n - 1; i++)  {
    int sum = 0;
    if (i <= m)  {
      k ++;
    }  else if (i > m && l == 1)  {
      k --;
    }  else l = 1;
    for (int j = 1; j <= k; j++)  {
        sum = sum + A[i - j][8-i - j] + A[i + j][8];
      }  

    A[i][n-1-i] += sum;
  }

  cout <<"\n\n\n";
  for (int i = 0; i < n; i ++)  {
    for (int j = 0; j < n; j ++)  {
      printf("%3d ", A[i][j]);
      }
        printf("\n");
    }   
  }

В новій матриці помістіть на бічну діагональ суми елементів, які розташовані над бічною діагоналлю та знаходяться на діагоналях перпендикулярно до бічної діагоналі. Виведіть новий масив на екран. Розрахуйте суми елементів, які знаходяться в непарних рядках нового масиву. Виведіть ці суми.
Перший елемент рахує правильно а потім ні(((

Post's attachments

Безымянный1.cpp 1.04 kb, 184 downloads since 2018-10-25 

2 Востаннє редагувалося koala (29.10.2018 22:23:29)

Re: Помістіть на бічну діагональ суми елементів над нею на перпендикулярах

1. Код вирівняний погано. Це заважає в тому числі і вам.
2. Купа зайвих include-ів, змішані заголовки C (math.h) і C-бібліотеки C++ (ctime). Рекомендовано використовувати C++-ні (якщо це не програма на C), тобто cmath і т.д.
3. Купа зайвих рухів в обчисленні координат діагональних елементів - наприклад, формула для m=(n-1)/2 вирішує проблеми з l та if-else.
4. Взагалі давайте розберемося, що саме треба зробити. Як я розумію, треба зробити так:
https://image.ibb.co/fh7SmV/Diagonals.png
Причому значення в самих діагональних клітинах мають затертися. А ви що робите?
5. Ви змішуєте введення/виведення з iostream (cin) та cstdio (printf). Не треба так робити.

3

Re: Помістіть на бічну діагональ суми елементів над нею на перпендикулярах

ні на клітинку стрілки вверх підняти в суму мають входити і елемент діагоналі

4 Востаннє редагувалося sokol (29.10.2018 22:29:14)

Re: Помістіть на бічну діагональ суми елементів над нею на перпендикулярах

ааа, вибачте, я вже просто трохи не можу думати, все вірно)), я просто тільки почав програмувати і ще не дуже розбираюсь((

5 Востаннє редагувалося sokol (29.10.2018 23:26:54)

Re: Помістіть на бічну діагональ суми елементів над нею на перпендикулярах

#include <math.h>
#include <ctime>
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include "iomanip"
#include <string.h>
using namespace std;

int main() 
{
    int j,i,n = 9;
    int A[n][n];

  int k = 0;
    
     srand(time(NULL));
    for (i = 0; i < n; i++)
    { 
        for (j = 0; j<n; j++)
      {
     
        A[i][j]=rand() % 99;
        cout << setw(2) << A[i][j] << " ";
      }
        cout << "\n";
    }   
    
  }
  }

я просто не можу зрозуміти як записати цикл на обчислення такої суми(

6

Re: Помістіть на бічну діагональ суми елементів над нею на перпендикулярах

Ну так у вас є майже все, що треба. Тільки додавати треба по одному елементу:

sum += A[i - j][8-i - j]

і не додавати до A[ i][8-i], а заміняти його значення. Власне, можна прямо у нього і додавати.

Подякували: sokol1

7

Re: Помістіть на бічну діагональ суми елементів над нею на перпендикулярах

Дякую велике!!!!!! Все працює)))