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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gigder
3 / 3 / 0
Регистрация: 28.09.2012
Сообщений: 33
#1

Сжать массив, удалив из него элементы, имеющие одинаковые старшую и младшую цифры - C++

21.12.2013, 20:46. Просмотров 305. Ответов 4
Метки нет (Все метки)

Вот как я пытался сделать это

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
33
34
35
36
#include <iostream>
 
using namespace std;
 
int  main()
{
    int n,i,j,y,x;
    int massiv[n]; 
    cout << "Vvedite n: ";
    cin >> n;
    y=1;
    int massiv_shatiy[n];
    for (i=0; i<=n-1; i++)
     {
      cout << "Vvedite x: ";
      cin >> massiv[i];
      x=massiv[i];
      //nahodim starshyu stepen'
      while(x/y > 0) y=y*10;
      //nahodim ementi 121,343 i t.p.
      int t=0;
      for(j = 0; j<i+1; j++)
      {
        if(x%10 != x/(y/10))
        {
          massiv_shatiy[t]= x;   
         t++;        
        }
        
      }
   }   
 
 cout << "Shatiy massiv" << massiv_shatiy[n] << endl;
 
system("PAUSE");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2013, 20:46     Сжать массив, удалив из него элементы, имеющие одинаковые старшую и младшую цифры
Посмотрите здесь:

Сжать массив, удалив из него все нулевые элементы - C++
Программа должна сжать массив, удалив из него все нулевые элементы.но типичная проблема, она не заработала. на С++ впервые пишу, поэтому не...

Сжать массив, удалив из него все элементы модуль которых не превышает 1. Заполнить эти элементы нулями - C++
Во время перестановки, когда первый 0 достигает конца массива, выскакивает ошибка и прога останавливается. При этом на последнем элементе...

Сжать массив, удалив из него все элементы, модуль которых не превышает 1. - C++
В одномерном массиве, состоящем из 20 вещественных элементов, вычислить: 1) сумму элементов массива с нечетными номерами; 2) сумму...

Сжать массив, удалив из него все элементы, модуль которых не превышает 1 - C++
В одномерном массиве, состоящем из n действительных элементов, сжать массив, удалив из него все элементы, модуль которых не превышает 1...

Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не превышает 1 - C++
Помогите пожалуйста написать программу: Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не...

Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не превышает 1 - C++
Помогите пожалуйста написать программу. Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
21.12.2013, 21:05     Сжать массив, удалив из него элементы, имеющие одинаковые старшую и младшую цифры #2
gigder, а как это вообще компилируется?
Цитата Сообщение от gigder Посмотреть сообщение
int n,i,j,y,x;
* * int massiv[n];
здесь N не константа, по идее не должно работать вообще.

Зачем внутренний цикл j от 0 до i+1 я понять не могу, а алгоритм "сжатия" вроде верный. Единственное что нужно y = 1; поставить сразу после "{" цикла по i от 0 до n-1
gigder
3 / 3 / 0
Регистрация: 28.09.2012
Сообщений: 33
21.12.2013, 21:32  [ТС]     Сжать массив, удалив из него элементы, имеющие одинаковые старшую и младшую цифры #3
Цитата Сообщение от nexen Посмотреть сообщение
а как это вообще компилируется
Меня все спрашивают - как это компилируется?!)
Я не знаю как, но у меня компилируется(у меня Dev C++).
Переделал, все работает.
Вставлю код, может, кому понадобится)
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
33
34
35
36
#include <iostream>
 
using namespace std;
 
int  main()
{
    int n,y,x;
    int massiv[100]; 
    cout << "Vvedite n: ";
    cin >> n;
    int massiv_shatiy[100];
    int t=0;
    for (int i=0; i<=n-1; i++)
     {
      y=1;
      cout << "Vvedite x: ";
      cin >> massiv[i];
      x=massiv[i];
      //nahodim starshyu stepen'
      while(x/y > 0) y=y*10;
      //nahodim ementi 121,343 i t.p.
      for(int j = 0; j<n-1; j++)
      {
        if(x%10 != x/(y/10))
        {
          massiv_shatiy[t]= x;   
          t++;        
        }
        
      }
   }   
 for(int f = 1; f< t; f++)
 cout << "Massiv2: " << massiv_shatiy[f] << endl;
 
system("PAUSE");
}
Добавлено через 14 минут
Цитата Сообщение от gigder Посмотреть сообщение
for(int f = 1; f< t; f++)
*cout << "Massiv2: " << massiv_shatiy[f] << endl;
Не очень корректно работает вывод...
Например, n=5, massiv={123,125,1234,111,124}
Выводит:
massiv2:123 3 раза
massiv2:125 3 раза
massiv2:1234 4 раза
massiv2:124 3 раза
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
21.12.2013, 21:38     Сжать массив, удалив из него элементы, имеющие одинаковые старшую и младшую цифры #4
gigder,
Потому что, во-первых, индексация с 0, а не с 1 (при выводе).
Во-вторых, вы не убрали внутренний массив, как я вам сказал.
Вот отредактированная версия. Так же можно обойтись без первого массива, поэтому я его удалил.
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
#include <iostream>
 
using namespace std;
 
int  main()
{
    int n,y,x;
    cout << "Vvedite n: ";
    cin >> n;
    int massiv_shatiy[100];
    int t=0;
    for (int i=0; i<n; i++)
     {
      y=1;
      cout << "Vvedite x: ";
      cin >> x;
      //nahodim starshyu stepen'
      while(x/y > 0) y=y*10;
      //nahodim ementi 121,343 i t.p.
        if(x%10 != x/(y/10))
        {
          massiv_shatiy[t]= x;   
          t++;        
        }
   }   
 for(int f = 0; f< t; f++)
 cout << "Massiv2: " << massiv_shatiy[f] << endl;
 
system("PAUSE");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2013, 21:49     Сжать массив, удалив из него элементы, имеющие одинаковые старшую и младшую цифры
Еще ссылки по теме:

Сжать массив, удалив из него все элементы, которые лежат в интервале [a,b]. Освободившиеся в конце элементы массива заполнить нулями. - C++
У меня такая проблема: Сжать массив, удалив из него все элементы, которые лежат в интервале . Освободившиеся в конце элементы массива ...

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, b] - C++
Указатели с++: Задача: В одномерном массиве , состоящем из n действительных элементов , вычислить : • максимальный элемент массива ; ...

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b] - C++
Сжать массив, удалив из него все элементы, модуль которых находится в интервале . Освободившиеся в конце массива элементы заполнить...

Сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b] - C++
Сжать массив, удалив из него все элементы, величина которых находится в интервале . Освободившийся в конце массива элементы заполнить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gigder
3 / 3 / 0
Регистрация: 28.09.2012
Сообщений: 33
21.12.2013, 21:49  [ТС]     Сжать массив, удалив из него элементы, имеющие одинаковые старшую и младшую цифры #5
Хм, да, вложенный цикл был не нужен. Спасибо Вам большое!
Yandex
Объявления
21.12.2013, 21:49     Сжать массив, удалив из него элементы, имеющие одинаковые старшую и младшую цифры
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru