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

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

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

Восстановить пароль

Купить рекламу на форуме - 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