Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Maray
3 / 3 / 4
Регистрация: 03.01.2015
Сообщений: 449
1

Из цепочки чисел удалить числа кратные заданному числу

14.06.2015, 17:17. Просмотров 427. Ответов 9
Метки нет (Все метки)

Добрый день!

Помогите пожалуйста с программой. Программа с динамическим массивом. Вводится цепочка чисел. Из этой цепочки нужно удалить числа кратные трем.

Пыталась написать программу, но она, к сожалению, не работает. Помогите поалуйста

Текст программы:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <algorithm>
using namespace std;
int proc(const int N)
{
    int** mas = new int* [N];
    int k;
 
    for (int i = 0; i < N; i++)
    {
        mas[i] = new int[N];
    }
 
    for (int i = 0; i < N; i++)
    {
        cin >> mas[i];
    }
 
    cout << endl;
    for (int i = 0; i < N; i++)
    {
            cout << mas[i] << " ";
        cout << endl;
    }
    cout << endl;
    k=N;
    for (int i = 0; i < N; i++)
    {
        if (mas[i]%3=0)
        {delete[]mas[i];
        k=k-1;
        }
        cout << endl;
    }
 
    for (int i = 0; i < k; i++)
    {
            cout << mas[i] << " ";
        cout << endl;
    }
 
    for (int i = 0; i < k; i++)
    {
        delete[] mas[i];
    }
    delete[] mas;
    return 0;
 
}
int main() {
    int N;
    cout << "Введите количество элементов в строке: ";
    cin >> N;
    cout << endl;
    proc(N);
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2015, 17:17
Ответы с готовыми решениями:

Напечатать на экране все трёхзначные числа, кратные заданному числу
Напечатать на экране все трёхзначные числа кратные заданному числу k (5 ≤ k ≤...

Создать файл и записать в него числа последовательности, не кратные заданному числу
помогите ребят! #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;ctime&gt;...

Переписать в массив элементы матрицы кратные заданному числу
Задать значения целочисленных элементам матриц A и B размерностью 3 и 4 и...

Вывести все четырёхзначные числа, сумма чисел которых равна заданному числу
#include &lt;iostream&gt; using namespace std; int main(){ int N, i, j; ...

Записать в новый массив все элементы исходного массива, кратные заданному числу
Напишите понятным языком.:cry: При помощи случайных чисел ввести одномерный...

9
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
14.06.2015, 17:19 2
Цитата Сообщение от Maray Посмотреть сообщение
но она, к сожалению, не работает.
А что с ней не так?
0
Maray
3 / 3 / 4
Регистрация: 03.01.2015
Сообщений: 449
14.06.2015, 21:54  [ТС] 3
Подчеркивает ">>" в указанной строке
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <algorithm>
using namespace std;
int proc(const int N)
{
    int** mas = new int* [N];
    int k;
 
    for (int i = 0; i < N; i++)
    {
        mas[i] = new int[N];
    }
 
    for (int i = 0; i < N; i++)
    {
        cin >> mas[i];      // <-------- вот здесь
    }
 
    cout << endl;
    for (int i = 0; i < N; i++)
    {
            cout << mas[i] << " ";
        cout << endl;
    }
    cout << endl;
    k=N;
    for (int i = 0; i < N; i++)
    {
        if (mas[i]%3=0)
        {delete[]mas[i];
        k=k-1;
        }
        cout << endl;
    }
 
    for (int i = 0; i < k; i++)
    {
            cout << mas[i] << " ";
        cout << endl;
    }
 
    for (int i = 0; i < k; i++)
    {
        delete[] mas[i];
    }
    delete[] mas;
    return 0;
 
}
int main() {
    int N;
    cout << "Введите количество элементов в строке: ";
    cin >> N;
    cout << endl;
    proc(N);
    system("pause");
}
0
Samurai_arz
0 / 0 / 1
Регистрация: 19.01.2015
Сообщений: 6
14.06.2015, 22:26 4
попробуйте изменить 6 строчку на
int* mas = new int[N];
0
slavkaPR
1 / 1 / 1
Регистрация: 20.03.2011
Сообщений: 14
14.06.2015, 22:31 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include<iostream>
 
using namespace std;
 
#include <cstdlib>
bool iDel(int *array, int &lenAr, int nom);
 
int main()
{
     setlocale(LC_ALL,"RUSSIAN");
   int length_array;
   cout << "Укажите количество элементов массива:  ";
   cin >> length_array;
 
   int *arrayPtr = new int [length_array]; //  // одномерный динамический массив
 
// заполняем одномерный массив
   for (int counter = 0; counter < length_array; counter++)
   {
       cout <<counter << " элемент= ";
       cin>>arrayPtr[counter];
      
   }
   cout << endl;
 
  for (int counter = 0; counter < length_array; counter++)
   {
      if (arrayPtr[counter]%3==0)
      {
       int dell = counter + 1;
       iDel(arrayPtr, length_array,dell ); 
        
      }
   }
   cout << endl;
   
   
 
   for (int counter = 0; counter < length_array; counter++)
   {
       cout << arrayPtr[counter] << "  "; //вывод массива после удаления
   }
 
   cout << endl;
 
   delete [] arrayPtr;
system("pause"); 
return 0;
 
}
 
bool iDel(int *array, int &lenAr, int nom)
{
    if ( nom > lenAr || nom < 1)
    {
        cout << "" << endl;
        return false;
    }
 
    for(int ix = nom - 1; ix < lenAr - 1; ix++)
    {
        array[ix] = array[ix + 1];
    }
    lenAr--;
    return true;
}
0
Maray
3 / 3 / 4
Регистрация: 03.01.2015
Сообщений: 449
15.06.2015, 07:06  [ТС] 6
Цитата Сообщение от Samurai_arz Посмотреть сообщение
попробуйте изменить 6 строчку на
int* mas = new int[N];
Теперь выделяет сразу несколько строчек:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <algorithm>
using namespace std;
int proc(const int N)
{
    int* mas = new int[N];
    int k;
 
    for (int i = 0; i < N; i++)
    {
        mas[i] = new int[N]; // <----- значение типа int* нельзя присвоить сущности типа int 
    }
 
    for (int i = 0; i < N; i++)
    {
        cin >> mas[i];
    }
 
    cout << endl;
    for (int i = 0; i < N; i++)
    {
        cout << mas[i] << " ";
        cout << endl;
    }
    cout << endl;
    k = N;
    for (int i = 0; i < N; i++)
    {
        if (mas[i] % 3 = 0)   // <----выделяет mas и пишет: выражение должно быть допустимым для изменения левосторонним значением
        {
            delete[]mas[i]; // <--- выражение должно иметь тип указателя
            k = k - 1;
        }
        cout << endl;
    }
 
    for (int i = 0; i < k; i++)
    {
        cout << mas[i] << " ";
        cout << endl;
    }
 
    for (int i = 0; i < k; i++)
    {
        delete[] mas[i];  <--- выражение должно иметь тип указателя
    }
    delete[] mas;
    return 0;
 
}
int main() {
    int N;
    cout << "Введите количество элементов в строке: ";
    cin >> N;
    cout << endl;
    proc(N);
    system("pause");
}
0
DrunkProgrammer
37 / 27 / 11
Регистрация: 09.06.2015
Сообщений: 100
15.06.2015, 07:19 7
Цитата Сообщение от Maray Посмотреть сообщение
if (mas[i] % 3 = 0)
здесь сравнение не есть присваивание, пишите ==.
Цитата Сообщение от Maray Посмотреть сообщение
delete[]mas[i]; <--- выражение должно иметь тип указателя
Вы пытаетесь удалить элемент из массива, удачи
Цитата Сообщение от Maray Посмотреть сообщение
for (int i = 0; i < N; i++) { mas[i] = new int[N]; <----- значение типа int* нельзя присвоить сущности типа int }
так а это, Вы в одномерном массиве пытаетесь присвоить числу указатель на массив.
0
Platin
7 / 7 / 10
Регистрация: 29.05.2015
Сообщений: 35
15.06.2015, 08:21 8
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int proc(int N)
{
   // int** mas = new int* [N];
    int k;
    int mas[N];
    int mas_1[N];
 
 //   for (int i = 0; i < N; i++)
 //   {
 //       mas[i] = new int[N];
 //   }
 
    for (int i = 0; i < N; i++)
    {
        cin >> mas[i];     // <--------вот здесь
        mas_1[i]=0;
    }
 
    cout << endl;
    for (int i = 0; i < N; i++)
    {
            cout << mas[i] << " " << endl;
    }
    cout << endl;
    k=N;
    int j=0;
    for (int i = 0; i < N; i++)
    {
        if (mas[i]%3 != 0)
        {mas_1[j]=mas[i];
         j++;
        }
        else {k--;}
        cout << endl;
    }
 
    for (int i = 0; i < k; i++)
    {
            cout << mas_1[i] << " ";
        cout << endl;
    }
 
  /*  for (int i = 0; i < N; i++)
    {
        mas[i]=mas[i+1];
                //N--;
    }*/
    //delete[] mas;
    return 0;
 
}
int main() {
    int N;
    cout << "Введите количество элементов в строке: ";
    cin >> N;
    cout << endl;
    proc(N);
    system("pause");
}
чуть переделал, так как с указателями не получается.
если не критично, можно не использовать указатели.
код рабочий, на QT Creator работает.
0
Maray
3 / 3 / 4
Регистрация: 03.01.2015
Сообщений: 449
18.06.2015, 10:42  [ТС] 9
У меня вот здесь выводит ошибку
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int proc(int N)                  <--------здесь пробовал заменять на int proc(const int N). Но выводит всё ту же ошибку
 
{
   // int** mas = new int* [N];
    int k;
    int mas[N];           <-------выражение должно иметь константное значение
    int mas_1[N];        <-------выражение должно иметь константное значение
 
 //   for (int i = 0; i < N; i++)
 //   {
 //       mas[i] = new int[N];
 //   }
 
    for (int i = 0; i < N; i++)
    {
        cin >> mas[i];     // <--------вот здесь
        mas_1[i]=0;
    }
 
    cout << endl;
    for (int i = 0; i < N; i++)
    {
            cout << mas[i] << " " << endl;
    }
    cout << endl;
    k=N;
    int j=0;
    for (int i = 0; i < N; i++)
    {
        if (mas[i]%3 != 0)
        {mas_1[j]=mas[i];
         j++;
        }
        else {k--;}
        cout << endl;
    }
 
    for (int i = 0; i < k; i++)
    {
            cout << mas_1[i] << " ";
        cout << endl;
    }
 
  /*  for (int i = 0; i < N; i++)
    {
        mas[i]=mas[i+1];
                //N--;
    }*/
    //delete[] mas;
    return 0;
 
}
int main() {
    int N;
    cout << "Введите количество элементов в строке: ";
    cin >> N;
    cout << endl;
    proc(N);
    system("pause");
}
Добавлено через 21 минуту
Помогите, пожалуйста
0
h010d
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 4
18.06.2015, 11:02 10
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <algorithm>
 
using namespace std;
int proc(int N)                  //<--------здесь пробовал заменять на int proc(const int N).Но выводит всё ту же ошибку
 
{
    int* mas = new int [N];
    int* mas_1 = new int[N]; 
    int k;
 
    //   for (int i = 0; i < N; i++)
    //   {
    //       mas[i] = new int[N];
    //   }
 
    for (int i = 0; i < N; i++)
    {
        cin >> mas[i];     // <--------вот здесь
        mas_1[i] = 0;
    }
 
    cout << endl;
    for (int i = 0; i < N; i++)
    {
        cout << mas[i] << " ";
    }
    cout << endl;
    k = N;
    int j = 0;
    for (int i = 0; i < N; i++)
    {
        if (mas[i] % 3 != 0)
        {
            mas_1[j] = mas[i];
            j++;
        }
        else { k--; }
        cout << endl;
    }
 
    for (int i = 0; i < k; i++)
    {
        cout << mas_1[i] << " ";
        
    }
    cout << endl;
    /*  for (int i = 0; i < N; i++)
    {
    mas[i]=mas[i+1];
    //N--;
    }*/
    delete[] mas;
    delete[] mas_1;
    return 0;
 
}
int main()
{
    setlocale(LC_ALL, "Russian");
    int N;
    cout << "Введите количество элементов в строке: ";
    cin >> N;
    cout << endl;
    proc(N);
    system("pause");
}
если я правильно понял то это должно так быть.
и может проще автоматом числа забивать?

Добавлено через 10 минут
Вариант без ввода чисел руками:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <algorithm>
 
using namespace std;
int proc(int N)                  //<--------здесь пробовал заменять на int proc(const int N).Но выводит всё ту же ошибку
 
{
    int* mas = new int[N];
    int* mas_1 = new int[N];
    int k;
 
    for (int i = 0; i < N; i++)
    {
 
        mas[i] = rand() % N; // Тут вместо N можно подставить свое число.
    }
 
    cout << endl;
    for (int i = 0; i < N; i++)
    {
        cout << mas[i] << " ";
    }
    cout << endl;
    k = N;
    int j = 0;
    for (int i = 0; i < N; i++)
    {
        if (mas[i] % 3 != 0)
        {
            mas_1[j] = mas[i];
            j++;
        }
        else { k--; }
 
    }
    cout << endl;
    cout << "Результат вывода: " << endl;
    for (int i = 0; i < k; i++)
    {
        cout << mas_1[i] << " ";
 
    }
    cout << endl;
 
    delete[] mas;
    delete[] mas_1;
    return 0;
 
}
int main()
{
    setlocale(LC_ALL, "Russian");
    int N;
    cout << "Введите количество элементов в строке: ";
    cin >> N;
    cout << endl;
    proc(N);
    system("pause");
}
0
18.06.2015, 11:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2015, 11:02

Записать в новый массив все элементы исходного массива, кратные заданному числу
При помощи случайных чисел ввести одномерный массив , состоящий из 100...

Удалить из массива все элементы, равные заданному числу
Задано натуральное число n и массив из n целых чисел a0,a1,...,an-1, а также...

Удалить из вектора все элементы, которые кратны заданному числу
Добрый вечер/ночь/день, помогите пожалуйста исправить ошибки #include...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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