Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

vopros po C

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> vopros po C
Имя
Сообщение << Старые топики   Новые топики >>
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
Post #: 1
vopros po C - 2004-11-11 21:11:53   
hell_admin

Сообщений: 59
Оценки: 0
Присоединился: 2004-09-28 23:26:38
тебе нужены вектор столбецы минимальных элементов в строках, и вектор сторока колоннах??

Post #: 2
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.
Post #: 3
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 &lt; MAX_J; j++) // Проходим по строке и находи минимальный елемент<BR> if (temp &gt; A[j]) // Если текущий меньше минимального знацит минимальный текущий<BR> {<BR> temp = A[j]; // <BR> cj = j; // Номер столбца что бы проверит эл-т на максимальность в колонне<BR> }<BR> <BR> t2 = A[0][cj];<BR> <BR> for (j=1; j &lt; MAX_I ; j++) // идем по колонне и находим максимальный эл-т<BR> if ( t2 &lt; 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 &gt; 0) // эл-т найден<BR> {<BR> cout &lt;&lt; &quot;Element A[&quot; &lt;&lt; out_i &lt;&lt; &quot;][&quot; &lt;&lt; out_j &lt;&lt; &quot;] = &quot; &lt;&lt; A[out_i][out_j];<BR><BR> }<BR> else // не найден out_i == -1 не изменилось<BR> {<BR> cout &lt;&lt; &quot;No element found&quot;;<BR><BR> }<BR> cin &gt;&gt; i;<BR> return 0;<BR>}<BR>
Post #: 4
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 &lt; MAX_J; j++) // Проходим по строке и находи минимальный елемент<BR> if (temp &gt;= 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&lt;a;k++)<BR> {<BR> t2 = A[0][cj[k]];<BR> <BR> for (j=0; j &lt; MAX_I ; j++) // идем по колонне и находим максимальный эл-т<BR> if ( t2 &lt; 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 &gt; 0) // эл-т найден<BR> {<BR> cout &lt;&lt; &quot;Element A[&quot; &lt;&lt; out_i &lt;&lt; &quot;][&quot; &lt;&lt; out_j &lt;&lt; &quot;] = &quot; &lt;&lt; A[out_i][out_j];<BR><BR> }<BR> else // не найден out_i == -1 не изменилось<BR> {<BR> cout &lt;&lt; &quot;No element found&quot;;<BR><BR> }<BR> cin &gt;&gt; a;<BR><BR> return 0;<BR>}
Post #: 5
vopros po C - 2004-11-12 15:19:31   
hell_admin

Сообщений: 59
Оценки: 0
Присоединился: 2004-09-28 23:26:38
Скинь мне своё мыло на 0x16@mail.ru мне проще туда скинуть исходник, я за%;ался пытатся на форуме файл прикрепить. А так он i в [](квадратных скобках хавает как начало курсивного текста)..
Post #: 6
vopros po C - 2004-11-12 19:15:29   
wurdik

Сообщений: 46
Оценки: 0
Присоединился: 2004-09-27 12:55:26
wurdik@yandex.ru
Post #: 7
vopros po C - 2004-11-13 20:39:05   
***mR.PrOpEr***

Сообщений: 135
Оценки: 0
Присоединился: 2004-10-08 00:33:23
я бы помог да вот только я C не знаю….
Post #: 8
vopros po C - 2004-11-14 15:35:05   
DeepThinker

Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
А не знаешь - так ХВАТИТ ФЛУДИТЬ на всех темах, блин!
Post #: 9
Страниц:  [1]
Все форумы >> [Веб-программинг] >> vopros po C







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.