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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.02.2010, 19:26   #1
Тлеу
Новичок
Джуниор
 
Регистрация: 06.02.2010
Сообщений: 2
По умолчанию Фибоначчи...=(((

14. В заданном целочисленном массиве распечатать те элементы, порядковые номера которых – числа Фибоначчи, а также определить количество перемен знаков
Тлеу вне форума
Старый 07.02.2010, 19:29   #2
Тлеу
Новичок
Джуниор
 
Регистрация: 06.02.2010
Сообщений: 2
По умолчанию

Помогоите пожалуйста,кто знает!!!
Тлеу вне форума
Старый 07.02.2010, 19:43   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

условие некорректное. число не может быть или не быть фибоначчевым, оно может принадлежать последовательности.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума
Старый 07.02.2010, 20:53   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Можно, например, так:
Код:
#include <iostream>
#include <ctime>

using namespace std;

int fib(int n)
{
	int fib_1 = 1, fib_2 = 0;
	
	for(int i = 0; i < n; i++) {
		int t = fib_1;
		fib_1 += fib_2;
		fib_2 = t;
	} 
	
	return fib_2;
}

int main()
{
	int arr[10];
	int sign_changes = 0;
	
	srand(time(NULL));
	
	for(int i = 0; i < 10; i++) {  // Заполнение массива
		arr[i] = rand() % 40 - 20;
		cout << arr[i] << ' ';
	}
	cout << endl;
	
	for(int i = 0; i < 10; i++) { // Вывод элементов, порядковые номера которых числа Фибоначчи
		int k = fib(i+1)-1;
		if(k >= 10)
			break;
		cout << arr[k] << ' ';
	}
	cout << endl;
	
	for(int i = 0, sign = 1; i < 10; i++) { // Подсчёт кол-ства смен знаков
		if(arr[i] * sign < 0) {
			sign_changes++;
			sign = -sign;
		}
	}
	cout << "sign changes " << sign_changes << " times" << endl;
	
	cin.get();
	return 0;
}
у меня в коде предполагается, что первый элемент массива положительный, потому, если первый элемент будет отрицательным, то выведет на одну перемену знака больше. если так не устраивает - допишите цикл, где ищется первый ненулевой элемент и присваивайте переменной sign его значение. Нулевые элементы не считаются "меняющими знак", так как ноль ни положительное ни отрицательное.. в общем, если нужно исправить - исправите, идея уже должна быть понятна
netrino вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Switch с Фибоначчи Клайд Общие вопросы C/C++ 0 20.10.2009 20:16
Фибоначчи:си tanek Помощь студентам 6 18.03.2009 21:59
Числа Фибоначчи Witaliy Помощь студентам 1 26.02.2009 12:18
Задача (Фибоначчи) Witaliy Помощь студентам 3 25.02.2009 17:40
Фибоначчи Walter Помощь студентам 17 13.12.2008 22:34