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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
#1

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

12.01.2011, 02:09. Просмотров 1127. Ответов 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
Что в программе не правильно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2011, 02:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при создании нового массива (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sandye51
программист С++
682 / 584 / 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
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
программист С++
682 / 584 / 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
программист С++
682 / 584 / 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
программист С++
682 / 584 / 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
программист С++
682 / 584 / 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 есть разница, в остальных нет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2011, 21:47
Привет! Вот еще темы с ответами:

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

Пустое окно при создании нового проекта - C++
Добрый день, при создании проекта в любой из версий VS express(2008,2010,12,13) при создании проекта появляется пустое окно. Клавиши...

Как настроить изначальный код, который открывается при создании нового проекта - C++
Объясните пожалуйста, как в Visual C++ 2008 Express настроить изначальный шаблон кода при создании нового проекта. Например, чтоб каждый...

Использование объекта одного класса при создании нового класса - C++
Добрый вечер. У меня такая проблема. Есть готовый класс L2 - список, на его основе нужно создать дек. Я поступил так: в приватной части...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.01.2011, 21:47
Ответ Создать тему
Опции темы

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