Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2013, 19:41   #1
rafael999
Пользователь
 
Регистрация: 21.09.2013
Сообщений: 17
По умолчанию двумерный массив с++

Помогите пожалуйста разобраться с заданием , первые два у меня работают отлично , а вот третье в котором нужно вместо А[3][j_max] поставить сумму найденную в первом задании , возникает проблема.

Постановка задачи. Исходный массив считать из файла *.txt (файл создать самим). Результаты вычислений и манипуляций над массивом вывести на экран и в файлы*.xls. Для записи результатов в файл создать пользовательскую функцию.
Дана матрица А(4,4)
1.Найти сумму элементов среди элементов расположенных на главной диагонали матрицы А.
2.Найти максимальный элемент в 3-ей строке матрицы
3.Поменять местами найденный максимальный элемент и значение S.
Код:
#include"stdafx.h"
#include<iostream>
#include<iomanip>
#include<fstream>
#include<math.h>
using namespace std;
void read_matr(double Y[4][4]){
ifstream f("c://yes.txt");
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
f>>Y[i][j];}
 }
 f.close();}
void print_matr(double Y[4][4]){   //печатьматрицывконсоль
 cout<<"matrica:"<<endl;
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
cout<<setw(10)<<Y[i][j];}
 cout<<endl;}
 }
void print_values(char*str, double v){ // выводвфайлполученныхданных //(дляпунктов 1-4, 6)
fstream f1;
f1.open("values.xls", ios::app);
f1<<str<<"\t"<<v<<endl;
f1.close();
}
void print_matr_file(char*f_name, double Y[4][4]){// выводматрицыв //файлсименем f_name
ofstream f2(f_name);
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
f2<<Y[i][j]<<"\t";
}
f2<<endl;
}
f2.close();
f2.clear();}

double function1(double Y[4][4]){
double s=0;
for (int i = 0; i < 4; i++)
{s+=Y[i][i];
}
print_values("1)\tсумма элементов главной диагонали = ",s);
return s;
}
void function2(double Y[4][4]){
double max=-1000; int j_max;
for(int j=0; j<4; j++)
{
if(Y[2][j]>max){
max=Y[2][j];
j_max=j;}}
print_values("2)\tнаибольшийэлемент 3 строки = ",max);
print_values("\tномерстолбца = ",j_max+1);
cout<<" max = "<<max;
cout<<"; nomer stolbca = "<<j_max+1<<endl;
}
void function3(double Y[4][4], double ss){
Y[2][j_max]=ss;
print_matr(Y);
print_matr_file("3zadanie.xls",Y);
}



int main(){
double A[4][4];
 read_matr(A);
 cout<<"ishodnaja matrica:"<<endl;
 print_matr(A);
cout<<"vipolnenie:"<<endl;
// 1 - нахождение суммы всех элементов в матрице
double s1=function1(A);
cout<<"1) summa glavnoy diagomali = "<<s1<<endl;
// 2 - наибольший элемент вглавной диагонали
cout<<"2) naibolshii element v 3 stroke:"<<endl;
function2(A);
// 3 - поменять А[3][j_max] на s1
cout<<"3) pomenjat A[3][j_max] na s1"<<endl;
function3(A, s1);
return 0;
 }
спаисбо
Изображения
Тип файла: jpg kiss_7kb.1384875160.jpg (12.0 Кб, 124 просмотров)
rafael999 вне форума Ответить с цитированием
Старый 19.11.2013, 20:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

int j_max; сделай глобальной, а то не все участки кода его видят.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2013, 20:32   #3
rafael999
Пользователь
 
Регистрация: 21.09.2013
Сообщений: 17
По умолчанию

А как сделать глобальным?
rafael999 вне форума Ответить с цитированием
Старый 19.11.2013, 21:04   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А как ты вообще эту программу написал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2013, 21:17   #5
rafael999
Пользователь
 
Регистрация: 21.09.2013
Сообщений: 17
По умолчанию

По методичке
rafael999 вне форума Ответить с цитированием
Старый 19.11.2013, 21:37   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Понятно. Глобальные переменные это переменные, описанные в самом начале программы после всех include как правило. Вот ты ее там и опиши.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив JokerWCC Помощь студентам 5 10.10.2010 20:10
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40