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

Ошибка при создании нового массива

12.01.2011, 02:09. Показов 2354. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача:
Дан одномерный массив чисел, среди элементов которого есть одинаковые. Создать новый массив из различных элементов исходного массива.
Решение:
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
#include <iostream.h>
#include <conio.h>
 
int main() {
 
  clrscr();
 
  int a[100], b[100], i, j, n;
 
  cin >> n;
  for (i=0; i < n; i++) {
    cout << "element "  << i << " :";
    cin >> a[i];
  }
 
  for (i = 0; i < n; i++) {
    cout << " " << a[i] << " ";
  }
 
  int d = 0;
  for(i = 0; i < n; ++i) {
 
    int exists = 0;
    for(j = 0; j < d; ++j)
      if(a[i] == b[j]) { exists = 1; break; }
 
    if(!exists) b[d++] = a[i];
 
  }
 
  cout << endl;
  for (i=0; i < d; i++) {
    cout << b[i] << " ";
  }
  return 0;
 
}
Ввожу "10", пишет
-244 2 -28720 12870 2 -28720 7460 -29593 2 -94
-244 2 -28720 12870 7460 -29593 -94
Что в программе не правильно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.01.2011, 02:09
Ответы с готовыми решениями:

Ошибка в создании нового массива
все считает, но новый массив создается со значением int -85........ и так далее все элементы получились равными Само задание Составить...

Ошибка при создании массива
Не пойму в чем ошибка... Подскажите пожалуйста. void CreatMas(int *m) { int st,stlb; scanf(&quot;%d&quot;,&amp;st); ...

Ошибка при создании массива
задача такая, методом перебора найти первое простое десятизначное значение дробной части е (эпсилон). для простоты решил не вычислять...

23
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.01.2011, 02:20
программа работает верно.
может дело в старом компиляторе? и то, сомнительно
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 12:08  [ТС]
Цитата Сообщение от sandye51 Посмотреть сообщение
программа работает верно.
может дело в старом компиляторе? и то, сомнительно
то есть вы хотите сказать, что результат правильный? Просто дело в том, что я не понимаю, как решить эту задачу, просто нашел решение, но не знал правильное оно или нет. Ведь одномерный массив, это тот, который в одну строку пишется. А я написал только одно число, а программа сразу несколько значений выдает. Я не совсем врубаюсь, что тут нужно
0
 Аватар для vet
183 / 184 / 55
Регистрация: 08.04.2009
Сообщений: 1,309
12.01.2011, 12:18
Цитата Сообщение от Timon779 Посмотреть сообщение
А я написал только одно число, а программа сразу несколько значений выдает.
Ты ввел n -кол-во элементов , а затем прога предлагает ввести элементы исходного массива n-раз
И сама прога работает верно
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 12:49  [ТС]
Цитата Сообщение от vet Посмотреть сообщение
Ты ввел n -кол-во элементов , а затем прога предлагает ввести элементы исходного массива n-раз
И сама прога работает верно
хм... странно... Я вчера по-моему подправил строку с элементами, то есть сделал как в коде, который выложил, потому что было немного по-другому (это которая cout<<"element "<<i<<" :".
Теперь когда ввожу 10, она мне выдает десять нулей, а до задания элементов там и не доходит...
0
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.01.2011, 13:53
Timon779,
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
#include <iostream>
#include <conio.h>
#include <locale.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int a[100], b[100], i, j, n;
    cout << "Введите число элементов массива\n";
    cin >> n;
    for (i=0; i < n; i++)
    {
        cout << "Введите элемент " << i + 1 << " : ";
        cin >> a[i];
    }
    cout << "Введенный массив\n";
    for (i = 0; i < n; i++) 
        cout << " " << a[i] << " ";
    int d = 0;
    for(i = 0; i < n; ++i)
    {
        int exists = 0;
        for(j = 0; j < d; ++j)
            if(a[i] == b[j])
            { 
                exists = 1;
                break;
            }
            if(!exists)
                b[d++] = a[i];
    }
    cout << "\nМассив различных элементов\n";
    for (i=0; i < d; i++)
        cout << b[i] << " ";
    _getch();
    return 0;
}
думаю так вам должно быть понятней что вводить в программе
1
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 14:16  [ТС]
то есть получается я только задаю количество элементов, а программа сама создает исходный массив с одинаковыми элементами, а потом выписывает из него элементы без повторений?
0
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.01.2011, 14:20
ты программу вообще компилил что я тебе сейчас скинул?
сначало запрашивает колличество элементов массива. Потом ты поочередно вводишь все элементы массива. Потом выбираются все разные элементы и записываются во второй массив. И он выводится.
1
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 14:31  [ТС]
Добавлено через 1 минуту
секунду, кажется я кое-где ошибся. Сейчас подправлю
0
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.01.2011, 14:32
Цитата Сообщение от Timon779 Посмотреть сообщение
секунду, кажется я кое-где ошибся
при выборе компилятора
поставьте уже нормальный
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 14:40  [ТС]
Цитата Сообщение от sandye51 Посмотреть сообщение
ты программу вообще компилил что я тебе сейчас скинул?
сначало запрашивает колличество элементов массива. Потом ты поочередно вводишь все элементы массива. Потом выбираются все разные элементы и записываются во второй массив. И он выводится.
огромное спасибо за помощь!
Я оказывается ошибся в одном месте со знаком, вместо i=0 записал i-0, из-за этого и была абракадбра, сейчас все как надо заработало)))
0
8 / 8 / 2
Регистрация: 12.01.2011
Сообщений: 26
12.01.2011, 14:59
в этом куске кода первый елемент массива не сравнивается
C++
1
2
3
4
5
6
7
8
9
10
 int d = 0;
  for(i = 0; i < n; ++i) {
 
    int exists = 0;
    for(j = 0; j < d; ++j)
      if(a[i] == b[j]) { exists = 1; break; }
 
    if(!exists) b[d++] = a[i];
 
  }
так попробуй
C++
1
2
3
4
5
6
7
8
9
10
 int d = 0;
  for(i = 0; i < n; i++) {
 
    int exists = 0;
    for(j = 0; j < d; j++)
      if(a[i] == b[j]) { exists = 1; break; }
 
    if(!exists) b[d++] = a[i];
 
  }
i++ - эта команда инкрементирует переменную после прохода тела цикла, а ++i до, и с j так же
1
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 21:18  [ТС]
спасибо, подправил)
0
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.01.2011, 21:32
Цитата Сообщение от Jeka_T Посмотреть сообщение
i++ - эта команда инкрементирует переменную после прохода тела цикла, а ++i до, и с j так же
че за бред несешь? в цикле без разницы как писать
1
8 / 8 / 2
Регистрация: 12.01.2011
Сообщений: 26
12.01.2011, 21:47
в циклах for есть разница, в остальных нет
0
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.01.2011, 21:51
Jeka_T, предоставь мне пример кода с циклом, где результат будет меняться если написать вместо ++i соот-но i++
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.01.2011, 21:54
Jeka_T, и ещё раз вам повторю, что разницы нет.

Добавлено через 37 секунд
Вы понимаете синтаксис оператора for? Объясните мне, пожалуйста.
0
8 / 8 / 2
Регистрация: 12.01.2011
Сообщений: 26
12.01.2011, 21:57
C++
1
#define ++i i++
вообще компилироваться не
будет, так делать нельзя
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.01.2011, 22:03
Цитата Сообщение от Jeka_T Посмотреть сообщение
#define ++i i++
А это, блин, вообще к чему??

Добавлено через 41 секунду

Не по теме:

Jeka_T, извините за нескромный вопрос... Вы тролль?

0
8 / 8 / 2
Регистрация: 12.01.2011
Сообщений: 26
12.01.2011, 22:15
это я к тому, что вопрс от sandye51:

Jeka_T, предоставь мне пример кода с циклом, где результат будет меняться если написать вместо ++i соот-но i++

изначально присутсвовал такой кусок кода:
#define ++i i++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2011, 22:15
Помогаю со студенческими работами здесь

Ошибка при создании массива объектов
Здравствуйте, необходимо создать массив случайного количества объектов, при выполнении такого кода компилятор выдает ошибку: Line 6 -...

Ошибка при создании динамического массива.
Все доброго времени. Начал создавать одномерный массив, потом решил его преобразовать в динамический одномерный. Понимаю что...

Ошибка при создании массива большого размера
Массив int m; выдает ошибку Винды в чем дела? с 5 9-ми все нормально Добавлено через 19 минут точнее выше 519999 выдает ошибку при...

Ошибка при создании динамического двумерного массива
Ткните пальцем, что не так. Только учусь, делаю лабы, камнями не забрасывайте. Смотрел шаблоны здесь и в других местах, но есть вопрос. ...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru