Форум программистов, компьютерный форум CyberForum.ru

Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
LaSkReN
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 33
21.02.2013, 10:40     Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива #1
3. Дан массив из n элементов. Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива. Выведите на экран исходный и измененный массивы.

Помогите кто сможет код на С++ составить меню для представления этих задач я уже сделал.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2013, 10:40     Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива
Посмотрите здесь:

C++ Сжать массив, выбросив из него каждый второй элемент
Сжать массив, выбросив из него каждый второй элемент.... C++
C++ Сжать массив, выбросив из него каждый второй элемент
C++ «Сожмите» массив, выбросив из него каждый второй элемент
Даны два массива одного размера. Получить третий массив, каждый элемент которого... C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
olya7
476 / 293 / 91
Регистрация: 18.02.2013
Сообщений: 684
21.02.2013, 20:59     Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива #2
ошибочка вышла, не дочитала до конца задание
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
int main() {
    int *a,i,k=0,p=1,c=0,b,n,min;
cout << "Vvedite kolichestvo"<< endl;
cin>>n;
a=new int [n];
 
cout << "Vvedite elementi"<< endl;
for (i=0;i<n;i++)
cin>>a[i];
int m=2;
 do{
for (i=m;i<n-1;i++)
a[i]=a[i+1];
m+=2;
c++;
 } while (m<=n);
n-=c-1;
 
for (i=0;i<n;i++)
cout<<a[i]; 
 
delete []a;
return 0;
}
mamucho666
1 / 1 / 0
Регистрация: 06.06.2012
Сообщений: 13
21.02.2013, 21:07     Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива #3
Автор, очень прошу, поясните, что означает сжать массив? Я хоть и такой же новичок как и вы, но сомневаюсь, что во всей книге Липпмана C++ Primer могли не написать о такой возможности.

Или товарищи с форума, что поматёрей, объясните, пожалуйста.

Или под сжать массив подразумевалось банальное перемещение значений массива? Если так, то что-то вроде того. Не уверен, что нет каких-то недочётов, но идея правильная.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
int main() 
{
    const int size(10);
    int slip(0);
    int m[size];
    for (int i(0);i!=size;++i)
    {
        m[i]=i;
        std::cout << m[i] << ", ";
    }
    std::cout << std::endl;
    for (int i(0);i!=size;++i)
    {
        m[i-slip]=m[i];
        if((i+1)%3==0) ++slip;
    }
    for (int i(0);i!=size-slip;++i)
    {
        std::cout << m[i] << ", ";
    }
    std::cout << std::endl;
    system("pause");
    return 0;
}
LaSkReN
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 33
22.02.2013, 13:07  [ТС]     Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива #4
Спасибо =) Ну а сжать массив, обозначает просто сократить его при выводе второй раз на каждый третий элемент=)
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
22.02.2013, 13:53     Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
 
 
void prnt(int Arr[],int N,int el=-1)  //Функция выводит массив на экран
{
    if (el<0) std::cout<<"ПОЛНЫЙ МАССИВ\n";
    else std::cout<<"НЕПОЛНЫЙ МАССИВ\n";
    
    for (int i=0;i<N;i++)
    {
        if ((el>0)&&(!((i+1)%el))) continue;
        else std::cout<<Arr[i]<<"\t";
    }
    std::cout<<"\n\n";
}
 
int main()
{
    int N=15;
    int A[15];
 
    for (int i=0;i<15;i++) A[i]=i+1; //Для наглядности заполнил по порядку (1,2,3...14)
 
    ////////////
    prnt(A,N); //Так выводишь полный
    prnt(A,N,3); //Так выводишь с каждым выкинутым третьим элементом
    prnt(A,N);
    
    system("PAUSE");
    return 0;
    
}
Yandex
Объявления
22.02.2013, 13:53     Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива
Ответ Создать тему
Опции темы

Текущее время: 22:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru