Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 30

Повторяющиеся числа из первого массива занести во второй массив только один раз

10.12.2014, 17:17. Показов 2620. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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 <stdio.h>
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char* argv[])
{
int x[10],i,z,cnt,y[10],d;
rand();
cnt=0;
for (i=0;i<10;i++)
{
 for(z=0;(z<=0)&&(x[z]!=x[i]);z++);
 y[z]=x[i];
 if (cnt<z)
{
cnt=z;
}
}
printf ("isxodnii massiv: \n");
for (i=0;i<10;i++)
{
cout<<'\t'<<x[i];
}
cout<<'\n';
printf ("vtoroi massiv: \n");
for (i=0;i<cnt;i++)
{
cout<<"\t"<<y[i];
}
getchar();
return 0;
}


Помогите, пожалуйста объяснить что делает программа в 9,12,13,14,22,24 строке.
Мне написать помогли, но понять я не смог(
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.12.2014, 17:17
Ответы с готовыми решениями:

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

Как преобразовать массив, так чтобы вывести только повторяющиеся элементы один раз?
Как преобразовать массив, так чтобы вывести только повторяющиеся элементы один раз? Например числа: 4 8 8 3 5 3 1 2 Вывести должен 8 3

Объединить два массива в один, записав второй массив после 2-го элемента первого массива.
А вот ещё. Я вообще не имею представления, как её решить: Заданы два одномерных массива различных размеров. Объединить их в один массив,...

17
91 / 74 / 81
Регистрация: 07.12.2014
Сообщений: 303
10.12.2014, 19:21
а задание какое?
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
10.12.2014, 19:55
Цитата Сообщение от DANTEVERGIL Посмотреть сообщение
for(z=0;(z<=0)&&(x[z]!=x[i]);z++);
y[z]=x[i];
Массиву x еще не присвоены значения, поэтому этот код выполнять нельзя.
Кроме того, зачем такой цикл, если он выполнится не более одного раза (для z=0).
И еще, какой в нем смысл: присвоить переменной z ноль или единицу?
(y[z]=x[i]; - вне цикла).
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 30
12.12.2014, 05:27  [ТС]
Нужно составить программу чтобы повторяющиеся числа из первого массива, заносились во второй массив только один раз.
Программа работает. Задание выполняет. Но я не знаю как изложить в устной форме выполнение этой программы.

Добавлено через 23 часа 23 минуты
Пожалуйста помогите. Программа работает нормально. но назначение
for(z=0;(z<=0)&&(x[z]!=x[i]);z++);
y[z]=x[i];
этих двух строк не понимаю. Если удалить. программа не работает. Если поменять какие-либо переменные или операторов, программа начинает работать некоректно.
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
12.12.2014, 05:48
Лучший ответ Сообщение было отмечено DANTEVERGIL как решение

Решение

Этот странный код на форуме попадается не первый раз.
Зачем берете всякую чушь, вместо того, чтобы написать самостоятельно!
C++
1
2
3
4
5
6
7
8
rand(); // случайное число никуда не записывается
cnt=0;
for (i=0;i<10;i++)
{
    for(z=0; (z<=0) && (x[z]!=x[i]);z++) // цикл выполнится максимум один раз для z=0, 
// в массиве x еще хранится неизвестно что, поэтому результат x[z]!=x[i] непредсказуем 
              ; // пустой оператор
 y[z]=x[i]; // находится вне цикла по z из-за ; в конце for
1
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 30
12.12.2014, 05:58  [ТС]
Спасибо) Но зачем Вы вводите пустой оператор?
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
12.12.2014, 06:52
Я ничего не вводил.
Он стоял в конце предыдущей строчки.
Я его перенес на следующую, чтобы была видна ошибка.
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 30
12.12.2014, 09:08  [ТС]
Но программа же работает. В чем заключается тогда ошибка?

Добавлено через 29 минут
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 <stdio.h>
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main(int argc, char* argv[])
{
const int SIZE = 10;
int x[SIZE],i,z,nachalo,y[SIZE]={},d;
 
for(int i = 0; i < SIZE; i++)
{
    x[i] = rand() % 10;
    printf("x[%d] = %d\n", i, x[i]);
}
 
for(int i = 0; i < SIZE; i++)
    for(int j = 0; j < SIZE, j!=i; j++)
        if(x[i] == x[j])
            y[i] = x[i];
            
 
for(int i = 0; i < SIZE; i++)
{
//  x[i] = rand() % 10;
    printf("y[%d] = %d\n", i, y[i]);
}
 
return 0;
}
Добавлено через 20 минут
Я переделал ее. Но во втором массиве "4" выводит 2 раза. как сделать чтобы выводил один раз?
0
91 / 74 / 81
Регистрация: 07.12.2014
Сообщений: 303
12.12.2014, 10:28
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
int x[SIZE], i,  y[SIZE] , d=0;
    for (int i = 0; i < SIZE; i++)
    {
        x[i] = rand() % 10;
        printf("%d\t", x[i]);
    }
    cout << endl;
    for (int i = 0; i < SIZE; i++)
    {
        bool f = true;
            for (int j = d;  j>=0; j--)
                if (x[i] == y[j])
                {
                f = false;
                break;
                }
            if (f)
            {
                y[d] = x[i];
                d++;
            }
 
    }
        
            
 
 
    for (int i = 0; i < d; i++)
    {
        //  x[i] = rand() % 10;
        printf("%d\t", y[i]);
    }
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 30
17.12.2014, 16:00  [ТС]
Спасибо. Но задание выполнено не верно. Мне надо чот бы во втором массиве выдавал числа только те которые повторяются в первом массиве и всего один раз. Она у меня работает(программа выше) но "4" выдает 2 раза а надо чтобы вместо двух "4" была всего одна.
0
91 / 74 / 81
Регистрация: 07.12.2014
Сообщений: 303
17.12.2014, 18:14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
for (int i = 0; i < SIZE-1; i++)
    {
        
        for (int j = i + 1; j < SIZE - 1; j++)
            if (x[i] == x[j])
            {
            bool f = true;
            for (int k = d; k >= 0; k--)
                if (x[i] == y[k])
                {
                f = false;
                break;
                }
            if (f)
                {
                y[d] = x[i];
                d++;
                }
            }
        
 
    }
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 30
17.12.2014, 19:27  [ТС]
Почему вы от SIZE отнимаете 1? и d это вы ввели новую переменную?
0
91 / 74 / 81
Регистрация: 07.12.2014
Сообщений: 303
17.12.2014, 20:45
Цитата Сообщение от DANTEVERGIL Посмотреть сообщение
Почему вы от SIZE отнимаете 1?
потому
Цитата Сообщение от olgashat Посмотреть сообщение
for (int i = 0; i < SIZE-1; i++)
* * {
for (int j = i + 1; j < SIZE - 1; j++)
Цитата Сообщение от DANTEVERGIL Посмотреть сообщение
и d это вы ввели новую переменную?
да
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 30
19.12.2014, 09:18  [ТС]
При введении переменной d через float.


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
const int SIZE = 10;
int x[SIZE],i,y[SIZE]={};
float (d);
for(int i = 0; i < SIZE; i++)
{
    x[i] = rand() % 10;
    printf("x[%d] = %d\n", i, x[i]);
}
for (int i = 0; i < SIZE-1; i++)
    {
        for (int j = i + 1; j < SIZE - 1; j++)
            if (x[i] == x[j])
            {
            bool f = true;
            for (int k = d; k >= 0; k--)
                if (x[i] == y[k])
                {
                f = false;
                break;
                }
            if (f)
                {
                y[d] = x[i];
                d++;
                
                }
            } 
 
    }
 
{
    printf("y[%d] = %d\n", i, y[i]);
}
 
return 0;
}

В 23 строке( y[d] = x[i]; ) выдает ошибку. Не пойму почему?
0
91 / 74 / 81
Регистрация: 07.12.2014
Сообщений: 303
19.12.2014, 10:14
DANTEVERGIL, потому что Вы не проинициализировали переменную d до первого обращения к ней.
кроме того, эта переменная - индекс, и она должна быть целого типа
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 30
19.12.2014, 14:30  [ТС]
Извините, а Вы можете объяснить как работает тело программы, которое Вы прислали(сообщение 11)? Я очень хочу разобраться в этой теме.
0
91 / 74 / 81
Регистрация: 07.12.2014
Сообщений: 303
19.12.2014, 23:20
Лучший ответ Сообщение было отмечено DANTEVERGIL как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
for (int i = 0; i < SIZE-1; i++)//фиксируем элемент
    {
        
        for (int j = i + 1; j < SIZE - 1; j++)//идем по массиву, начиная со следующего за зафиксированным
            if (x[i] == x[j])//если находим повтор зафиксированного
            {
            bool f = true;
            for (int k = d; k >= 0; k--)//начинаем идти по формируемому массиву
                if (x[i] == y[k])//в поисках зафиксированного нами элемента
                {
                f = false;//если находим его в новом массиве, то переводим флажок в неправду
                break;
                }
            if (f)//если флажок все еще в правде, то есть мы его не нашли в новом массиве
                {
                y[d] = x[i];//то заносим его в новый массив
                d++;//и увеличиваем индекс последнего элемента формируемого массива
                }
            }
        
 
    }
1
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 30
23.12.2014, 08:52  [ТС]
Да должна быть. НО компилятор выдает ошибку: [Error] 'd' was not declared in this scope

Добавлено через 28 минут
Все. d я объявляю как переменная - индекс через int, но программа результата работы вообще не дает тогда
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.12.2014, 08:52
Помогаю со студенческими работами здесь

Объединить два массива в один, включив второй массив между 4 и 5 элементами первого массива
Заданы два одномерных массива с числом элементов 6 и 7. Объединить их в один массив,включив второй массив между 4 и 5 элементами первого...

Объединить два массива в один, включив второй массив между k-ым и (k+1)-ым элементами первого массива
Может кто решить ? вовсе не могу понять ... Дано два одномерных масива различной размерности. Обьединить их в один масив, включив второй...

Задайте массив целых чисел. Вывести только те числа, которые входят в него только один раз
СРОЧНО!!! ПОМОГИТЕ ПОЖАЛУЙСТА,ОЧЕНЬ НУЖНО!!! ЗАРАНИЕ БЛАГОДАРЮ!) Задайте массив целых чисел. Вывести только те числа, которые входят...

Заданы два одномерных массива.Объединить их в один массив, включив второй массив между K и (K+1) элементами первого
Последняя на сегодня... Заданы два одномерных массива: массив А размера M и массив В размера N. Объединить их в один массив, включив...

Во второй массив переписать только нечетные элементы первого массива
Помогите, пожалуйста найти ошибку в этом задании: Пользователь вводит 1-ый массив, во 2-ой массив переписать только нечетные элементы...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru