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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.02.2014, 23:09   #1
Kirillgr
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 25
По умолчанию Найти минимальный элемент среди элементов, находящихся в строках, в которых положительных элементов меньше, чем отрицательных.

Здравствуйте. Помогите еще с одной задачей:
Дан двумерный массив. Найти минимальный элемент среди элементов, находящихся в строках, в которых положительных элементов меньше, чем отрицательных.

Код:
void main()
{int a[10][10],b,c,f=0,i,j,k=1,m,n,x,z[1],s_min,min;
printf("Vvedite razmernost massiva:\n");
scanf("%d %d",&m,&n);
printf("Vvedite elementy massiva:\n");
for(i=1;i<=n;i++)
  {for(j=1;j<=m;j++)
   {scanf("%d",&a[i][j]);
   }
  }
for(j=1;j<=m;j++)
{b=0;
 c=0;
  for(i=1;i<=n;i++)
  {if(a[i][j]>0)
   b=b+1;
   else
   if(a[i][j]<0)
   c=c+1;
  }
   if(b<c)
	{f=1;
	 min=a[1][j];
	 for(i=1;i<=n;i++)
	 if(min>a[i][j])
	 min=a[i][j];
	 else
	 z[k]=min;
	 k=k+1;
	}
}
if(f==1)
   {s_min=z[1];
	x=1;
  if(x<k)
  {if(s_min>z[x])
  s_min=z[x];
  x=x+1;
  }
printf("%d",s_min);
   }
printf("net takyh");
getch();
}
Почему-то, кроме "net takyh", ничего не выводит.

Последний раз редактировалось Kirillgr; 02.02.2014 в 23:22.
Kirillgr вне форума
Старый 02.02.2014, 23:19   #2
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

a[i,j] ?? что это? может так - a[i][j]
alekopoko вне форума
Старый 02.02.2014, 23:21   #3
Kirillgr
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 25
По умолчанию

простите дурака - бывает.
Kirillgr вне форума
Старый 02.02.2014, 23:33   #4
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

Код:
int a[10][10],b,c,f=0,i,j,k=1,m,n,x,z[1],s_min,min;
может так лучше?
1 строчка - объявление и определение первой переменной // комментарии к ней
2 строчка - объявление и определение второй переменной // комментарии к ней
У тебя это строчка , как каша переменных...ну да.. у всех твоих переменных встроенный тип данных int и значит их можно забабахать в одну строчку,но нужно ли это?ты так не путаешься?ты идеально знаешь в уме за что отвечает каждая переменная?))
alekopoko вне форума
Старый 02.02.2014, 23:53   #5
Kirillgr
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 25
По умолчанию

Код:
a[10][10] //двумерный массив
b //счетчик положительных элементов массива
с //счетчик отрицательных элементов массива
f //флаг
k //кол-во элементов массива
i,j //номер рассматриваемого элемента
m //кол-во элементов в столбцах
n //кол-во элементов в строках
min //минимальный элемент массива
s_min //минимальный элемент там, где полож. < чем отриц.
x //---
z[1] //допол. массив
Заранее прошу прощения, если я где-то ошибся. Переменную х не знаю, я разбирал с преподовательницей, для меня задача очень тяжела для восприятия.
Kirillgr вне форума
Старый 03.02.2014, 00:08   #6
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

т.е. в твоей задаче минимальный элемент должен быть один или несколько?
ну я имею в виду, а если например при инициализации двумерного массива две строчки буду удовлетворять условию - "положительных чисел меньше чем отрицательных"то тогда надо будет два минимальных числа вывести?
alekopoko вне форума
Старый 03.02.2014, 00:19   #7
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

абракадабра у тебя тут какая-то
Код:
if(f==1)
{
	s_min=z[1];
	x=1;
	if(x<k)
	{
		if(s_min>z[x])
		s_min=z[x];
		x=x+1;
	}
	printf("%d",s_min);
}
если у тебя найдется хоть один минимальный элемент,то k>=2 а значит в if(x<k) попадешь а там сравнивается у тебя всегда сначала if(s_min>z[x]) т.е. сравнивается z[1]>z[1] а это абракадабра и потом x=x+1; ? зачем переходить к следующему элементу массива z если дальше там у тебя программа заканчивается.Что-то ты не докрутил
alekopoko вне форума
Старый 03.02.2014, 00:33   #8
Kirillgr
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 25
По умолчанию

да, вывести один элемент
Kirillgr вне форума
Старый 03.02.2014, 00:44   #9
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

матрица 3 на 3
ну смотри вот ввожу:
1 2 3
-1 -4 2
3 -5 -6
при таком раскладе выведется же не один элемента а два?
т.е.вывод будет -4 и -6. так тебе надо по задаче?
alekopoko вне форума
Старый 03.02.2014, 00:56   #10
Kirillgr
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 25
По умолчанию

Вы знаете, я прочитал как следует, скорее всего да, должен вывести минимальный из каждой строки. То есть в данном случае 2.
Kirillgr вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти минимальный элемент среди всех элементов тех строк заданной матрицы, которые упорядочены по убыванию. KObotan Общие вопросы C/C++ 4 16.09.2012 14:54
Матрица. Найти минимальный среди положительных, находящихся над главной диагональю, и поменять его с максимальным среди отрицатель Mayers Паскаль, Turbo Pascal, PascalABC.NET 0 15.05.2012 22:25
массиве X(N) найти максимальный элемент среди положительных элементов массива и минимальный среди отрицательных элементов. sorok Общие вопросы C/C++ 2 20.03.2012 12:18
массив R(N,M) - найти сумму кубов отрицательных элементов, минимальный элемент столбца № (Бейсик) Люстик Помощь студентам 0 16.03.2011 17:29