#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звращаем старый массив
}
Удалить из массива все числа Фибоначчи(С++).
Задание: Удалить из массива все числа Фибоначи.
[COLOR="Red"]Внимательно читаем Правила раздела Студентам и Дополнения(особенно пункт 10) - для каждой задачи создается отдельная тема.Вот и создай для 2 и 3 задачи отдельные темы.И давай темам впредь более осмысленные названия.[/COLOR]модератор.
Цитата: Nikes
Я еще толком не выучил массивы, вот и немогу решить задание. Помогите плиз.Массив любой, даже самый простой.
Задание: Удалить из массива все числа Фибоначи.
Задание: Удалить из массива все числа Фибоначи.
Пара вопросов по теме:
- А числа Фибоначчи программа тоже должна находить или их считаем известными ? {0,1,1,2,3,5,8,13,21,34,55,89...}
- Массивы не выучил,а указатели знаешь ?
- Что значит "самый простой" массив ? Динамический ?
Код:
#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;
}
#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;
}
Коешо про прогу, нада сделать просто чтоб просто в масиве заданом например {1,1,2,3,5,8,13,14,34,55} ,если есть числа фибоначи то их удалить.Вобщем нетакую уж задумчывою програмку)
Вместо int _tmain(int argc, _TCHAR* argv[]) напиши int main()
Код:
#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();
}
#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();
}