Если есть вопросы дай знать=) #include <iostream> #include <fstream> using namespace std; void createArray(int**& arr, int p, int t) { arr = new int* [p]; for (int i = 0; i < p; i++) { arr[i] = new int[t]; } } void fillArray(int** arr, int p, int t) { for (int i = 0; i < p; i++) { for (int j = 0; j < t; j++) { cout << "Введите arr[" << i << "][" << j << "]: "; cin >> arr[i][j]; } } } void printArray(int** arr, int p, int t, ofstream& out) { for (int i = 0; i < p; i++) { for (int j = 0; j < t; j++) { cout << arr[i][j] << " "; out << arr[i][j] << " "; } cout << endl; out << endl; } } void deleteArray(int**& arr, int p) { for (int i = 0; i < p; i++) { delete[] arr[i]; } delete[] arr; arr = nullptr; } double averageNonNegative(int** arr, int p, int t, int* nonNegCount) { double sum = 0.0; int count = 0; for (int i = 0; i < p; i++) { int rowNonNegCount = 0; for (int j = 0; j < t; j++) { if (arr[i][j] >= 0) { sum += arr[i][j]; count++; rowNonNegCount++; } } nonNegCount[i] = rowNonNegCount; } if (count == 0) { return 0; } return sum / count; } int main() { int** arr = nullptr; int p, t; cout << "Введите размерность матрицы (p, t): "; cin >> p >> t; createArray(arr, p, t); fillArray(arr, p, t); ofstream outFile("output.txt"); printArray(arr, p, t, outFile); int* nonNegCount = new int[p]; double avg = averageNonNegative(arr, p, t, nonNegCount); cout << "Среднее арифметическое неотрицательных элементов: " << avg << endl; outFile << "Среднее арифметическое неотрицательных элементов: " << avg << endl; for (int i = 0; i < p; i++) { cout << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl; outFile << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl; } deleteArray(arr, p); delete[] nonNegCount; outFile.close(); return 0; } C #include <iostream> #include <fstream> using namespace std; void createArray(int**& arr, int p, int t) { arr = new int* [p]; for (int i = 0; i < p; i++) { arr[i] = new int[t]; } } void fillArray(int** arr, int p, int t) { for (int i = 0; i < p; i++) { for (int j = 0; j < t; j++) { cout << "Введите arr[" << i << "][" << j << "]: "; cin >> arr[i][j]; } } } void printArray(int** arr, int p, int t, ofstream& out) { for (int i = 0; i < p; i++) { for (int j = 0; j < t; j++) { cout << arr[i][j] << " "; out << arr[i][j] << " "; } cout << endl; out << endl; } } void deleteArray(int**& arr, int p) { for (int i = 0; i < p; i++) { delete[] arr[i]; } delete[] arr; arr = nullptr; } double averageNonNegative(int** arr, int p, int t, int* nonNegCount) { double sum = 0.0; int count = 0; for (int i = 0; i < p; i++) { int rowNonNegCount = 0; for (int j = 0; j < t; j++) { if (arr[i][j] >= 0) { sum += arr[i][j]; count++; rowNonNegCount++; } } nonNegCount[i] = rowNonNegCount; } if (count == 0) { return 0; } return sum / count; } int main() { int** arr = nullptr; int p, t; cout << "Введите размерность матрицы (p, t): "; cin >> p >> t; createArray(arr, p, t); fillArray(arr, p, t); ofstream outFile("output.txt"); printArray(arr, p, t, outFile); int* nonNegCount = new int[p]; double avg = averageNonNegative(arr, p, t, nonNegCount); cout << "Среднее арифметическое неотрицательных элементов: " << avg << endl; outFile << "Среднее арифметическое неотрицательных элементов: " << avg << endl; for (int i = 0; i < p; i++) { cout << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl; outFile << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl; } deleteArray(arr, p); delete[] nonNegCount; outFile.close(); return 0; }
lethe1337, Хотя на самом деле, тут субъективно. Давайте так: каждый из нас прав наполовину, толковать по-разному можно.
lethe1337, https://ru.stackoverflow.com/questions/1226895 если вы читаете SO, то вы в курсе, что Harry фигни не скажет
После дискуссии под предыдущим кодом, переделал в вектора, также добавил проверку на то, существует ли текстовик, если нет - создает его. #include <iostream> #include <fstream> #include <vector> #include <windows.h> using namespace std; void createArray(vector<vector<int>>& arr, int p, int t) { arr.resize(p, vector<int>(t)); } void fillArray(vector<vector<int>>& arr, int p, int t) { for (int i = 0; i < p; i++) { for (int j = 0; j < t; j++) { cout << "Введите arr[" << i << "][" << j << "]: "; cin >> arr[i][j]; } } } void printArray(vector<vector<int>>& arr, int p, int t, ofstream& out) { for (int i = 0; i < p; i++) { for (int j = 0; j < t; j++) { cout << arr[i][j] << " "; out << arr[i][j] << " "; } cout << endl; out << endl; } } void deleteArray(vector<vector<int>>& arr) { arr.clear(); } double averageNonNegative(vector<vector<int>>& arr, int p, int t, vector<int>& nonNegCount) { double sum = 0.0; int count = 0; for (int i = 0; i < p; i++) { int rowNonNegCount = 0; for (int j = 0; j < t; j++) { if (arr[i][j] >= 0) { sum += arr[i][j]; count++; rowNonNegCount++; } } nonNegCount[i] = rowNonNegCount; } if (count == 0) { return 0; } return sum / count; } int main() { SetConsoleOutputCP(CP_UTF8); vector<vector<int>> arr; int p, t; cout << "Введите размерность матрицы (p, t): "; cin >> p >> t; createArray(arr, p, t); fillArray(arr, p, t); ofstream outFile("output.txt"); if (!outFile.is_open()) { outFile.open("output.txt"); } printArray(arr, p, t, outFile); vector<int> nonNegCount(p); double avg = averageNonNegative(arr, p, t, nonNegCount); cout << "Среднее арифметическое неотрицательных элементов: " << avg << endl; outFile << "Среднее арифметическое неотрицательных элементов: " << avg << endl; for (int i = 0; i < p; i++) { cout << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl; outFile << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl; } outFile.close(); return 0; } C #include <iostream> #include <fstream> #include <vector> #include <windows.h> using namespace std; void createArray(vector<vector<int>>& arr, int p, int t) { arr.resize(p, vector<int>(t)); } void fillArray(vector<vector<int>>& arr, int p, int t) { for (int i = 0; i < p; i++) { for (int j = 0; j < t; j++) { cout << "Введите arr[" << i << "][" << j << "]: "; cin >> arr[i][j]; } } } void printArray(vector<vector<int>>& arr, int p, int t, ofstream& out) { for (int i = 0; i < p; i++) { for (int j = 0; j < t; j++) { cout << arr[i][j] << " "; out << arr[i][j] << " "; } cout << endl; out << endl; } } void deleteArray(vector<vector<int>>& arr) { arr.clear(); } double averageNonNegative(vector<vector<int>>& arr, int p, int t, vector<int>& nonNegCount) { double sum = 0.0; int count = 0; for (int i = 0; i < p; i++) { int rowNonNegCount = 0; for (int j = 0; j < t; j++) { if (arr[i][j] >= 0) { sum += arr[i][j]; count++; rowNonNegCount++; } } nonNegCount[i] = rowNonNegCount; } if (count == 0) { return 0; } return sum / count; } int main() { SetConsoleOutputCP(CP_UTF8); vector<vector<int>> arr; int p, t; cout << "Введите размерность матрицы (p, t): "; cin >> p >> t; createArray(arr, p, t); fillArray(arr, p, t); ofstream outFile("output.txt"); if (!outFile.is_open()) { outFile.open("output.txt"); } printArray(arr, p, t, outFile); vector<int> nonNegCount(p); double avg = averageNonNegative(arr, p, t, nonNegCount); cout << "Среднее арифметическое неотрицательных элементов: " << avg << endl; outFile << "Среднее арифметическое неотрицательных элементов: " << avg << endl; for (int i = 0; i < p; i++) { cout << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl; outFile << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl; } outFile.close(); return 0; }