Ввести двумерный массив A_N+M . Все элементы, которые кратны 4 и стоят на позициях, у которых как минимум один из индексов чётный, разделить нацело на 4. Массив вывести до и после преобразования. С++
В основу решения возьму тот факт, что точка лежит внутри треугольника только в том случае, если сумма площадей трех образованных этой точкой и вершинами треугольников треугольников равна площади самого треугольника. Для нахождения площади треугольников использую формулу векторного произведения, деленного пополам.
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016 begin var a:=-1.32; var b:=1.49; var h:=0.11; var y1:=-14.0; var y2:=17.0; var k:=0; var x:=a; while x<=b do begin var y:=Tan(x); if (y>=y1) and (y<=y2) then begin Writeln('x=',x:5:2,' y=',y:7:4); Inc(k) end; x+=h end; Writeln('Найдено значений: ',k) end.
#include <iostream>
#include <vector>
using namespace std;
void input(vector<vector<int>> &vec){
for(int i = 0; i < vec.size(); i++)
for(int j = 0; j < vec[i].size(); j++)
cin >> vec[i][j];
}
void print(vector<vector<int>> &vec){
for(int i = 0; i < vec.size(); i++){
for(int j = 0; j < vec[i].size(); j++)
cout << vec[i][j] << " ";
cout << "\n";
}
}
void modify(vector<vector<int>> &vec){
for(int i = 0; i < vec.size(); i++)
for(int j = 0; j < vec[i].size(); j++)
if(vec[i][j] % 4 == 0 && (i*j) % 2 == 0)
vec[i][j] /= 4;
}
signed main() {
int n,m;
cin >> n >> m;
vector<vector<int>> a(n,vector<int>(m));
input(a);
cout << "BEFORE:\n";
print(a);
modify(a);
cout << "AFTER:\n";
print(a);
}