Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Aymurat
123 / 114 / 67
Регистрация: 07.11.2014
Сообщений: 786
Завершенные тесты: 9
1

Не работает счетчик в методе определения различающихся элементов массива

16.11.2015, 20:40. Просмотров 706. Ответов 25
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdio.h"
int main()
{
    const int n=29;
    double massiv[29];
    int i,j; int proverka=0;
    int d=0;
    for (i=0; i<=n; i++)
    {
        printf("Mass[%i]=",i+1); scanf("%lf",&massiv[i]);
    }
    for (i=0; i<=n; i++)
    {
        proverka=1;
        for (j=1; j<=n; j++)
        {
            if (massiv[i]==massiv[j]) {proverka=0; break;} else
            if (proverka==1) {d=d+1;}
        }
    }
    printf("Kol-vo raznyh 4isel = %i",d);
}
Есть массив из 30 элементов, нужно найти кол-во разных из них. Иногда показывает 0, иногда 226(это невозможно, учитывая то что всего лишь 30 чисел). Как исправить? Boolean использовать нельзя, ибо Си, там его нету вообще). Ну вообщем, сделал я вручную, код вроде правилен, даже уверен. Но вот все равно выдает другие результаты. Помогите.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2015, 20:40
Ответы с готовыми решениями:

Определить количество k различающихся элементов одномерного массива
Определить количество k различающихся элементов одномерного массива C (то есть повторяющиеся...

Перепись всех различающихся элементов массива в новый массив
Дан одномерный массив А неупорядоченных целых чисел. Необходимо переписать в массив В все...

Перепись всех различающихся элементов массива в новый массив
Дан одномерный массив А неупорядоченных целых чисел. Необходимо переписать в массив В все...

Счетчик итераций в методе дихотомии
Господа! Столкнулся со следующей проблемой: у меня есть программа, которую нужно дополнить...

Не работает счетчик для последнего элемента массива
Программа должна печатать 26 символов, начиная с того, который в дефайне задан. Вот код. #include...

25
Dimension
Dimension
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
16.11.2015, 21:11 2
может double виноват
1
Aymurat
123 / 114 / 67
Регистрация: 07.11.2014
Сообщений: 786
Завершенные тесты: 9
16.11.2015, 21:14  [ТС] 3
Ошибка в коде, незначительная, не отменяет проблему, просто в ходе экспериментов осталась. Строка 15, цикл. j=0
0
castaway
Эксперт С++
4946 / 3052 / 455
Регистрация: 10.11.2010
Сообщений: 11,147
Записей в блоге: 10
Завершенные тесты: 1
16.11.2015, 21:16 4
Цитата Сообщение от Aymurat Посмотреть сообщение
Есть массив из 30 элементов
Из 29.
0
16.11.2015, 21:16
Aymurat
123 / 114 / 67
Регистрация: 07.11.2014
Сообщений: 786
Завершенные тесты: 9
16.11.2015, 21:18  [ТС] 5
Цитата Сообщение от Dimension Посмотреть сообщение
может double виноват
Нет. Уже проверял)

Добавлено через 28 секунд
Цитата Сообщение от castaway Посмотреть сообщение
Из 29.
Индексируется с 0, получается из 30 элементов, но первый элемент в [0]..
0
Dimension
Dimension
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
16.11.2015, 21:19 6
на интовых данных проверяли?а то может быть такое)
1
Миниатюры
Не работает счетчик в методе определения различающихся элементов массива  
Aymurat
123 / 114 / 67
Регистрация: 07.11.2014
Сообщений: 786
Завершенные тесты: 9
16.11.2015, 21:19  [ТС] 7
Цитата Сообщение от Dimension Посмотреть сообщение
на интовых данных проверяли?а то может быть такое)
да)
0
Dimension
Dimension
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
16.11.2015, 21:23 8
вы по несколько раз сравниваете одни и те же числа ,ответ может быть даже 29*29 ,
0
Aymurat
123 / 114 / 67
Регистрация: 07.11.2014
Сообщений: 786
Завершенные тесты: 9
16.11.2015, 21:25  [ТС] 9
Не одни и те же. К пример, 29 раз написать 1 и в последний раз, в 30-ый, написать 3. Все равно выдает огромный результат)
0
Dimension
Dimension
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
16.11.2015, 21:31 10
ну как не по несколько ,прокрутите в голове код
например есть такие цифры 1 2 3 4 5 6
первый проход сравнение 1 с 2 3 4 5 6 ,второй сравнение 2 с 2 3 4 5 6 ,третий сравнение 3 с 2 3 4 5 6 ,4 4 с 2 3 4 5 6 ,и тд

Добавлено через 28 секунд
2 с 3 и 3 с 2 ,это одно и тоже ,но у вас получится что нет
0
Aymurat
123 / 114 / 67
Регистрация: 07.11.2014
Сообщений: 786
Завершенные тесты: 9
16.11.2015, 21:31  [ТС] 11
Глубоко извиняюсь за тему. Оказывается все правильно, гыы.
29 первых элементов массиве заполняем единичками, 30 заполняем другим числом. Выйдет результ 29 и это правильно, ведь каждая единичка не равна случайной цифре. Проблема не актуальна.
0
Dimension
Dimension
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
16.11.2015, 21:32 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main() {
    const int n = 5;
    double massiv[n];
    int i, j; int proverka = 0;
    int d = 0;
    for (i = 0; i <= n; i++)
    {
        printf("Mass[%i]=", i + 1); scanf_s("%lf", &massiv[i]);
    }
    sort(massiv, massiv + n);
    for (int i = 0;i <= n;i++) {
        while (i <= n && massiv[i] == massiv[i + 1])
            i++;
        d++;
    }
    printf("Kol-vo raznyh 4isel = %i", d);
    return 0;
}
0
castaway
Эксперт С++
4946 / 3052 / 455
Регистрация: 10.11.2010
Сообщений: 11,147
Записей в блоге: 10
Завершенные тесты: 1
16.11.2015, 21:33 13
Цитата Сообщение от Aymurat Посмотреть сообщение
Индексируется с 0, получается из 30 элементов, но первый элемент в [0]..
Во первых, не надо меня учить таким элементарным вещам.
Во вторых, давай посчитаем вместе. Я приведу простой пример.
C++
1
int arr[1]; // - сколько элементов в массиве?
Правильный ответ
Один. Его единственный индекс - 0. Элемент с индексом 1 уже не валиден, т.к. под него не выделена память.


Если ты всё же настаиваешь на своём решении, то я спорить не буду, видимо ты знаешь больше меня...
1
Aymurat
123 / 114 / 67
Регистрация: 07.11.2014
Сообщений: 786
Завершенные тесты: 9
16.11.2015, 21:37  [ТС] 14
Цитата Сообщение от castaway Посмотреть сообщение
Один. Его единственный индекс - 0. Элемент с индексом 1 уже не валиден, т.к. под него не выделена память.
А почему тогда в своих кодах люди пишут int *massiv = new int[n-1];? n - кол-во элементов. А они пишут -1; вот и я привык, и даже сделал правило такое) И программа всегда срабатывает правильно...
0
Dimension
Dimension
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
16.11.2015, 21:39 15
Цитата Сообщение от Aymurat Посмотреть сообщение
29 первых элементов массиве заполняем единичками, 30 заполняем другим числом. Выйдет результ 29 и это правильно, ведь каждая единичка не равна случайной цифре
ну и бред ,а на последовательности 1 2 3 4 5 6 ,выведет 15 ,прикольно
0
castaway
Эксперт С++
4946 / 3052 / 455
Регистрация: 10.11.2010
Сообщений: 11,147
Записей в блоге: 10
Завершенные тесты: 1
16.11.2015, 21:44 16
Цитата Сообщение от Aymurat Посмотреть сообщение
А почему тогда в своих кодах люди пишут int *massiv = new int[n-1];?
У меня есть несколько версий:
1. Им надо выделить память на один элемент меньше чем n
2. Они ошибаются так же как и ты

Цитата Сообщение от Aymurat Посмотреть сообщение
И программа всегда срабатывает правильно...
Это как повезёт. Есть такое понятие как Undefined Behaviour (неопределённое поведение). Сегодня и на этой машине программа выполнится без ошибок, а завтра или на другой "упадёт".
0
Mesteriis
393 / 174 / 53
Регистрация: 08.08.2015
Сообщений: 1,230
Завершенные тесты: 1
16.11.2015, 21:46 17
Цитата Сообщение от castaway Посмотреть сообщение
другой "упадёт"
Да даже на этой через 5 минут, кто его знает что в памяти в этот момент крутится

Добавлено через 34 секунды
Так и Ось скрашить по идеи можно как повезет
0
castaway
Эксперт С++
4946 / 3052 / 455
Регистрация: 10.11.2010
Сообщений: 11,147
Записей в блоге: 10
Завершенные тесты: 1
16.11.2015, 21:53 18
Цитата Сообщение от Mesteriis Посмотреть сообщение
Так и Ось скрашить по идеи можно как повезет
Это маловероятно. ОС об этом хорошо заботится.
0
Mesteriis
16.11.2015, 22:07
  #19

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
Это маловероятно. ОС об этом хорошо заботится.
Работал в свое время в видео наблюдении и был у нас поставщик ПО и камер, супервижен что ли или еще как то, так вот он сервера заворачивал своей веб мордой именно по этой причине)))

0
castaway
16.11.2015, 22:18     Не работает счетчик в методе определения различающихся элементов массива
  #20

Не по теме:

Цитата Сообщение от Mesteriis Посмотреть сообщение
Работал в свое время в видео наблюдении и был у нас поставщик ПО и камер, супервижен что ли или еще как то, так вот он сервера заворачивал своей веб мордой именно по этой причине)))
Тут немного другое дело. Сейчас существует куча контор, которые поставляют "своё" оборудование в купе с "сырыми" драйверами. А на уровне драйвера это сделать намного легче.
Я сомневаюсь, что можно "нагнуть современную ОС Windows" простой программой, написанной на C++. Если конечно не идёт речь о XP и её ближайших родственниках.

0
16.11.2015, 22:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2015, 22:18
Привет! Вот еще темы с ответами:

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

Счетчик элементов массива
Доброго времени суток. Дали задание написать программу, которая считает количество элементов...

функция F(x) в методе определения корней уравн.
Здраствуйте. Стоит задачка найти корни уравнения. в алгоритме встречается запись вида например...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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