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

Подсказать по коду программы - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Ivan1990
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
05.11.2012, 18:10     Подсказать по коду программы #1
Нашел тут на форуме программу, которая почти подходит под мое условие, но в ее коде не совсем понимаю, прошу помочь разобраться. Если кому не сложно, напишите к строчкам комментарии, что они делают, или в другом удобном вам виде.
В частности, не понятно где именно в коде, идет добавление элементов, например я задаю первый, а где задаются последующие. А также, что выполняется в этом куске:
Array + currentSlip, Array + N, Array[currentSlip]);

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <algorithm>
 
const int N = 5;
 
int handSet(void)
{
    int a;
    std::cout << "Введите число: ";
    std::cin >> a;
    return a;
}
 
void SetArray(int * Array)
{
     std::generate(Array, Array + N, handSet);
}
 
int MakeCalculations(int * Array)
{
    std::sort(Array, Array + N);
 
    int currentSlip = 0;
    int count_Of_Elements_That_Meets_More_Than_Once = 0;
    while (currentSlip < N)
    {
        int count = std::count(Array + currentSlip, Array + N, Array[currentSlip]);
        if (count > 1)
            ++count_Of_Elements_That_Meets_More_Than_Once;
        currentSlip += count;
    }
    return count_Of_Elements_That_Meets_More_Than_Once;
}
 
void ShowResult(int X)
{
    std::cout << "\n\n" << "Число элементов, встречающихся в последовательности более 1го раза: " <<
        X << "\n\n";
}
 
int main(void)
{
    setlocale(LC_ALL,"Russian");
 
    int Array[N];
    SetArray(Array);
 
    std::cout << "Исходная последовательность: " << '\n';
    std::copy(Array, Array + N, std::ostream_iterator<int>(std::cout, " "));
 
    int count_Of_Elements_That_Meets_More_Than_Once = MakeCalculations(Array);
 
    ShowResult(count_Of_Elements_That_Meets_More_Than_Once);
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2012, 18:10     Подсказать по коду программы
Посмотрите здесь:

C++ Прошу подсказать в чем ошибка
Посоветуйте программу для составления блок схем по коду программы. C++
Где найти несложные программы для windows desktop, с доступом к исходному коду? C++
C++ Составление алгоритма по коду программы
C++ Кто нибудь можете подсказать, есть ли вообще программы конверторы с языка c++ в паскаль
Блок-схема по коду программы C++
Блок схема по коду программы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
06.11.2012, 19:43     Подсказать по коду программы #21
Цитата Сообщение от David Sylva Посмотреть сообщение
Неправда, попробуй откомпилируй код.
ладно, не разглядел i+1
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
06.11.2012, 19:44     Подсказать по коду программы #22
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
ладно, не разглядел i+1
бывает
Ivan1990
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
06.11.2012, 19:51  [ТС]     Подсказать по коду программы #23
David Sylva, у меня почему-то результат не выводит. После ввода последовательности консоль закрывается.
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
06.11.2012, 19:56     Подсказать по коду программы #24
Попробуй дописать в конце программы
System ("Pause");
Ivan1990
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
06.11.2012, 20:06  [ТС]     Подсказать по коду программы #25
Работает, и еще вопрос, данный вариант от найденного в другой теме отличается только тем, что код проще?
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
06.11.2012, 20:12     Подсказать по коду программы #26
По сути да, но конечно правильней делать так как в предыдущей темы, но то что используется в той программе я думаю вы ещё не знаете.
Ivan1990
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
07.11.2012, 20:46  [ТС]     Подсказать по коду программы #27
Выявилась проблема в программе: если вводить символ два раза, то все работает нормально, но если, например, построить последовательность из трех элементов, и ввести все три единицы, то программа выдает, что элементов встреч. больше одного раза - 2, а должнен быть один. Хотел сделать с помощью третьей переменной, но не получилось. Есть еще вариант с массивом, чтобы программа после проверки символа отбрасывала его в другой массив и тд., но не знаю как реализовать. Ниже скинул код немного переделанной(добавлен выбор размера последовательности)

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <locale>
#include <math.h>
 
using namespace std;
 
int* enter(int* array1, int n) 
{  
    int i; 
 
    for ( i = 0; i < n; i++) 
    { 
        cout << "Введите элемент [" << i << "] "; 
        cin >> array1[i]; 
    } 
    return array1;
}   
 
int Count(int* array, int n) 
{ 
    int i, j;
    int count = 0; 
    for ( i = 0; i < n; i++)  
        for ( j = 1+i; j < n; j++)  
            if(array[i] == array[j])
            {
                count++; 
                break;  
                cout << count << endl;
            } 
           return count;
}
 
 
void show(int* array1, int n) 
{  
    int i; 
 
    for ( i = 0; i < n; i++) 
        std::cout << array1[i] << " "; 
    cout << endl;
}
 
int main() 
{   
    int n;
    setlocale(0, "rus");
    cout << "n="; 
    cin >> n;
    const int N = 100; 
    int array1[N];  
    enter(array1, n); 
    show(array1, n);  
    cout <<"Число элементов встречающихся больше одного раза  " << Count(array1, n) <<endl;
    system ("Pause"); 
}
Ivan1990
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
11.11.2012, 17:23  [ТС]     Подсказать по коду программы #28
Можно ли и как сделать с массивом?
Ivan1990
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
12.11.2012, 21:02  [ТС]     Подсказать по коду программы #29
Можно ли и как сделать с массивом?
SoSPB
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 21
13.11.2012, 16:57     Подсказать по коду программы #30
Срочно надо ((
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
13.11.2012, 16:59     Подсказать по коду программы #31
Цитата Сообщение от SoSPB Посмотреть сообщение
Срочно над
Что срочно надо?
SoSPB
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 21
13.11.2012, 17:07     Подсказать по коду программы #32
почему то не отправилось первое сообщение, можно сделать, чтобы такая программа, брала числа из текстового файла? мне нужно по коду, который из моей темы, здесь как я понял его переделывали. Очень надо, можно или нет?
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
13.11.2012, 17:11     Подсказать по коду программы #33
Цитата Сообщение от SoSPB Посмотреть сообщение
почему то не отправилось первое сообщение, можно сделать, чтобы такая программа, брала числа из текстового файла? мне нужно по коду, который из моей темы, здесь как я понял его переделывали. Очень надо, можно или нет?
Напиши полностью своё задание.
SoSPB
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 21
13.11.2012, 17:15     Подсказать по коду программы #34
Нет задания, мне надо знать(и если понадобится ответить), может или нет, собственно и спрашиваю
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
13.11.2012, 17:17     Подсказать по коду программы #35
конечно можно.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
13.11.2012, 17:35     Подсказать по коду программы #36
Цитата Сообщение от SoSPB Посмотреть сообщение
Срочно надо ((
А тебе то что надо? ты ж не ТС.
Ivan1990
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
13.11.2012, 18:01  [ТС]     Подсказать по коду программы #37
Как сделать, чтобы она правильно работала? Пробовал с третьей переменной- не получается. Ввожу последовательность из 3 элементов, все единицы - выдает, что больше одного раза встречаются два элемента, а на самом деле один. Мне сказали ,что можно сделать введя еще один массив, чтобы после проверки элементы отидывались в него.
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
13.11.2012, 18:04     Подсказать по коду программы #38
Цитата Сообщение от Ivan1990 Посмотреть сообщение
Как сделать, чтобы она правильно работала?
кто она?
Ivan1990
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
13.11.2012, 18:06  [ТС]     Подсказать по коду программы #39
David Sylva, Программа
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <locale>
#include <math.h>
 
using namespace std;
 
int* enter(int* array1, int n) 
{  
    int i; 
 
    for ( i = 0; i < n; i++) 
    { 
        cout << "Введите элемент [" << i << "] "; 
        cin >> array1[i]; 
    } 
    return array1;
}   
 
int Count(int* array, int n) 
{ 
    int i, j;
    int count = 0; 
    for ( i = 0; i < n; i++)  
        for ( j = 1+i; j < n; j++)  
            if(array[i] == array[j])
            {
                count++; 
                break;  
                cout << count << endl;
            } 
           return count;
}
 
 
void show(int* array1, int n) 
{  
    int i; 
 
    for ( i = 0; i < n; i++) 
        std::cout << array1[i] << " "; 
    cout << endl;
}
 
int main() 
{   
    int n;
    setlocale(0, "rus");
    cout << "n="; 
    cin >> n;
    const int N = 100; 
    int array1[N];  
    enter(array1, n); 
    show(array1, n);  
    cout <<"Число элементов встречающихся больше одного раза  " << Count(array1, n) <<endl;
    system ("Pause");
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2012, 18:22     Подсказать по коду программы
Еще ссылки по теме:

Есть ли программы для построения блок-схем по коду с++? C++
C++ Создать блок-схему по коду программы
Построение блок-схем по коду программы C++
C++ Можете подсказать по поводу задачи?

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

Или воспользуйтесь поиском по форуму:
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
13.11.2012, 18:22     Подсказать по коду программы #40
Всё понял, увидел где ошибка, можно сделать с массивами, но это будет коряво.
Yandex
Объявления
13.11.2012, 18:22     Подсказать по коду программы
Ответ Создать тему
Опции темы

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