Задание Part 4
| |
WereWolf | Дата: Понедельник, 25 Октября 2010, 11:05 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Задание: Ввести матрицу размером NxM. Память под массив выделить динамически. Найти минимальный среди элементов, лежащих выше главной диагонали. Вот тут я опух)): Code #include <iostream> #include <iomanip> #include <conio.h> #include <math.h> using namespace std;
int main() { locale::global(locale("rus")); double **a,tmp; int i,n,m,imin,jmin,imax,j,max; int j; cout << "Введите размер: n,m" << endl; cin >> n >> m; a = new double *[n]; for (i=0;i<n;i++) a[i] = new double [m]; for (i=0;i<n;i++) for (j=0;j<m;j++) { cout << "Введите a["<<i<<"]["<<j<<"]: "; cin >> a[i][j]; } cout << "Массив А: " << endl; for (i=0;i<n;i++) { for (j=0;j<m;j++) cout << setw (9) << a[i][j] << " "; cout << endl; }
getch(); return 0; И то пишет что: Quote 'int j' : redefinition Quote see declaration of 'j'
В мире много глюков - и с ними надо жить!!!
Сообщение отредактировал WereWolf - Понедельник, 25 Октября 2010, 13:21 |
|
| |
lvovand | Дата: Понедельник, 25 Октября 2010, 11:43 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| j дважды объявил int i,n,m,imin,jmin,imax,j,max; int j; - эту строчку удали
Разработка и продвижение сайтов. Дизайн
|
|
| |
WereWolf | Дата: Понедельник, 25 Октября 2010, 12:39 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| ок спс Code #include <iostream> #include <iomanip> #include <conio.h> #include <math.h> using namespace std;
int main() { locale::global(locale("rus")); double **a,tmp; int i,n,m,imin,jmin,imax,j,max; cout << "Введите размер: n,m" << endl; cin >> n >> m; a = new double *[n]; for (i=0;i<n;i++) a[i] = new double [m]; for (i=0;i<n;i++) for (j=0;j<m;j++) { cout << "Введите a["<<i<<"]["<<j<<"]: "; cin >> a[i][j]; } cout << "Массив А: " << endl; for (i=0;i<n;i++) { for (j=0;j<m;j++) cout << setw (9) << a[i][j] << " "; cout << endl; }
getch(); return 0; } Ну вот как реализовать задание - не могу...
В мире много глюков - и с ними надо жить!!!
|
|
| |
lvovand | Дата: Понедельник, 25 Октября 2010, 12:54 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| после того, как массив задан, принимаешь минимальный элемент min = a[1,0] потом пробегаешь по массиву for (i=0;i<n;i++) for (j=0;j<m;j++) и смотришь элементы у которых i>j - это будут элементы выше главной диагонали, если a[i,j] < min, то обновляешь min вот вроде и все
Разработка и продвижение сайтов. Дизайн
|
|
| |
Matou | Дата: Понедельник, 25 Октября 2010, 13:11 | Сообщение # 5 |
Исходный коТ
Сейчас нет на сайте
| Quote (lvovand) после того, как массив задан, принимаешь минимальный элемент min = a[1,0] потом пробегаешь по массиву for (i=0;i<n;i++) for (j=0;j<m;j++) и смотришь элементы у которых i>j - это будут элементы выше главной диагонали, если a[i,j] < min, то обновляешь min вот вроде и все в принципе можно и так, но я предпочитаю сразу строить цикл так чтобы он обходил только главную диагональ. Code double min_element = a[0][1]; int k = 1; for(i = 0; i < n; ++i) { for(j = k; j < m; j++) if(min_element > a[i][j]) min_element = a[i][j];
++k; }
cout << "Минимальный елемент над главной диагональю:" << min_element << endl; Но все же есть одно но, эта программа работает только для квадратных матриц, да и понятие главная диагональ вводится только для таких матриц, а в задании указана матрица MxN. Помимо этого в конце стоит что-то непонятное. "Xt" - что это означает? Есть подозрение что это транспонирование, т.е. что-то тут еще и транспонировать надо.
Сообщение отредактировал Matou - Понедельник, 25 Октября 2010, 13:15 |
|
| |
WereWolf | Дата: Понедельник, 25 Октября 2010, 13:23 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| Нет. Транспонировать ее не надо)) Это я случай ввел когда текст вводил))) Добавлено (25.10.2010, 13:23) --------------------------------------------- а таким способом можно: Code imin=jmin=imax=jmax=0;
for (i=0;i<n;i++) for (j=0;j<m;j++) { if (a[i][j] < a[imin][jmin]) { imin = i; jmin = j; cout << "Минимальное i = " << imin << endl; cout << "Минимальное j = " << jmin << endl; } if (a[i][j] > a[imax][jmax]) { imax = i; jmax = j; cout << "Максимальное i = " << imax << endl; cout << "Максимальное j = " << jmax << endl; Ну не до конца обдумал))
В мире много глюков - и с ними надо жить!!!
|
|
| |
Matou | Дата: Понедельник, 25 Октября 2010, 13:27 | Сообщение # 7 |
Исходный коТ
Сейчас нет на сайте
| WereWolf, Можно организовать что-то наподобии, но ты будешь искать координаты максимальных и минимальных елементов, а не их значения, к тому же тут поиск идет по всему массиву а не по области выше главной диагонали.
|
|
| |
WereWolf | Дата: Понедельник, 25 Октября 2010, 13:33 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| Matou, ясно, т.е. в итоге код: Code #include <iostream> #include <iomanip> #include <conio.h> #include <math.h> using namespace std;
int main() { locale::global(locale("rus")); int i,n,m,imin,jmin,imax,j,jmax; cout << "Введите размер: n,m" << endl; cin >> n >> m; a = new double *[n]; for (i=0;i<n;i++) a[i] = new double [m]; for (i=0;i<n;i++) for (j=0;j<m;j++) { cout << "Введите a["<<i<<"]["<<j<<"]: "; cin >> a[i][j]; } cout << "Массив А: " << endl; for (i=0;i<n;i++) { for (j=0;j<m;j++) cout << setw (9) << a[i][j] << " "; cout << endl; }
double min_element = a[0][1]; int k = 1; for(i = 0; i < n; ++i) { for(j = k; j < m; j++) if(min_element > a[i][j]) min_element = a[i][j];
++k; }
cout << "Минимальный элемент над главной диагональю: " << min_element << endl; getch(); return 0; } Такой ?
В мире много глюков - и с ними надо жить!!!
Сообщение отредактировал WereWolf - Понедельник, 25 Октября 2010, 13:34 |
|
| |
Matou | Дата: Понедельник, 25 Октября 2010, 13:36 | Сообщение # 9 |
Исходный коТ
Сейчас нет на сайте
| Ну да, где-то так). Можно еще бибилиотеку math.h отключить за ненадобностью.
|
|
| |
WereWolf | Дата: Понедельник, 25 Октября 2010, 13:49 | Сообщение # 10 |
частый гость
Сейчас нет на сайте
| ок... поставлю плюс через 4 дня, до этого ставил тебе :-)
В мире много глюков - и с ними надо жить!!!
|
|
| |
|