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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Бинарное и блочное возведение в степень С++ http://www.cyberforum.ru/cpp-beginners/thread1064838.html
Помогите! "Сравнить основные характеристики бинарного и традиционного блочного метода возведения в степень"
C++ Субстанциализм как способ построения онтологии Субстанциализм как способ построения онтологии. http://www.cyberforum.ru/cpp-beginners/thread1064821.html
C++ Сформировать новый массив B того же размера по следующему правилу: (code is inside)
Задача составлена по задаче: Дан числовой массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент B равен сумме элементов массива A с номерами от 1 до k. +надо сделать 2 типа ввода :самостоятельный и случайный, Help!!Заранее спасибо..! Вот мой пример: #include <iostream> #include <cstdlib> using namespace std; int main( void ) //ничего не возвращает...
Как сделать так чтобы при изменении одной переменной изменялась другая? C++
Как сделать так чтобы при изменении одной переменной изменялась другая?
C++ Найти ошибку в коде http://www.cyberforum.ru/cpp-beginners/thread1064816.html
Как совершенный новичок не могу понять, почему работает не так, как надо. Помогите разобраться, пожалуйста. Работать должно по вложенной формуле. #include <iostream> using namespace std; void input () { int n, step, up_limit; float x;
C++ Для чего данная конструкция? Для чего данная конструкция? void (*foo)(int); подробнее

Показать сообщение отдельно
Nikitos1243
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 5
09.02.2014, 13:51  [ТС]     Найти сумму тех из элементов a2j(j=1,...,m), для которых a1j имеет значение наибольшего среди значений
#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;}
}

};
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru