Двумерни масиви

Задача 8. Решение 1:

#include<iostream>
using namespace std;
int main()
{
    int i,j,a[10][20],n,m,Sum;
    cout<<"брой редове: ";
    cin>>n;
    cout<<"брой колони: ";
    cin>>m;
    for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    {
        cout<<"a["<<i<<"]["<<j<<"]=";
        cin>>a[i][j];
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        cout<<a[i][j]<<"  ";
        cout<<endl;
    }
    cout<<"сборът на елементите от отделните колони:"<<endl;
    for(j=0;j<m;j++)
    {
        Sum=0;
        for(i=0;i<n;i++)
        Sum=Sum+a[i][j];
        cout<<Sum<<" ";
    }
    return 0;
}

Задача 8. Решение 2:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
  int matrix[10][20]={0};
  // Броят на редовете(rows) и колоните(cols) които ще се въведат
  int rows, cols;
  // Въвежда се броя на редовете и колоните
  std::cout << "Input rows: ";
  std::cin >> rows;
  std::cout << "Input cols: ";
  std::cin >> cols;
  std::cout << std::endl;
  // Въвежда се матрицата
  std::cout << "Input matrix:" << std::endl;
  for(int i=0; i<rows; i++) {
      for(int j=0; j<cols; j++) {
          std::cout << "matrix[" << i << "][" << j << "] = ";
          std::cin >>  matrix[i][j];
          }
          std::cout << std::endl;
     }
     // Масив за реда със сумите на елементите по колони
     int sumColumns[20]={0};
    // Извежда се матрицата чрез обхождане по редове и същевременно
    //се намират сумите на елементите по колони
    std::cout << "Output matrix:" << std::endl;
    for(int i=0; i<rows; i++) {
        for(int j=0; j<cols; j++) {
            // Извеждат се елементите на матрицата на екрана
            std::cout << setw(11) << matrix[i][j];
            // Увеличава сумата за съответната колона с текущия елемент
            sumColumns[j] += matrix[i][j];
        }
        std::cout << std::endl;
    }
    for(int i=0; i<cols; i++) std::cout << "-----------";
    std::cout << std::endl;
    for(int i=0; i<cols; i++) std::cout << setw(11) << sumColumns[i];
    std::cout << std::endl;
    return 0;
}

Задача 9. Решение 1:

#include<iostream>
using namespace std;
int main()
{
    int i,j,a[50][60],n,m,Sum;
    cout<<"брой редове: ";
    cin>>n;
    cout<<"брой колони: ";
    cin>>m;
    for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    {
        cout<<"a["<<i<<"]["<<j<<"]=";
        cin>>a[i][j];
    }
    for(i=0;i<n;i++)
    {
        Sum=0;
        for(j=0;j<m;j++)
        {
        cout<<a[i][j]<<"  ";
        if(a[i][j]%3==0)
        Sum=Sum+a[i][j];
        }
    cout<<Sum<<" ";
    cout<<endl;
    }
    return 0;
}

Задача 9. Решение 2:

#include <iostream>
#include <iomanip>
 
using namespace std;
 
int main()
{
    int matrix[50][60]={0};
 
    // Броят на редовете(rows) и колоните(cols) 
    int rows, cols;
    // Въвежда се броя на редовете и колоните
    std::cout << "Input rows: ";
    std::cin >> rows;
    std::cout << "Input cols: ";
    std::cin >> cols;
    std::cout << std::endl;
 
    // Въвежда се матрицата
    std::cout << "Input matrix:" << std::endl;
    for(int i=0; i<rows; i++) {
        for(int j=0; j<cols; j++) {
            std::cout << "matrix[" << i << "][" << j << "] = ";
            std::cin >>  matrix[i][j];
        }
        std::cout << std::endl;
    }
 
    // Масив за броя на четните елементи по колони
    int evenNumbersCnt[30]={0};
 
    // Извежда се матрицата чрез обхождане по редове 
    // и същевременно се намират минималните елементи
    std::cout << "Output matrix:" << std::endl;
    for(int i=0; i<rows; i++) {
 
        double Sum = 0;
        bool foundSum = false;
 
        for(int j=0; j<cols; j++) {
 
            // Извеждат се елементите на матрицата 
            std::cout << setw(11) << matrix[i][j];
 
            // Проверява дали числото е кратно на 3
            if( matrix[i][j]%3 == 0 ) {
                Sum += matrix[i][j];
                foundSum = true;
            }
        }
        // Извежда се сумата в края на реда, ако има намерена такава
        if( true == foundSum ) std::cout << " | " << setw(11) << Sum << std::endl;
        else std::cout << " | " << setw(11) << '-' << std::endl;
    }
 
    return 0;
}

Задача 10. Решение 1:

using namespace std;
int main()
{
    int i,j,a[40][30],n,m,br;
    cout<<"брой редове: ";
    cin>>n;
    cout<<"брой колони: ";
    cin>>m;
    for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    {
        cout<<"a["<<i<<"]["<<j<<"]=";
        cin>>a[i][j];
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        cout<<a[i][j]<<"  ";
        cout<<endl;
    }
    cout<<"броят на нечетните елементи от отделните колони:"<<endl;
    for(j=0;j<m;j++)
    {
        br=0;
        for(i=0;i<n;i++)
        if(a[i][j]%2!=0) br++;
        cout<<br<<"  ";
    }
    return 0;
}

Задача 10. Решение 2:

#include <iostream>
#include <iomanip>
 
using namespace std;
 
 
int main()
{
    int matrix[40][30]={0};
 
    // Броят на редовете(rows) и колоните(cols) 
    int rows, cols;
    // Въвежда се броя на редовете и колоните
    std::cout << "Input rows: ";
    std::cin >> rows;
    std::cout << "Input cols: ";
    std::cin >> cols;
    std::cout << std::endl;
 
    // Въвежда се матрицата
    std::cout << "Input matrix:" << std::endl;
    for(int i=0; i<rows; i++) {
        for(int j=0; j<cols; j++) {
            std::cout << "matrix[" << i << "][" << j << "] = ";
            std::cin >>  matrix[i][j];
        }
        std::cout << std::endl;
    }
 
    // Масив за броя на четните елементи по колони
    int evenNumbersCnt[30]={0};
 
    // Извежда се матрицата чрез обхождане по редове 
    // и същевременно се намират минималните елементи
    std::cout << "Output matrix:" << std::endl;
    for(int i=0; i<rows; i++) {
 
        for(int j=0; j<cols; j++) {
 
            // Извеждат се елементите на матрицата 
            std::cout << setw(11) << matrix[i][j];
 
            // Проверява дали числото е нечетно и се увеличава брояча
            if( matrix[i][j]%2 == 1 ) {
                evenNumbersCnt[j]++;
            }
        }
        std::cout << std::endl;
    }
 
    for(int i=0; i<cols; i++) std::cout << "-----------";
    std::cout << std::endl;
 
    for(int i=0; i<cols; i++) std::cout << setw(11) << evenNumbersCnt[i];
    std::cout << std::endl;
 
    return 0;
}

Задача 11. Решение 1:

#include<iostream>
using namespace std;
int main()
{
    int i,j,a[10][30],n,m,max;
    cout<<"брой редове: ";
    cin>>n;
    cout<<"брой колони: ";
    cin>>m;
    for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    {
        cout<<"a["<<i<<"]["<<j<<"]=";
        cin>>a[i][j];
    }
    for(i=0;i<n;i++)
    {
        max=a[i][0];
        for(j=0;j<m;j++)
        {
        cout<<a[i][j]<<"  ";
        if(a[i][j]>max)
        max=a[i][j];
        }
    cout<<max<<" ";
    cout<<endl;
    }
    return 0;
}

Задача 11. Решение 2:

#include <iostream>
#include <iomanip>
 
using namespace std;
 
 
int main()
{
    int matrix[10][30]={0};
 
    // Броят на редовете(rows) и колоните(cols) 
    int rows, cols;
    // Въвежда се броя на редовете и колоните
    std::cout << "Input rows: ";
    std::cin >> rows;
    std::cout << "Input cols: ";
    std::cin >> cols;
    std::cout << std::endl;
 
    // Въвежда се матрицата
    std::cout << "Input matrix:" << std::endl;
    for(int i=0; i<rows; i++) {
        for(int j=0; j<cols; j++) {
            std::cout << "matrix[" << i << "][" << j << "] = ";
            std::cin >>  matrix[i][j];
        }
        std::cout << std::endl;
    }
 
    // Извежда се матрицата  и същевременно търси максималните елемети, 
    // за да ги изведе на края на реда
    std::cout << "Output matrix:" << std::endl;
    for(int i=0; i<rows; i++) {
 
        // Декларира се променлива за максималния елемент и се инициализира с
        // числото от нулевата колона за дадения ред
        int maxNumber = matrix[i][0];
 
        for(int j=0; j<cols; j++) {
 
            // Извежда се матрицата
            std::cout << setw(11) << matrix[i][j];
 
            // Търсене на максималния елемент
            if( matrix[i][j] > maxNumber ) maxNumber = matrix[i][j];
        }
 
        // Извежда се максималното число в края на реда
        std::cout << " | " << setw(11) << maxNumber << std::endl;
    }
 
    return 0;
}

Задача 12. Решение 1:

#include<iostream>
using namespace std;
int main()
{
    int i,j,a[20][10],n,m,min;
    cout<<"брой редове: ";
    cin>>n;
    cout<<"брой колони: ";
    cin>>m;
    for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    {
        cout<<"a["<<i<<"]["<<j<<"]=";
        cin>>a[i][j];
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        cout<<a[i][j]<<"  ";
        cout<<endl;
    }
    cout<<"минималните елементи от отделните колони:"<<endl;
    for(j=0;j<m;j++)
    {
        min=a[0][j];
        for(i=1;i<n;i++)
        {
        if(a[i][j]<min)
        min=a[i][j];
        }
    cout<<min<<"  ";
    }
    return 0;
}

Задача 12. Решение 2:

#include <iostream>
#include <iomanip>
 
using namespace std;
 
 
int main()
{
    int matrix[20][10]={0};
 
    // Броя на редовете(rows) и колоните(cols) 
    int rows, cols;
    // Въвежда се броя на редовете и колоните
    std::cout << "Input rows: ";
    std::cin >> rows;
    std::cout << "Input cols: ";
    std::cin >> cols;
    std::cout << std::endl;
 
    // Въвежда се матрицата
    std::cout << "Input matrix:" << std::endl;
    for(int i=0; i<rows; i++) {
        for(int j=0; j<cols; j++) {
            std::cout << "matrix[" << i << "][" << j << "] = ";
            std::cin >>  matrix[i][j];
        }
        std::cout << std::endl;
    }
 
    // Масив за реда на минималните елементи по колони
    int minColumnNumbers[10];
 
    // Извежда се матрицата чрез обхождане по редове и същевременно 
    // се намират минималните елементи
    std::cout << "Output matrix:" << std::endl;
    for(int i=0; i<rows; i++) {
 
        for(int j=0; j<cols; j++) {
 
            // Извеждат се елементите на матрицата на екрана
            std::cout << setw(11) << matrix[i][j];
 
            // Ако е нулевия ред(i), то minColumnNumbers се инициализира с
            // елемента от всяка колона(j)
            if( i == 0 ) {
                minColumnNumbers[j] = matrix[i][j];
            }
            else if(matrix[i][j] < minColumnNumbers[j]) {
                minColumnNumbers[j] = matrix[i][j];
            }
        }
        std::cout << std::endl;
    }
 
    for(int i=0; i<cols; i++) std::cout << "-----------";
    std::cout << std::endl;
 
    for(int i=0; i<cols; i++) std::cout << setw(11) << minColumnNumbers[i];
    std::cout << std::endl;
 
    return 0;
}

Задача 13. Решение 2:

#include <iostream>
#include <iomanip>
 
using namespace std;
 
 
int main()
{
    int matrix[10][30]={0};
 
    // Броя на редовете(rows) и колоните(cols) 
    int rows, cols;
    // Въвежда се броя на редовете и колоните
    std::cout << "Input rows: ";
    std::cin >> rows;
    std::cout << "Input cols: ";
    std::cin >> cols;
    std::cout << std::endl;
 
    // Въвежда се матрицата
    std::cout << "Input matrix:" << std::endl;
    for(int i=0; i<rows; i++) {
        for(int j=0; j<cols; j++) {
            std::cout << "matrix[" << i << "][" << j << "] = ";
            std::cin >>  matrix[i][j];
        }
        std::cout << std::endl;
    }
 
    // Променлива за минималния максимален елемент
    int minMxNumber;
 
    // Извежда се матрицата  и същевременно търси максималните елемети, 
    // за да ги изведе на края на реда;
    std::cout << "Output matrix:" << std::endl;
    for(int i=0; i<rows; i++) {
 
        // Декларира се променлива за максималния елемент и се инициализира с
        // числото от нулевата колона за дадения ред
        int maxNumber = matrix[i][0];
 
        for(int j=0; j<cols; j++) {
 
            // Извежда се матрицата
            std::cout << setw(11) << matrix[i][j];
 
            // Търсене на максималния елемент
            if( matrix[i][j] > maxNumber ) maxNumber = matrix[i][j];
        }
 
        // Извежда се максималното число в края на реда
        std::cout << " | " << setw(11) << maxNumber<< std::endl;
 
        if( 0 == i) minMxNumber = maxNumber;
        else if( maxNumber < minMxNumber ) minMxNumber = maxNumber;
    }
 
    std::cout << std::endl;
    std::cout << "Min number from all max numbers of row is: " << minMxNumber << std::endl;
 
    return 0;
}