PDA

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



Lakomka
06.10.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
06.10.2005, 16:23
Раз
, что -то получается тогда держи подсказки-
четвертая решается через цикл (for) числитель - арифметическая прогрессия с шагом 7 - знаменатель тоже но 8

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

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

первая - зависит от версии используемой среды. в VC++6.0 используется srand(1) и rand, а формула будет что-то вроде Numb=5.2+
5.5* rand()

AiK
06.10.2005, 17:05
Переехали.

Lakomka
07.10.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
07.10.2005, 15:04
Все правильно!!
только исправь

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

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

Lakomka
07.10.2005, 15:22
rez*=double((i*7+1))/double((i*8+2));

вот так наверное правильней будет? у меня же 1/1*8/9*15/17*22/25*...

Kolinus
07.10.2005, 15:51
неправильно - посмотри на знаменатель - у тебя 1 а потом 9 в условии а по твоей формуле получается 2 потом 10

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

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