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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 02:09     Ошибка при создании нового массива #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
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
Что в программе не правильно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
12.01.2011, 02:20     Ошибка при создании нового массива #2
программа работает верно.
может дело в старом компиляторе? и то, сомнительно
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 12:08  [ТС]     Ошибка при создании нового массива #3
Цитата Сообщение от sandye51 Посмотреть сообщение
программа работает верно.
может дело в старом компиляторе? и то, сомнительно
то есть вы хотите сказать, что результат правильный? Просто дело в том, что я не понимаю, как решить эту задачу, просто нашел решение, но не знал правильное оно или нет. Ведь одномерный массив, это тот, который в одну строку пишется. А я написал только одно число, а программа сразу несколько значений выдает. Я не совсем врубаюсь, что тут нужно
vet
 Аватар для vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
12.01.2011, 12:18     Ошибка при создании нового массива #4
Цитата Сообщение от Timon779 Посмотреть сообщение
А я написал только одно число, а программа сразу несколько значений выдает.
Ты ввел n -кол-во элементов , а затем прога предлагает ввести элементы исходного массива n-раз
И сама прога работает верно
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 12:49  [ТС]     Ошибка при создании нового массива #5
Цитата Сообщение от vet Посмотреть сообщение
Ты ввел n -кол-во элементов , а затем прога предлагает ввести элементы исходного массива n-раз
И сама прога работает верно
хм... странно... Я вчера по-моему подправил строку с элементами, то есть сделал как в коде, который выложил, потому что было немного по-другому (это которая cout<<"element "<<i<<" :".
Теперь когда ввожу 10, она мне выдает десять нулей, а до задания элементов там и не доходит...
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
12.01.2011, 13:53     Ошибка при создании нового массива #6
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;
}
думаю так вам должно быть понятней что вводить в программе
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 14:16  [ТС]     Ошибка при создании нового массива #7
то есть получается я только задаю количество элементов, а программа сама создает исходный массив с одинаковыми элементами, а потом выписывает из него элементы без повторений?
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
12.01.2011, 14:20     Ошибка при создании нового массива #8
ты программу вообще компилил что я тебе сейчас скинул?
сначало запрашивает колличество элементов массива. Потом ты поочередно вводишь все элементы массива. Потом выбираются все разные элементы и записываются во второй массив. И он выводится.
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 14:31  [ТС]     Ошибка при создании нового массива #9
Добавлено через 1 минуту
секунду, кажется я кое-где ошибся. Сейчас подправлю
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
12.01.2011, 14:32     Ошибка при создании нового массива #10
Цитата Сообщение от Timon779 Посмотреть сообщение
секунду, кажется я кое-где ошибся
при выборе компилятора
поставьте уже нормальный
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 14:40  [ТС]     Ошибка при создании нового массива #11
Цитата Сообщение от sandye51 Посмотреть сообщение
ты программу вообще компилил что я тебе сейчас скинул?
сначало запрашивает колличество элементов массива. Потом ты поочередно вводишь все элементы массива. Потом выбираются все разные элементы и записываются во второй массив. И он выводится.
огромное спасибо за помощь!
Я оказывается ошибся в одном месте со знаком, вместо i=0 записал i-0, из-за этого и была абракадбра, сейчас все как надо заработало)))
Jeka_T
7 / 7 / 0
Регистрация: 12.01.2011
Сообщений: 26
12.01.2011, 14:59     Ошибка при создании нового массива #12
в этом куске кода первый елемент массива не сравнивается
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 так же
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 21:18  [ТС]     Ошибка при создании нового массива #13
спасибо, подправил)
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
12.01.2011, 21:32     Ошибка при создании нового массива #14
Цитата Сообщение от Jeka_T Посмотреть сообщение
i++ - эта команда инкрементирует переменную после прохода тела цикла, а ++i до, и с j так же
че за бред несешь? в цикле без разницы как писать
Jeka_T
7 / 7 / 0
Регистрация: 12.01.2011
Сообщений: 26
12.01.2011, 21:47     Ошибка при создании нового массива #15
в циклах for есть разница, в остальных нет
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
12.01.2011, 21:51     Ошибка при создании нового массива #16
Jeka_T, предоставь мне пример кода с циклом, где результат будет меняться если написать вместо ++i соот-но i++
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.01.2011, 21:54     Ошибка при создании нового массива #17
Jeka_T, и ещё раз вам повторю, что разницы нет.

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

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

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2011, 22:15     Ошибка при создании нового массива
Еще ссылки по теме:

Ошибка в создании нового массива C++
C++ Ошибка при создании шаблонной функции:"error C2075: temp: для инициализации массива требуются фигурные скобки"
C++ Пустое окно при создании нового проекта

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

Или воспользуйтесь поиском по форуму:
Jeka_T
7 / 7 / 0
Регистрация: 12.01.2011
Сообщений: 26
12.01.2011, 22:15     Ошибка при создании нового массива #20
это я к тому, что вопрс от sandye51:

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

изначально присутсвовал такой кусок кода:
#define ++i i++
Yandex
Объявления
12.01.2011, 22:15     Ошибка при создании нового массива
Ответ Создать тему
Опции темы

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