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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2011, 18:04   #11
ramainen
Новичок
Джуниор
 
Регистрация: 04.05.2011
Сообщений: 8
По умолчанию

Я сделал, вроде как.
Проверти пожалуйста. На win машинах может не компилироваться. Код писал на тачке с GNU/Linux.

Код:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

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

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

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 i;
		}
		else {
			return -1;
		}
	}
}

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

	return 0;
}

Спасибо всем за ответы!
ramainen вне форума Ответить с цитированием
Старый 05.05.2011, 18:37   #12
Trust_357
Пользователь
 
Регистрация: 10.03.2011
Сообщений: 68
По умолчанию

Код:
#include <iostream>
#include<time.h>
using namespace std;
void Init(int *mas,int n)
{
	for(int i=0;i<n;i++)
		mas[i]=rand()%n;
}
void Show(int *mas,int n)
{
	for(int i=0;i<n;i++)
		cout<<mas[i]<<" ";
	cout<<"\n\n";
}
void Para(int *mas,int n)
{
	bool x=0;
	for(int i=0;i<n-1;i++)
	{
		if((mas[i]%2==1)&&(mas[i+1]%2==1))
		{
			cout<<"\t\tВ массиве есть пара нечётных чисел в ячейке "<<i+1<<" и "<<i+2<<"\n\n";
			x=1;
		}
	}
	if(x==0)
		cout<<"\t\tВ массиве отсутствует пара нечётных чисел\n\n";
}
void main()
{
	setlocale(LC_CTYPE,"Rus");
	srand((unsigned)time(NULL));
	cout<<"\t\tВведите колличество элементов массива\n\n";
	int n=0;
	cin>>n;
	int *mas=new int[n];
	Init(mas,n);
	Show(mas,n);
	Para(mas,n);
	delete[]mas;
}
Trust_357 вне форума Ответить с цитированием
Старый 05.05.2011, 20:07   #13
ramainen
Новичок
Джуниор
 
Регистрация: 04.05.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Trust_357 Посмотреть сообщение
Код:
#include <iostream>
#include<time.h>
using namespace std;
void Init(int *mas,int n)
{
	for(int i=0;i<n;i++)
		mas[i]=rand()%n;
}
void Show(int *mas,int n)
{
	for(int i=0;i<n;i++)
		cout<<mas[i]<<" ";
	cout<<"\n\n";
}
void Para(int *mas,int n)
{
	bool x=0;
	for(int i=0;i<n-1;i++)
	{
		if((mas[i]%2==1)&&(mas[i+1]%2==1))
		{
			cout<<"\t\tВ массиве есть пара нечётных чисел в ячейке "<<i+1<<" и "<<i+2<<"\n\n";
			x=1;
		}
	}
	if(x==0)
		cout<<"\t\tВ массиве отсутствует пара нечётных чисел\n\n";
}
void main()
{
	setlocale(LC_CTYPE,"Rus");
	srand((unsigned)time(NULL));
	cout<<"\t\tВведите колличество элементов массива\n\n";
	int n=0;
	cin>>n;
	int *mas=new int[n];
	Init(mas,n);
	Show(mas,n);
	Para(mas,n);
	delete[]mas;
}
Спасибо за код, тоже самое, что и у меня, только на Плюсах. Я программирую исключительно на Си.

Последний раз редактировалось ramainen; 05.05.2011 в 20:10.
ramainen вне форума Ответить с цитированием
Старый 05.05.2011, 20:50   #14
ftk
Новичок
Джуниор
 
Регистрация: 05.05.2011
Сообщений: 2
По умолчанию

вот вроде бы верный вариант
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


void randIntArray(int * a, int n) // Забивает массив случайными числами
{
	int i;
	for (i=0; i<n; i++) {
		a[i] = rand() % 500; // вернет от 0 до 499
		printf("%d\n", a[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 i;
		}
		else {
			//return -1; - выйдет когда i = 0
		}
	}
	return -1;
}

int main(void)
{
	int n = 100;
	int * a = malloc(n * sizeof(int)); // calloc обнуляет память прежде чем вернуть, нам это ненужно

	srand(time(0)); // волшебная формула изза которой rand() теперь возвращает случайные значения
	randIntArray(a, n);
	printf("%d\n", oddNumbers(n, a));
	free(a); // освобождаем память

	return 0;
}
ftk вне форума Ответить с цитированием
Старый 06.05.2011, 17:15   #15
БалаШагаЛ
Форумчанин
 
Регистрация: 11.02.2011
Сообщений: 131
По умолчанию

Я полный новичок, но возмусь сказать. А чем вас rand не устраивает? У меня всё работает:
Цитата:
#include <iostream>
#include <stdlib.h>
#include <time.h>

int main()
{
srand(time(NULL)*311);
int n=100;
int a[n];
for (int i=0;i<n;i++)
{
a[i]=rand();
}
for (int i=0;i<(n-1);i++)
{
if ((a[i]%2!=0)&&(a[i+1]%2!=0))
{
std::cout << a[i] << "\n" << a[i+1];
return 0;
}
if (i+1==n)
{
std::cout << "Takoi pari net.";
}
}
}
БалаШагаЛ вне форума Ответить с цитированием
Ответ


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