Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Удалить из массива все числа Фибоначчи(С++).

30K
07 мая 2008 года
Nikes
18 / / 07.05.2008
Я еще толком не выучил массивы, вот и немогу решить задание. Помогите плиз.Массив любой, даже самый простой.
Задание: Удалить из массива все числа Фибоначи.

[COLOR="Red"]Внимательно читаем Правила раздела Студентам и Дополнения(особенно пункт 10) - для каждой задачи создается отдельная тема.Вот и создай для 2 и 3 задачи отдельные темы.И давай темам впредь более осмысленные названия.[/COLOR]модератор.
320
07 мая 2008 года
m_Valery
1.0K / / 08.01.2007
Цитата: Nikes
Я еще толком не выучил массивы, вот и немогу решить задание. Помогите плиз.Массив любой, даже самый простой.
Задание: Удалить из массива все числа Фибоначи.


Пара вопросов по теме:

  1. А числа Фибоначчи программа тоже должна находить или их считаем известными ? {0,1,1,2,3,5,8,13,21,34,55,89...}
  2. Массивы не выучил,а указатели знаешь ?
  3. Что значит "самый простой" массив ? Динамический ?
320
07 мая 2008 года
m_Valery
1.0K / / 08.01.2007
Код:
#include <iostream>
#include <ctime>
using namespace std;
int *DeleteElem(int *,size_t&,int pos);//функция удаления элемента из массива
int _tmain(int argc, _TCHAR* argv[])
{
    srand((unsigned)time(0));
    cout << "Input Fibonacci Array Size > 10" << endl;
    size_t sizeFib;//размер массива для чисел Фибоначчи
    while(!(cin >> sizeFib) || (sizeFib <= 10)){
        cerr<<"Error while reading the integer  10 <= sizeFib "<<endl;
        return EXIT_FAILURE;
    }
    int *fibonacci = new int[sizeFib];
    fibonacci[0] = 0;
    fibonacci[1] = 1;
    fibonacci[2] = 2;
    // заполняем массив числами Фибоначчи начиная с 3
    for(size_t i = 3;i < sizeFib;++i)
        fibonacci = fibonacci[i - 1] + fibonacci[i - 2];
    cout << "Fibonacci Array: ";// печатаем числа Фибоначчи
    for(size_t i = 0;i < sizeFib;++i)
        cout << fibonacci << ' ';
    cout << "\n\n";
    cout << "Input Array Size > 10" << endl;
    size_t sizeArr,size_ = 0;// размер создаваемого массива
    while(!(cin >> sizeArr) || (sizeArr <= 10)){
        cerr<<"Error while reading the integer  10 <= sizeFib "<<endl;
        return EXIT_FAILURE;
    }
    size_ = sizeArr;
    int *Array = new int[sizeArr];
    // заполняем числами от 0 до 22(допустим)
    for(size_t i = 0;i < sizeArr;++i)
        Array = rand() % 22;
    cout << "Array: ";
    for(size_t i = 0;i < sizeArr;++i)
        cout << Array << ' ';
    cout <<"\n\n";
    // удаляем все числа Фибоначчи из массива
    for(size_t i = 0;i < sizeFib;++i)
        Array = DeleteElem(Array,sizeArr,fibonacci);       
    cout << "Array: ";
    for(size_t i = 0;i < sizeArr;++i)
        cout << Array << ' ';
    cout <<"\n" << size_ - sizeArr <<" elements was removed from this array\n";
    delete[] fibonacci;
    delete[] Array;
    return 0;
}
int *DeleteElem(int *mass,size_t &size,int pos)
{
    size_t size1 = size;
    bool res = false;
    // сколько в массиве удаляемых элементов
    int count = 0;
    for(size_t i = 0;i < size1;++i)
        if(mass == pos){
            res = true;
            ++count;
        }
     if(res){
       size_t j = 0;
       size -= count;// новый размер
       int *t = new int[size];  // вспомагательный массив
       for(size_t i = 0; i < size1; ++i)
           if(mass != pos){
               t[j] = mass;
               ++j;
           }
      delete[] mass;
      return t;// возвращаем новый массив
    }
    return mass;// вoзвращаем старый массив
}
320
07 мая 2008 года
m_Valery
1.0K / / 08.01.2007
Тоже самое с использованием vector,обощенного алгоритма remove и ф-ии erase.
Код:
#include <iostream>
#include <vector>
#include <ctime>
#include <algorithm>
using namespace std;
unsigned long fibonacci(unsigned long);
int _tmain(int argc, _TCHAR* argv[])
{
    srand((unsigned)time(0));
    cout << "Input Fibonacci Array Size > 10" << endl;
    size_t sizeFib;
    while(!(cin >> sizeFib) || (sizeFib <= 10)){
        cerr<<"Error while reading the integer  10 <= sizeFib "<<endl;
        return EXIT_FAILURE;
    }
    int *fibonacci = new int[sizeFib];
    fibonacci[0] = 0;
    fibonacci[1] = 1;
    fibonacci[2] = 2;
    for(size_t i = 3;i < sizeFib;++i)
        fibonacci = fibonacci[i - 1] + fibonacci[i - 2];
    cout << "Fibonacci Array: ";
    for(size_t i = 0;i < sizeFib;++i)
        cout << fibonacci << ' ';
    cout << "\n\n";
    size_t size;
    cout << "Input size >= 10" << endl;
    while(!(cin >> size) || (size <= 10)){
        cerr<<"Error while reading the integer  10 <= size "<<endl;
        return EXIT_FAILURE;
    }
    vector<int> coll;
    for(size_t i = 0;i < size;++i)
        coll.push_back( rand() % 22 );
    cout << "1-st Array:\n\n";
    copy(coll.begin(),coll.end(),
        ostream_iterator<int>(cout," "));
    cout << "\n\n";
    vector<int>::iterator pos;
    for(size_t i = 0;i < sizeFib;++i){
            pos = remove(coll.begin(),coll.end(),
            fibonacci);
            coll.erase(pos,coll.end());
    }
    cout << "Array after removing:\n\n";
    copy(coll.begin(),coll.end(),
        ostream_iterator<int>(cout," "));
    cout << "\n\n";
    cout << size - coll.size() << " elements was removed" << endl;
             delete[] fibonacci;
    return 0;
}
30K
07 мая 2008 года
Nikes
18 / / 07.05.2008
Да спасибо за помощ, но у меня не компелирует,выдает какуюту ошыбку ('_TCHAR' has not bben declared) в 5 строчке.
Коешо про прогу, нада сделать просто чтоб просто в масиве заданом например {1,1,2,3,5,8,13,14,34,55} ,если есть числа фибоначи то их удалить.Вобщем нетакую уж задумчывою програмку)
320
09 мая 2008 года
m_Valery
1.0K / / 08.01.2007
Вместо int _tmain(int argc, _TCHAR* argv[]) напиши int main()
30K
28 мая 2008 года
Nikes
18 / / 07.05.2008
Код:
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
int main()
{
   
    int a[100];
    int q[100];
    int b,i,j,n,m,max,f1,f2,f;
    cin>>n;
    srand((unsigned)time(0));
    for (i=0;i<n;i++) {
        a=rand()%10;
        cout<<a<<" "; }
                 
     
      max=a[0];
    for (i=1;i<n;i++)
        if (max<a) max=a;
       
       
        f1=0;f2=1;
    for (i=0;f<=max;i++) {  
       f1=f2;
       f2=f;
       f=f1+f2;
       q=f; }
   
        max=i;
       
        cout<<'\n';
    for (j=0;j<i;j++)
      cout<<q[j]<<" ";
   
   
    for (i=0;i<max;i++)
       for (j=0;j<n;j++)
          if (q==a[j]) {
               for (f=j;f<(n-1);f++)
                   a[f]=a[f+1];              
               n=n-1;
               j--; }
           
    cout<<'\n';                        
    for (i=0;i<n;i++)
      cout<<a<<" ";
   
    getch();
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог