Форум программистов, компьютерный форум CyberForum.ru

Найти сумму тех из элементов a2j(j=1,...,m), для которых a1j имеет значение наибольшего среди значений - C++

Восстановить пароль Регистрация
 
Nikitos1243
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 5
07.01.2014, 14:19     Найти сумму тех из элементов a2j(j=1,...,m), для которых a1j имеет значение наибольшего среди значений #1
Даны натуральное число n, целочисленная матрица [aij] i=1,2; j=1,...,m. Найти сумму тех из элементов a2j(j=1,...,m), для которых a1j имеет значение наибольшего среди значений a11, a12,...,a1m.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2014, 14:19     Найти сумму тех из элементов a2j(j=1,...,m), для которых a1j имеет значение наибольшего среди значений
Посмотрите здесь:

Найти сумму тех элементов массива, цифровая запись которых дает четную сумму цифр C++
C++ Действие с матрицей (Найти наименьшее из значений элементов столбца, который имеет наибольшую сумму модулей элементов)
C++ Дана действительная матрица порядка N.Для данного натурального m(m<=2N) найти сумму тех элементов матрицы, сумма индексов которых равна m.
Массив: Найти среднее арифметическое элементов матрицы и сумму элементов тех строк матрицы, в которых отрицателен элемент главной диагонали. C++
Найти сумму тех из элементов a2j(j=1,...,m), для которых a1j имеет значение наибольшего среди значений a11, a12,...,a1m C++
Матрицы. Найти максимальное значение среди буквенных символов и минимальное среди цифровых значений C++
C++ Найти сумму тех элементов массива, цифровая запись которых дает четную сумму цифр, а также найти максимальный элемент массива
Найти среди элементов массива два, модуль разности которых имеет наибольшее значение C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Progers
New to C++
 Аватар для Progers
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
07.01.2014, 14:25     Найти сумму тех из элементов a2j(j=1,...,m), для которых a1j имеет значение наибольшего среди значений #2
Где код? Где нужно помочь?
Nikitos1243
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 5
09.02.2014, 13:51  [ТС]     Найти сумму тех из элементов a2j(j=1,...,m), для которых a1j имеет значение наибольшего среди значений #3
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include "stdio.h"
#include "locale.h"
#include "conio.h"
#include "stdlib.h"
#include "time.h"
#include <memory.h>
#include <iostream>
#include <iomanip>

void writemenu()
{
system("cls");
printf("МЕНЮ:\n");
printf("1) - Ввод данных\n");
printf("2) - Решение\n");
printf("3) - Вывод результата\n");
printf("4) - О программе\n");
printf("5) - Текст задания\n");
printf("6) - Выход\n");
}

void output(int N, int M, int **A)
{
for (int i=1; i<=N; i++)
{
for(int j=1;j<=M;j++)
{
//5 - ширина столбца, если написать %-5d то выравнивание будет по левому краю
printf("%8d", A[i][j]);
}
printf("\n");
}
}
void getmatrixfromfile(int* N, int*M, int **A)
{
char *path = new char[255];
memset(path, 0, 254);
printf("\nВ первой строке файла должна быть записана размерность матрицы - 2 целых числа в диапазоне от 1 до 10 через пробел. В последующих строке или строках должны быть записаны целые числа. Разбиение чисел по строкам автоматическое, и при пропусках все числа будут сдвигаться.\n");
strcpy(path, "input.txt");
FILE* fp = fopen(path,"r");
if(fp != NULL)
{
fscanf(fp, "%d %d", N, M);
if(*N<11 && *M<11 && *M>0 && *N>0)
{
for(int i = 1; i<=*N; i++)
for(int j = 1; j<=*M; j++)
fscanf(fp, "%d", &(A[i][j]));
printf("Считанная матрица:\n");
output(*N, *M, A);
}
else
{
printf("Неверно задана размерность матрицы\n");
}
fclose(fp);
}

else printf("Невозможно открыть файл на чтение.\n");

}

void saveresulttofile(int N, int M, int **B)
{
char *path = new char[255];
memset(path, 0, 254);
printf("\nЧтобы сохранить данные в файл по умолчанию нажмите Enter\n");
if(_getch()==13)
{
strcpy(path, "output.txt");
}
else
{
printf("\nВведите абсолютный путь к файлу. Например: D:\\\\result.txt\n");
gets(path);
}
FILE* fp = fopen(path,"a");
if(fp != NULL)
{
for(int i = 0; i<N; i++)
{
for(int j = 0; j<M; j++)
fprintf(fp, "%d\t", B[i][j]);
fprintf(fp,"\n");
}
printf("Данные записаны в файл %s\n", path);

fclose(fp);
}

else printf("Невозможно открыть файл для записи.\n");
}

void input(int *N, int *M, int **A, bool *inputed)
{
int i,j,d, k=0;
system("cls");

while(k!=1 && k!=2 && k!=3)
{
printf("\nВыберите тип ввода: случайная матрица (1), ручной ввод (2) или ввод из файла(3)?\n");
scanf_s("%d", &k); fflush(stdin);
};
*N = 0;
*M = 0;

if(k!=3)
{
while((*N>10) || (*N<1))
{
printf("Введите количество строк матрицы (1..10):\n");
scanf_s("%d", N); fflush(stdin);
};

while((*M>10) || (*M<1))
{
printf("Введите количество столбцов матрицы (1..10):\n");
scanf_s("%d", M); fflush(stdin);
};

if (k==1)
{
for(i=1;i<*N+1;i++)
for(j=1;j<*M+1;j++) {A[i][j] = static_cast<int>( rand() ) * 100 / (RAND_MAX + 1);}
}
else
{
printf("Введите целочисленную матрицу размером %dx%d:\n", *N, *M);
printf("Элементы матрицы должны быть в диапазоне: (-100000)-(100000)\n");
for(i=1;i<*N+1;i++)
for(j=1;j<*M+1;j++)
{
printf("A[%d][%d]=", i-1,j-1);
fflush(stdin);
if (scanf_s("%d", &d)==0 || d>=100000|| d<=-1000000)
{
printf("Введите целое число в диапазоне {-100000}-{100000}\n");
j--;
continue;
}
A[i][j] = d;
}
}
printf("Введенная матрица:\n");
output(*N, *M, A);
}
else
{
getmatrixfromfile(N, M, A );
}

*inputed = true;
printf("Нажмите пробел чтобы продолжить");
_getch();
}

void solve(int N, int M, int **A, int **B, bool *solved)
{
system("cls");
int max = a[0][0];
for (inti = 1 ; i< n ; i++)
max = (a[0][i] > max ? a[0][i] : max);
int sum = 0;
for (inti = 0 ; i< n ; i++)
sum += (a[0][i] == max ? a[1][i] : 0);
printf("Result = %d" , sum);
_getch();

}
void resoutput(bool solved, int **B, int **A, int N, int M)
{
system("cls");
char c;
if (solved)
{
printf("Исходная матрица A:\n");
output(N, M, A);

printf("Преобразованная матрица B:\n");
for (int i=0; i<N; i++)
{
for(int j=0;j<M;j++)
printf("%5d", B[i][j]);
printf("\n");
}
printf("\nДля сохранения результата в файл нажмите Enter");
c = _getch();
fflush(stdin);
if(c==13)
{
saveresulttofile(N,M,B);
}
printf("Нажмите пробел...\n"); _getch();
}
else
{
printf("Сначала выполните пункт 2\n"); _getch();
}
}
void free_memory(int **A, int **B)
{
for(int i=0;i<12;i++)
{
delete A[i];
delete B[i];
}
delete[]A;

}

int main()
{
int i,j;

int **A=new int*[12];
int **B=new int*[12];

for(i=0;i<12;i++) {A[i] = new int[12]; B[i] = new int[12];}

for (i=0; i<12; i++)
{
for(j=0;j<12;j++) {A[i][j]=0; B[i][j]=0;}
}

int N = 0, M = 0;
int d = 0;
bool inputed = false; //истинна, когда значения элементов матрицы определены
bool solved = false; //истинна, когда решение получено

setlocale(LC_ALL, "Russian");


while (true)
{
writemenu();
d = 0;
while(scanf_s("%d", &d)==0)
{
fflush(stdin);
if(d==0) printf("Такого пункта меню нет\n");
}

switch(d)
{
case 1: {input(&N,&M,A,&inputed); i=0; break;}
case 2: {
if (inputed) {solve(N, M ,A, B, &solved); i=0; break;}
else {printf("Сначала введите значения\n"); _getch(); break;}
}
case 3: {resoutput(solved, B, A, N, M); break;}
case 4: {about(); d=0; break;}
case 5: {help(); break;}
case 6: { free_memory(A, B); return 0;}
default: {printf("Вы ввели неверное значение\n"); d = 0;}
}

};
}
Yandex
Объявления
09.02.2014, 13:51     Найти сумму тех из элементов a2j(j=1,...,m), для которых a1j имеет значение наибольшего среди значений
Ответ Создать тему
Опции темы

Текущее время: 01:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru