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

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

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

Author24 — интернет-сервис помощи студентам
Задача:
Дан одномерный массив чисел, среди элементов которого есть одинаковые. Создать новый массив из различных элементов исходного массива.
Решение:
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2011, 02:09
Ответы с готовыми решениями:

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

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

Ошибка при создании массива
задача такая, методом перебора найти первое простое десятизначное значение дробной части е...

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

23
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.01.2011, 02:20 2
программа работает верно.
может дело в старом компиляторе? и то, сомнительно
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 12:08  [ТС] 3
Цитата Сообщение от sandye51 Посмотреть сообщение
программа работает верно.
может дело в старом компиляторе? и то, сомнительно
то есть вы хотите сказать, что результат правильный? Просто дело в том, что я не понимаю, как решить эту задачу, просто нашел решение, но не знал правильное оно или нет. Ведь одномерный массив, это тот, который в одну строку пишется. А я написал только одно число, а программа сразу несколько значений выдает. Я не совсем врубаюсь, что тут нужно
0
182 / 183 / 55
Регистрация: 08.04.2009
Сообщений: 1,309
12.01.2011, 12:18 4
Цитата Сообщение от Timon779 Посмотреть сообщение
А я написал только одно число, а программа сразу несколько значений выдает.
Ты ввел n -кол-во элементов , а затем прога предлагает ввести элементы исходного массива n-раз
И сама прога работает верно
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 12:49  [ТС] 5
Цитата Сообщение от vet Посмотреть сообщение
Ты ввел n -кол-во элементов , а затем прога предлагает ввести элементы исходного массива n-раз
И сама прога работает верно
хм... странно... Я вчера по-моему подправил строку с элементами, то есть сделал как в коде, который выложил, потому что было немного по-другому (это которая cout<<"element "<<i<<" :".
Теперь когда ввожу 10, она мне выдает десять нулей, а до задания элементов там и не доходит...
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
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;
}
думаю так вам должно быть понятней что вводить в программе
1
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 14:16  [ТС] 7
то есть получается я только задаю количество элементов, а программа сама создает исходный массив с одинаковыми элементами, а потом выписывает из него элементы без повторений?
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.01.2011, 14:20 8
ты программу вообще компилил что я тебе сейчас скинул?
сначало запрашивает колличество элементов массива. Потом ты поочередно вводишь все элементы массива. Потом выбираются все разные элементы и записываются во второй массив. И он выводится.
1
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 14:31  [ТС] 9
Добавлено через 1 минуту
секунду, кажется я кое-где ошибся. Сейчас подправлю
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.01.2011, 14:32 10
Цитата Сообщение от Timon779 Посмотреть сообщение
секунду, кажется я кое-где ошибся
при выборе компилятора
поставьте уже нормальный
0
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 14:40  [ТС] 11
Цитата Сообщение от sandye51 Посмотреть сообщение
ты программу вообще компилил что я тебе сейчас скинул?
сначало запрашивает колличество элементов массива. Потом ты поочередно вводишь все элементы массива. Потом выбираются все разные элементы и записываются во второй массив. И он выводится.
огромное спасибо за помощь!
Я оказывается ошибся в одном месте со знаком, вместо i=0 записал i-0, из-за этого и была абракадбра, сейчас все как надо заработало)))
0
8 / 8 / 2
Регистрация: 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 так же
1
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
12.01.2011, 21:18  [ТС] 13
спасибо, подправил)
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.01.2011, 21:32 14
Цитата Сообщение от Jeka_T Посмотреть сообщение
i++ - эта команда инкрементирует переменную после прохода тела цикла, а ++i до, и с j так же
че за бред несешь? в цикле без разницы как писать
1
8 / 8 / 2
Регистрация: 12.01.2011
Сообщений: 26
12.01.2011, 21:47 15
в циклах for есть разница, в остальных нет
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.01.2011, 21:51 16
Jeka_T, предоставь мне пример кода с циклом, где результат будет меняться если написать вместо ++i соот-но i++
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.01.2011, 21:54 17
Jeka_T, и ещё раз вам повторю, что разницы нет.

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

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

Не по теме:

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

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

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

изначально присутсвовал такой кусок кода:
#define ++i i++
0
12.01.2011, 22:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2011, 22:15
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru