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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2014, 16:43   #1
kotenkov_m
Пользователь
 
Регистрация: 12.06.2014
Сообщений: 11
По умолчанию решить задачу по СИ:Дан масив A(m). Найти вeличину и нoмep егo Maксимальнoгo отрицательного элемента

Дан масив A(m) m=<20 . Bывeсти нa пeчaть исхoдный мaсcив, a тaк жe вeличину и нoмep егo Maксимальнoгo отрицательного элемента.
kotenkov_m вне форума Ответить с цитированием
Старый 13.06.2014, 19:11   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

В чем у вас затруднение, задание вроде несложное..
Вот сделал на скорую руку.
Код:
#include <stdio.h>
#include <stdlib.h>

#define N 20

int main() {
	int arr[N] = {2, 5, -9, -6, 3, 11, -8, -3, 7, 1, 6, 9, 8, 7, -1, 12, -12, -4, 4, 22};
	int i;
	int max, imax;
	int flag = 0;
	
	/* Вывод массива */
	printf("\n Array: \n ------\n");
	for(i = 0; i < N; i++) {
		printf(" [%d]", arr[i]);
	}
	printf("\n");

	/* Максимальный отрицательный элемент */
	for(i = 0; i < N; i++) {
		if(arr[i] < 0 && flag == 0) {
			max = arr[i];
			imax = i;
			flag = 1;
		}
		if(arr[i] < 0 && arr[i] < max && flag == 1) {
			max = arr[i];
			imax = i;
		}
	}

	printf("\n Max = %d; IndexMax = %d\n", max, imax);
	return 0;
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 13.06.2014 в 21:35.
Bugrimov вне форума Ответить с цитированием
Старый 13.06.2014, 19:42   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

А зачем нам flag?
И да.. Думается мне, что из числе -100 и -2 максимально отрицательным будет число -100

Про флаг дошло..
Обычно крутится 2 цикла : 1-ый находит первый отрицательный, 2-ой находит отрицательный больше данного.. У Вас же всё в одном..

Последний раз редактировалось Poma][a; 13.06.2014 в 19:45.
Poma][a вне форума Ответить с цитированием
Старый 13.06.2014, 20:33   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Если э-т с индексом 0 = -100 то решение будет неправильным, т.к. итерирование с элемента с индексом 1, а не с элемента с индексом 0. Флаг для проверки, инициализирована ли переменная max или нет.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 13.06.2014, 21:31   #5
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
И да.. Думается мне, что из числе -100 и -2 максимально отрицательным будет число -100
Вероятно вы правы... Тогда будет достаточно поменять < и ...

challengerr, от вас ничего не скрыть... Сейчас поправлю... Проверяйте!
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 13.06.2014 в 21:34.
Bugrimov вне форума Ответить с цитированием
Старый 13.06.2014, 22:29   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Тогда будет достаточно поменять < и .
Неа.. Тогда всё будет намного проще.. находим наименьший (без плясок с flag'ом).. и выводим его (правда, можно будет проверить на принадлежность к отриц.)
Poma][a вне форума Ответить с цитированием
Старый 14.06.2014, 14:47   #7
kotenkov_m
Пользователь
 
Регистрация: 12.06.2014
Сообщений: 11
По умолчанию

Спасибо, вроде разобрался
kotenkov_m вне форума Ответить с цитированием
Старый 14.06.2014, 16:04   #8
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Цитата:
Сообщение от kotenkov_m Посмотреть сообщение
Спасибо, вроде разобрался
Ну отлично...
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 14.06.2014, 19:03   #9
kotenkov_m
Пользователь
 
Регистрация: 12.06.2014
Сообщений: 11
По умолчанию

Код:
#include <stdio.h> 
#include <limits.h>
int main() {
	int arr[] = { 2, 5, -9, -6, 3, 11, -8, -3, 7, 1, 6, 9, 8, 7, -1, 12, -12, -4, 4, 22 };
	int size = sizeof(arr) / sizeof(arr[0]);
	int i, value = INT_MIN, index = -1;
	for (i = 0; i < size; ++i) printf("%3i", arr[i]);
	for (i = 0; i < size; ++i) if (arr[i] < 0 && value < arr[i]) { value = arr[i]; index = i; }
	printf("\n Value: %i\n Index: %i\n", value, index);
	getchar();
}/*
Вот упрощенный вариант
kotenkov_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив чисел W=(w1,w2,...,wm). Найти номер последнего по порядку отрицательного элемента массива (Паскаль или Бэйсик) Nade Помощь студентам 0 07.02.2013 18:54
Найти сумму элементов массива стоящих от первого отрицательного элемента до второго Xsader Общие вопросы C/C++ 1 17.01.2013 14:12
найти номер первого отрицательного элемента массива Al'f!ra Паскаль, Turbo Pascal, PascalABC.NET 1 22.05.2012 22:06
Найти сумму модулей элемента массива, расположенных после первого отрицательного ? МоЗгАвеД Общие вопросы C/C++ 0 12.12.2011 17:36
Дан массив,найти номер последнего отрицательного элемента Ирочка Помощь студентам 2 31.03.2009 09:54