#include "pch.h"
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include "Functions.h"
int main(int argn, char *argc[]) {
FILE *dat, *res;
dat = fopen(argc[1], "r"); // Открытие входного файла
res = fopen(argc[2], "w"); // Открутие выходнго файла
int N = 0;
int M = 0;
double **A;
//double *B;
double *B = new double[N];// Объявление динамического массива
/*
fscanf(dat, "%d", &N);
fscanf(dat, "%d", &M); // Считывание размеров матрицы
double **A = new double*[N];
double *B = new double[N];// Объявление динамического массива
for (int i = 0; i < N; i++)
A[i] = new double[M];
*/
readMatrix(N, M, &A, dat); // Считывание матрицы
fprintf(res, "Задана матрица A из %d строк и %d столбцов:\n", N, M);
//writeMatrix(N, M, A, res); // Вывод матрицы
bool sum = summa(N, M, A); // Проверка суммы
if (sum==false)
{
fprintf(res, "\nСумма элементов последнего столбца не отрицательна\n");
fprintf(res, "\n");
massiv(N, M, A, B);
writeMassiv(N, B, res); // Вывод массива
fprintf(res, "\n");
fprintf(res, "\n");
//writeMatrix(N, M, A, res); // Вывод матрицы
}
else {
fprintf(res, "\nСумма элементов последнего столбца отрицательна\n");
fprintf(res, "\n");
writeMatrix(N, M, A, res); // Вывод матрицы
}
fclose(dat);
fclose(res); // Закрытие файлов
for (int i = 0; i < N; i++)
delete[] A[i];
delete[] A; // Освобождение памяти от матрицы
if (sum == false)
{
delete[] B; // Освобождение памяти от матрицы
}
}
#include <stdio.h>
#include <conio.h>
#include "pch.h"
#include "Functions.h"
// Считывание матрицы из файла
void readMatrix(int &N, int &M, double ***A, FILE *dat){
fscanf(dat, "%d", &N);
fscanf(dat, "%d", &M); // Считывание размеров матрицы
*A = new double*[N];
for (int i = 0; i < N; i++)
(*A)[i] = new double[M];
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
fscanf(dat, "%lf", &((*A)[i][j]));
}
// Вывод матрицы в файл
void writeMatrix( int N, int M, double **A, FILE *res){
for (int i = 0; i < N; i++){
for (int j = 0; j < M; j++)
fprintf(res, "%6.2lf ", A[i][j]);
fprintf(res, "\n");
}
}
// Вывод массива в файл
void writeMassiv( int N, double *B, FILE *res) {
for (int i = 0; i < N; i++) {
fprintf(res, "%6.2lf ", B[i]);
}
}
double massiv(int N,int M, double **A, double *B){
for (int i = 0; i < N; i++)
{
B[i] = sredn(i, M, A);
}
return 0;
}
// Подсчёт среднего арифметического
double sredn( int i, int M, double **A) {
double summ = 0;
for (int j = 0; j < M; j++)
{
summ = summ + A[i][j];
}
return summ / (M); // Делим на количество элементов
}
// Проверка суммы
bool summa( int N, int M, double **A) {
bool sum = false; // Допустим сумма НЕ отрицательна
double summ = 0;
for(int i=0; i<N; i++)
{
summ = summ + A[i][M-1];
}
if (summ < 0) {
sum = true;
}
return sum;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
double sredn(int i, int M, double **A)
{
double summ = 0;
for (int j = 0; j < M; j++)
{
summ = summ + A[i][j];
}
return summ / M;
}
void readMatrix(int &N, int &M, double** (&A), FILE *dat)
{
fscanf(dat, "%d", &N);
fscanf(dat, "%d", &M);
A = new double*[N];
for (int i = 0; i < N; i++)
{
A[i] = new double[M];
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
fscanf(dat, "%lf", &A[i][j]);
}
}
}
void writeMatrix(int N, int M, double **A, FILE *res)
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
fprintf(res, "%6.2lf ", A[i][j]);
}
fprintf(res, "\n");
}
}
void writeMassiv(int N, double *B, FILE *res)
{
for (int i = 0; i < N; i++)
{
fprintf(res, "%6.2lf ", B[i]);
}
}
double massiv(int N, int M, double **A, double *B)
{
for (int i = 0; i < N; i++)
{
B[i] = sredn(i, M, A);
}
return 0;
}
bool summa(int N, int M, double **A)
{
bool sum = false; // Допустим сумма НЕ отрицательна
double summ = 0;
for (int i = 0; i < N; i++)
{
summ = summ + A[i][M - 1];
}
if (summ < 0)
{
sum = true;
}
return sum;
}
int main(int argn, char *argc[])
{
FILE *dat, *res;
dat = fopen("D:\\in.txt", "r");
res = fopen("D:\\out.txt", "w");
int N = 0;
int M = 0;
double **A = nullptr;
readMatrix(N, M, A, dat);
double *B = new double[N];
fprintf(res, "Задана матрица A из %d строк и %d столбцов:\n", N, M);
bool sum = summa(N, M, A);
if (true)
{
fprintf(res, "\nСумма элементов последнего столбца не отрицательна\n");
fprintf(res, "\n");
massiv(N, M, A, B);
writeMassiv(N, B, res);
fprintf(res, "\n");
fprintf(res, "\n");
}
else
{
fprintf(res, "\nСумма элементов последнего столбца отрицательна\n");
fprintf(res, "\n");
writeMatrix(N, M, A, res);
}
fclose(dat);
fclose(res);
for (int i = 0; i < N; i++)
{
delete[] A[i];
}
delete[] A;
delete[] B;
}
3 3
1 2 3
4 5 6
7 8 9
Задана матрица A из 3 строк и 3 столбцов:
Сумма элементов последнего столбца не отрицательна
2.00 5.00 8.00