С/С++. Пожалуйста помогите решить!

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, dr.Jekill, MOTOCoder, Medved

Ответить
Lakomka
Сообщения: 14
Зарегистрирован: 06 окт 2005, 11:05

06 окт 2005, 11:17

Задали 50 задач, что -то получается, а что-то совсем не выходит.. помогите пожалуйста!!!

Задача 1
Дано натуральное число m. Сформировать массив x(m), элементами которого являются случайные числа, равномерно распределённые на интервале (5.2, 10.5). Найти длину k самой длинной "пилообразной" (зубьями вниз) последовательности подряд идущих чисел
x[i+1]>x[i+2] <x[i+3] >...<x[i+k] .

Задача 2
Найти все натуральные числа, не превосходящие заданного n, десятичная запись которых есть строго возрастающая последовательность цифр.

Задача 3
Дано натуральное число N>10 . Вычислить сумму всех чисел Фибоначчи, которые не превышают N.
Числа Фибоначчи образуются по закону
f[1]=1, f[2]=1, f[k+1]=f[k-1]+f[k]

Задача 4
Дано натуральное число N. Вычислить произведение первых N сомножителей 1/1*8/9*15/17*22/25*...
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

06 окт 2005, 16:23

Раз
, что -то получается
тогда держи подсказки-
четвертая решается через цикл (for) числитель - арифметическая прогрессия с шагом 7 - знаменатель тоже но 8

третья - цикл плюс посмотри алгоритм построения чисел Фибоначи (есть на этом форуме в разделе решите мне задачку)

Вторая - посмотри на функции atoi itoa sprintf - переколбасят число в строку и циклам по цифрам пройдешься

первая - зависит от версии используемой среды. в VC++6.0 используется srand(1) и rand, а формула будет что-то вроде Numb=5.2+
5.5* rand()
В SAD - все в SAD.
Аватара пользователя
AiK
Сообщения: 2271
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

06 окт 2005, 17:05

Переехали.
Даже самый дурацкий замысел можно воплотить мастерски
Lakomka
Сообщения: 14
Зарегистрирован: 06 окт 2005, 11:05

07 окт 2005, 10:10

Вот что получается по 4, но в ответе всегда 0 выводится :(

Код: Выделить всё

#include <iostream>
using namespace std;
#include <stdio.h>
#include <windows.h>

void main()
{
  char str[128];
  int n;

 CharToOem("Введи значение n  ",str);cout<<str;cin>>n;

double rez=1; 
for(int i=0;i<n;i++) 
{ 
rez*=(i*6+1)/(i*6+2); 
} 
cout << " rez= " << rez << endl;
}
treider
Сообщения: 57
Зарегистрирован: 01 сен 2005, 13:29
Откуда: Алматы
Контактная информация:

07 окт 2005, 15:04

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

Код: Выделить всё

rez*=(i*6+1)/(i*6+2);
на

Код: Выделить всё

rez*=double((i*6+1))/double((i*6+2)); 
Lakomka
Сообщения: 14
Зарегистрирован: 06 окт 2005, 11:05

07 окт 2005, 15:22

rez*=double((i*7+1))/double((i*8+2));

вот так наверное правильней будет? у меня же 1/1*8/9*15/17*22/25*...
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

07 окт 2005, 15:51

неправильно - посмотри на знаменатель - у тебя 1 а потом 9 в условии а по твоей формуле получается 2 потом 10
В SAD - все в SAD.
Lakomka
Сообщения: 14
Зарегистрирован: 06 окт 2005, 11:05

07 окт 2005, 15:54

rez*=double((i*7+1))/double((i*8+1));
так :roll: точно так, все эта задачка получилась!!!! пасибки за подсказки :wink:

а вот с третьей задачкой совсем ничего не понятно :cry:
Ответить