vopros po C
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
vopros po C - 2004-11-09 23:53:46
|
|
|
wurdik
Сообщений: 46
Оценки: 0
Присоединился: 2004-09-27 12:55:26
|
Narod pomogite re6itj zada4ku. Ja tolko na4al izu4atj C. I ne mogu soobrazitj kak realizovatj sleduju6uju zada4ku. Nado sozdatj dvumernij massiv (kak prosto sosdatj, tak i pri pomo6i ukazatelej) i najti v njom naimen6ij element v stroke i naibol6ij v kolonne. Pomogite plz. O4en nado
|
|
|
vopros po C - 2004-11-11 21:11:53
|
|
|
hell_admin
Сообщений: 59
Оценки: 0
Присоединился: 2004-09-28 23:26:38
|
тебе нужены вектор столбецы минимальных элементов в строках, и вектор сторока колоннах??
|
|
|
vopros po C - 2004-11-12 00:27:34
|
|
|
wurdik
Сообщений: 46
Оценки: 0
Присоединился: 2004-09-27 12:55:26
|
mne nado 4tobi vipolnjalosj i odno i vtoroe. Najti element-ego indeks. Minimalnij v rjadu i maksimalnij v kolonne. po ideje esli postavitj rando, to on budet nahoditj etot element v o4en redkih slu4ajah - eto ja ponjal, a vot kak sodatj eto delo, nu nikak ne mogu ponjatj. pomogi plz.
|
|
|
vopros po C - 2004-11-12 14:47:00
|
|
|
hell_admin
Сообщений: 59
Оценки: 0
Присоединился: 2004-09-28 23:26:38
|
// help.cpp : Defines the entry point for the console application. //
#include "stdafx.h" #include <iostream.h>
// устанавливаем размеры матрицы #define MAX_I 3 #define MAX_J 3
int main(int argc, char* argv[]) { int A[MAX_I][MAX_J]; // здесь заполняем // … // для теста возьму // 1 -1 3 // 3 2 6 -> 2 vrode podhodit // 3 1 4
A[0][0] = 1; A[0][1] = -1; A[0][2] = 3; A[1][0] = 3; A[1][1] = 2; A[1][2] = 6; A[2][0] = 3; A[2][1] = 1; A[2][2] = 4;
int temp; // временная переменная для хранения минимальнго в строке int t2; // временная переменная для хранения максимального в колонне
int cj = 0;
// Выходной индекс int out_i = -1; int out_j = -1; for (int i=0; i<MAX_I; i++) // Идем по строкам { temp = A[0]; // Пусть минимальный в строке - первый<BR> <BR> for (int j=1; j < MAX_J; j++) // Проходим по строке и находи минимальный елемент<BR> if (temp > A[j]) // Если текущий меньше минимального знацит минимальный текущий<BR> {<BR> temp = A[j]; // <BR> cj = j; // Номер столбца что бы проверит эл-т на максимальность в колонне<BR> }<BR> <BR> t2 = A[0][cj];<BR> <BR> for (j=1; j < MAX_I ; j++) // идем по колонне и находим максимальный эл-т<BR> if ( t2 < A[j][cj] ) t2 = A[j][cj];<BR><BR> if (temp == t2) // сравниваем минимальный в сроке и максимальный в колонне<BR> {<BR> out_i = i; // номер строки на кокоторой эл-т<BR> out_j = cj; // номер столбца<BR> break;<BR><BR> }<BR> // если нет переходим на другую строку<BR> }<BR><BR> if ( out_i > 0) // эл-т найден<BR> {<BR> cout << "Element A[" << out_i << "][" << out_j << "] = " << A[out_i][out_j];<BR><BR> }<BR> else // не найден out_i == -1 не изменилось<BR> {<BR> cout << "No element found";<BR><BR> }<BR> cin >> i;<BR> return 0;<BR>}<BR>
|
|
|
vopros po C - 2004-11-12 14:54:59
|
|
|
hell_admin
Сообщений: 59
Оценки: 0
Присоединился: 2004-09-28 23:26:38
|
Нашел косяк в том исходнике. Если в строке несколько одинаковых минимальных эл-тов - то проверяется только первый, и если он не максимальный в столбце то пишется что эл-т не найден. Здесь все исправлено используется массив индексов в который помещаются номера всех минимальных элементов cj[], а затем все колонны, их содержащие, перебираются. Но в обоих прогах выводится первый найденный эл-т удовлетворяющий условиям.
Вот исправленный исходник:
#include <iostream.h>
// устанавливаем размеры матрицы #define MAX_I 3 #define MAX_J 3
int main(int argc, char* argv[]) { int A[MAX_I][MAX_J]; // здесь заполняем
// другая матрица с одинаковыми минимальныйми A[0][0] = 1; A[0][1] = -1; A[0][2] = 3; A[1][0] = 4; A[1][1] = 5; A[1][2] = 4; A[2][0] = 5; A[2][1] = 1; A[2][2] = 4; // и исправленная программа..
int temp; // временная переменная для хранения минимальнго в строке int t2; // временная переменная для хранения максимального в колонне
int cj[MAX_I]; int a=0; int k;
// Выходной индекс int out_i = -1; int out_j = -1; for (int i=0; i<MAX_I; i++) // Идем по строкам { a = 0; temp = A[0]; // Пусть минимальный в строке - первый<BR> <BR> for (int j=0; j < MAX_J; j++) // Проходим по строке и находи минимальный елемент<BR> if (temp >= A[j]) // Если текущий меньше минимального знацит минимальный текущий<BR> {<BR> if (temp == A[j])<BR> {<BR> cj[a++] = j;<BR> }<BR> else<BR> {<BR> cj[a] = j; <BR> }<BR> temp = A[j]; // <BR> <BR> }<BR> <BR> for (k=0;k<a;k++)<BR> {<BR> t2 = A[0][cj[k]];<BR> <BR> for (j=0; j < MAX_I ; j++) // идем по колонне и находим максимальный эл-т<BR> if ( t2 < A[j][cj[k]] ) t2 = A[j][cj[k]];<BR><BR> if (temp == t2) // сравниваем минимальный в сроке и максимальный в колонне<BR> {<BR> out_i = i; // номер строки на кокоторой эл-т<BR> out_j = cj[k]; // номер столбца<BR> break;<BR><BR> }<BR> }<BR> // если нет переходим на другую строку<BR> }<BR><BR> if ( out_i > 0) // эл-т найден<BR> {<BR> cout << "Element A[" << out_i << "][" << out_j << "] = " << A[out_i][out_j];<BR><BR> }<BR> else // не найден out_i == -1 не изменилось<BR> {<BR> cout << "No element found";<BR><BR> }<BR> cin >> a;<BR><BR> return 0;<BR>}
|
|
|
vopros po C - 2004-11-12 15:19:31
|
|
|
hell_admin
Сообщений: 59
Оценки: 0
Присоединился: 2004-09-28 23:26:38
|
Скинь мне своё мыло на 0x16@mail.ru мне проще туда скинуть исходник, я за%;ался пытатся на форуме файл прикрепить. А так он i в [](квадратных скобках хавает как начало курсивного текста)..
|
|
|
vopros po C - 2004-11-12 19:15:29
|
|
|
wurdik
Сообщений: 46
Оценки: 0
Присоединился: 2004-09-27 12:55:26
|
wurdik@yandex.ru
|
|
|
vopros po C - 2004-11-13 20:39:05
|
|
|
***mR.PrOpEr***
Сообщений: 135
Оценки: 0
Присоединился: 2004-10-08 00:33:23
|
я бы помог да вот только я C не знаю….
|
|
|
vopros po C - 2004-11-14 15:35:05
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
А не знаешь - так ХВАТИТ ФЛУДИТЬ на всех темах, блин!
|
|
|
|
|