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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2009, 18:05   #1
Иван 883
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 39
Печаль Числа Фибанначи

Здравствуйте, господа программисты. Помогите решить вот такую простую задачу:Найти два числа Фибоначчи, удовлетворяющие условию при заданном m: ф(i)<m<ф(i+1), вывести эти числа и их порядковые номера. Вот мои соображения:
Код:
#include<iostream.h>
#include<math.h>

int main()
{       int Mas[200];
        int m,i,a,b; int *pa,*pb;
        cout <<"\nВведите число ";
        cin >>m;
        Mas[1]=1;
        Mas[2]=1;
        for (i=2; i<m; i++)
        Mas[i+1]=Mas[i]+Mas[i-1];
        Mas[i]=a; Mas[i-1]=b;
        pa=&a; pb=&b;
        if (m>a) && (m<b)
        cout << a && cout <<b && cout<<pa && cout pb;
        return 0;
}
Помогите пожалуйста исправить программу
Иван 883 вне форума Ответить с цитированием
Старый 18.03.2009, 18:25   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

индексация массивов начинается с 0, поэтому

Код:
Mas[0]=1;
          Mas[1]=1;
          for(int i=2;i<m;i++)
          {
             Mas[i]=Mas[i-1]+Mas[i-2];
             cout<<Mas[i]<<" - ind = "<<i<<"\n";
          }
как то так вроде, не проверял
counter вне форума Ответить с цитированием
Старый 18.03.2009, 18:29   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Нет смысла идти в цикле до m.
А зачем указатели вообще не понял.
Код:
#include <iostream>
#include <conio.h>

using namespace std;

int main(){
int Mas[200],i,m;

cout<<"Enter m: ";
cin>>m;

Mas[0] = 0;
Mas[1] = 1;

for(i=2;Mas[i-1]<m;i++)
  Mas[i]=Mas[i-1]+Mas[i-2];
if(Mas[i-1]<=m) cout<<"Net takih chisel\n";
else cout<<Mas[i-2]<<" < m < "<<Mas[i-1]<<endl;

getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.03.2009, 18:30   #4
Pashan
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 89
По умолчанию

В программе полный хаос. Если даже опустить некоторые мелочи, то есть куча серьезных вопросов:

1. Вроде бы массив Mas предназначен для хранения чисел Фиббоначи, чтобы потом в них искать. Но вот почему цикл for (i=2; i<m; i++) идет до m? А не до 200?
Кстати, для решения этой задачи массив вообще не нужен, нужны только пара-тройка переменных для соседних чисел Фибоначчи. А ограничение на размер массива может привести к выходу за его пределы и запрещенному доступу к памяти, если m будет очень большим.

2. После цикла вообще труба. Используются какие-то непонятные переменные a и b и их адреса, притом что обе эти переменные не инициализированы, а зачем нужны адреса совсем не понятно. Я, конечно, догадываюсь, чем это все должно быть. Но то, что написано - бред полнейший.

Ты можешь написать пояснения к твоему коду? Что в каждой строчке ты хотел сделать, и каким путем?
Pashan вне форума Ответить с цитированием
Старый 18.03.2009, 18:50   #5
Иван 883
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 39
По умолчанию

Спасибо вам Sazary Но программа не выводит их порядковые номера. Не могли бы Вы помочь. А Pashan дело в том что меня обучают Паскалю. При этом довалили еще и С++. Если в Паскале основы я знаю, то в С я полный 0, поэтому и обратился за помощью.
Иван 883 вне форума Ответить с цитированием
Старый 18.03.2009, 18:58   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Но программа не выводит их порядковые номера
Уж это могли б и сами добавить.
Код:
else cout<<Mas[i-2]<<" ("<<i-2<<"-e)"<<" < m < "<<Mas[i-1]<<" ("<<i-1<<"-e)"<<endl;
Думаю, поймете, что этим заменить.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.03.2009, 19:09   #7
Иван 883
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 39
По умолчанию

Спасибо Вам еще раз Sazary . Отзыв Вам оставил
Иван 883 вне форума Ответить с цитированием
Старый 18.03.2009, 19:11   #8
Pashan
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 89
По умолчанию

Цитата:
дело в том что меня обучают Паскалю
Ну я тоже на Паскале начинал. На таком уровне разница в нем и c++ почти незаметна.

По поводу самой прогу лучше сделать как-то так:

Код:
int main()
{
  int m;
  cout << "Enter m: ";
  cin >> m;

  if (m > 0)
  {
    int first_number = 1;
    int second_number = 1;
    int counter = 1;

    while (second_number <= m)
    {
      int next_number = first_number + second_number;
      first_number = second_number;
      second_number = next_number;
      counter++;
    }
    if (m > first_number && m < second_number)
      cout << "F[" << counter << "] = " << first_number << " < M < F[" << (counter + 1) << "] = " << second_number << endl;
    else
      cout << "Numbers not found!" << endl;
  }
  else
    cout << "Invalid m value!" << endl;

  getch();
  return 0;
}

Последний раз редактировалось Pashan; 18.03.2009 в 19:14.
Pashan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны натуральные числа n,p, целые числа a1 , ... ,an. Наталья111 Фриланс 10 09.11.2010 20:09
Числа Фибоначчи Witaliy Помощь студентам 1 26.02.2009 12:18
Даны натуральные числа m,n. Посчитать сумму m последнего числа n. лялька Паскаль, Turbo Pascal, PascalABC.NET 6 25.12.2008 15:22
вывод числа sergei64_89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 25.05.2008 21:35
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49