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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2011, 23:00   #1
ramainen
Новичок
Джуниор
 
Регистрация: 04.05.2011
Сообщений: 8
Печаль Маленькая задачька

Доброго времени суток, помогите пожалуйста новичку

Задача: Дан массив целых чисел. Определить есть ли в нём пара нечётных чисел. В случае положительного ответа определить номера элементов первых из таких пар.

Проблема, массив не забивается случайными числами.

Код:
#include <stdio.h>
#include <stdlib.h>

int oddNumbers(int n, int *a);
int *randIntArray(int n);

int *randIntArray(int n) // Забивает массив случайными числами
{
	int *a = calloc(n, sizeof(int));
	int i;
	for (i=0; i<n; i++) {
		a[i] = rand() / RAND_MAX;
		printf("%i\n", a[i]); //Отладочный printf. Массив не забивается случайными числами 
	}
	return i;	
}

int oddNumbers(int n, int *a) // Ищет пару нечётных чисел
{
	int i;
	for (i=0; i<n; i++) {
		if ((a[i] % 2 != 0) && (a[i+1] % 2 != 0)){
			return a[i];
		}
	}
}

int main()
{
	int n = 100;
	int *a = calloc(n, sizeof(int));
	a = randIntArray(n);
	printf("%i\n", oddNumbers(n, a));

	return 0;
}

Последний раз редактировалось ramainen; 04.05.2011 в 23:03.
ramainen вне форума Ответить с цитированием
Старый 04.05.2011, 23:48   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Для получения чисел с заданным диапазоном лучше рользоваться функцией random(num), где num основание диапазона. Числа формируются в пределах от 0 до num-1.
Перед его применением надо в начале программы вызвать функцию randomize().
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 05.05.2011, 00:04   #3
ramainen
Новичок
Джуниор
 
Регистрация: 04.05.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Для получения чисел с заданным диапазоном лучше рользоваться функцией random(num), где num основание диапазона. Числа формируются в пределах от 0 до num-1.
Перед его применением надо в начале программы вызвать функцию randomize().
Большое спасибо за ответ.

При передаче random(), (rand()) какой-либо аргумент компилятор ругается и пишет ошибку о том, что много аргументов переданно. Получается эта функция ничего не должна принимать, Void, если только.

Покажите примерно как должна выглядеть функция randomize()

PS. Скажите пожалуйста. Я с задачей справился или много ошибок?

Последний раз редактировалось ramainen; 05.05.2011 в 00:08.
ramainen вне форума Ответить с цитированием
Старый 05.05.2011, 06:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я с задачей справился или много ошибок?
Скомпилируй, запусти - резуьтат верный? Справился, иначе нет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2011, 07:52   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Функция randomize() работает без аргументов.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 05.05.2011, 09:45   #6
ramainen
Новичок
Джуниор
 
Регистрация: 04.05.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Функция randomize() работает без аргументов.
В какой библиотеке лежит функция randomize() или мне самому писать?
ramainen вне форума Ответить с цитированием
Старый 05.05.2011, 09:45   #7
ramainen
Новичок
Джуниор
 
Регистрация: 04.05.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Скомпилируй, запусти - резуьтат верный? Справился, иначе нет.
Спасибо большое!
ramainen вне форума Ответить с цитированием
Старый 05.05.2011, 10:03   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от ramainen Посмотреть сообщение
В какой библиотеке лежит функция randomize() или мне самому писать?
В библиотеке stdlib.h. Там же и random().
У Вас эта библиотека уже подключена. Я был уверен, вопросов не возникнет.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 05.05.2011, 11:21   #9
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Для получения чисел с заданным диапазоном лучше рользоваться функцией random(num), где num основание диапазона. Числа формируются в пределах от 0 до num-1.
Перед его применением надо в начале программы вызвать функцию randomize().
Не лучше. Это не стандартные функции и они не должны поддерживаться большинством компиляторов
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 05.05.2011, 17:02   #10
ramainen
Новичок
Джуниор
 
Регистрация: 04.05.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
В библиотеке stdlib.h. Там же и random().
У Вас эта библиотека уже подключена. Я был уверен, вопросов не возникнет.
Такой функции нет, компилятор выдаёт ошибку, там есть только random(), rand() и больше ничего. Поэтому я и спрашиваю! Использую CodeBlocks v.10.05. Так почему не забивается случайными числами?. rand() же сама себе должна числа случайные выдумовать до 65.000, т.е. до RAND_MAX. А RAND_MAX в данном случае int.

Я понял почему у меня массив забивается нулями. Потому что rand() всегда будет меньше RAND_MAX, а если их делить целочисленно как я, то это всегда ноль.

Извините, если ошибаюсь!

Последний раз редактировалось ramainen; 05.05.2011 в 17:24.
ramainen вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Маленькая неприятность TAoD Компьютерное железо 5 05.07.2010 20:56
Задачька по перебору. Iceman Помощь студентам 0 13.01.2010 12:01
маленькая программа lg12 Помощь студентам 3 20.07.2009 13:25
Маленькая недоработка... Карась О форуме и сайтах клуба 2 09.12.2007 18:34