8 / 8 / 3
Регистрация: 22.09.2012
Сообщений: 179
1

Нужно объяснить программу, т.е. какие процессы проходят

20.11.2012, 13:17. Показов 556. Ответов 5
Метки нет (Все метки)

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
// Laboratornaya_3.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <string>
#include <conio.h>
#include <stdio.h>
using namespace std;
int enterMenu();    //объявление функции
 
int menu(char *str, bool p) //главное меню
{
    int k = 0;  //номер пункта меню
    for(;;){
        cout << "1.Ввести строку." << endl;
        cout << "2.Подсчитать количество знаков." << endl;
        cout << "3.Вывести результат." << endl;
        cout << "4.Удалить строку." << endl;
        cout << "5.Выход." << endl;
        cout << "_______________________________________________________________________________" << endl;
        k = enterMenu();
        if (k>0 && k<6)
            break;
        else
            cout << "ОШИБКА! Неверный номер пункта, повторите ввод." << endl;
            cout << "_______________________________________________________________________________" << endl;
    }
    switch (k){
        case 1:
            return k;
        case 2:
            if (strlen(str)>1)
            {
                return k;
            }
            else
            {
                cout << "ОШИБКА! Строка не введена." << endl;
                cout << "_______________________________________________________________________________" << endl;
                break;
            }
        case 3:
            if (p)
                return k;
            else
                {
                    cout << "ОШИБКА! Знаки не подсчитаны." << endl;
                    cout << "_______________________________________________________________________________" << endl;
                    break;
                }
        case 4:
            if (strlen(str)>1)
            {
                return k;
            }
            else
            {
                cout << "ОШИБКА! Строка не введена." << endl;
                cout << "_______________________________________________________________________________" << endl;
                break;
            }
        case 5:
            return k;
    }
    return 0;
}
 
int enterMenu() //Выбор номера пункта меню
{
    int s = 0;
    do {
            cout << "Введите номер пункта: ";
            cin.clear();    //сброс битов ошибок входного стандартного потока
            cin.sync(); //очищение буфера стандартного ввода
            cin >> s;
        } while( cin.fail() );  //проверка на ошибку предыдущего ввода со стандартного потока
    return s;
}
 
 
char *enterStr(char *str)
{
    char ch = 0;
    while (true)
    {
        ch = _getch();
        cout << ch;
        if (ch == 13)
            break;
        int len = strlen(str);
        char *tmp = new char[len+2];
        strcpy(tmp, str);
        tmp[len] = ch;
        tmp[len+1] = '\0';
        delete [] str;
        str = tmp;
    }
    cout << endl;
    return str;
}
 
int signCh(char *str, bool &p)
{
    int count = 0;
    char c[] = {',','.','<','>','{','}','[',']','(',')','?','\"',';',':','!','@','#','$','%','^','&','*','|','/','\n'};
    for (int i = 0; i < strlen(str); i++)
    {
        int m = 0;
        while (c[m] != '\n')
        {
            if (str[i] == c[m++])
                count++;
        }
    }
    p = true;
    return count;
}
 
void showResult(char *str, int count)
{
    cout << "В строке: \"" << str << '\"' << ' ' << "Знаков пунктуации: " << count << endl;
    cout << "_______________________________________________________________________________" << endl;
}
 
char *delStr(char *str, bool &p)
{
    p = false;
    delete [] str;
    str = new char[1];
    str[0] = '\0';
    return str;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char *str = new char[1];
    str[0] = '\0';
    int count = 0;
    bool p = false;
    while (true)
    {
        int num = menu(str, p);
        if (num == 1)
        {
            str = delStr(str, p);
            str = enterStr(str);
        }
        else if (num == 2)
        {
            count = signCh(str, p);
        }
        else if (num == 3)
        {
            showResult(str, count);
        }
        else if (num == 4)
        {
            str = delStr(str, p);
        }
        else if (num == 5)
            return 0;
    }
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2012, 13:17
Ответы с готовыми решениями:

Нужно объяснить преподавателю задачу с языка С++ на человеческий язык. Какие формулы я брал, как решается задача поэтапн
Определить объём симметричной игрушки , состоящей из n дисков , нанизаных в порядке убывания их...

Нужно объяснить программу
Пытаюсь сдать лабу по програмированию,нашел программу в инете,работает,но хоть убейте не могу...

Помогите добить задачу) Не проходят некоторые тесты (неизвестно какие)
Здравствуйте. Собственно есть несложная задача по программированию. Решил как полагается в...

Магазин видеоигр. Что нужно для функционирования магазина. Какие таблицы должны быть, какие запросы и какие отчеты
Я очень сильно запутался и я не могу себе представить, что нужно для функционирования магазина....

5
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
20.11.2012, 13:22 2
объясняйте, мы внимательно слушаем
1
8 / 8 / 3
Регистрация: 22.09.2012
Сообщений: 179
20.11.2012, 13:54  [ТС] 3
Очень смешно смеяться над нубом, который начинает только программировать и нашёл интересный пример из книги. Ты прям Евгений Ваганыч
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
20.11.2012, 14:11 4
да действительно как это я так облажался, я же телепат и точно знаю, что конкретно вы не понимаете.

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

Чтобы восстановить эти требования по коду необходимо написать комментарии к методам. Думаю что врятли у кого то найдётся столько времени, чтобы для вас комментировать каждую строчку. Поэтому я советую написать вам комментарии к тому что вы понимаете. или вы уже это сделали?
0
8 / 8 / 3
Регистрация: 22.09.2012
Сообщений: 179
20.11.2012, 14:14  [ТС] 5
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
char *delStr(char *str, bool &p)
{
    p = false;
    delete [] str;
    str = new char[1];
    str[0] = '\0';
    return str;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char *str = new char[1];
    str[0] = '\0';
    int count = 0;
    bool p = false;
    while (true)
    {
        int num = menu(str, p);
        if (num == 1)
        {
            str = delStr(str, p);
            str = enterStr(str);
        }
        else if (num == 2)
        {
            count = signCh(str, p);
        }
        else if (num == 3)
        {
            showResult(str, count);
        }
        else if (num == 4)
        {
            str = delStr(str, p);
        }
        else if (num == 5)
            return 0;
    }
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
20.11.2012, 14:20 6
как бы очевидно, что пользователь достигает своей цели когда вызывается showResult(). это и является ключевым моментом в программе. естественно, что без вызова signCh мы не получим правильный результат
0
20.11.2012, 14:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2012, 14:20
Помогаю со студенческими работами здесь

Какие числа нужно ввести в приведенную программу?
const n=100; var a:array of integer; m,i,j:byte; ch,c:integer; begin for i:=1 to n...

Какие условия нужно внести в программу, чтобы она верно выполнилась?
n=int(input('n= ')) if n==???: print('Ноль - однозначное число') else: n&gt;???: ...

Какие процессы лишние
Доброй ночи! Как вы думаете какие процессы лишние, и их можно удалить. Вроде все почистил лишнее :)

Какие процессы мне не нужны
Подскажите какие процессы мне не нужны, пожалуйста. Прошу перечень только необходимых(из моих)!!!...

Переходные процессы. Какие они бывают?
Мы проходили переходные процессы 1ого порядка(с источниками постоянного/переменного воздействия) и...

какие процессы и службы можно отключить?
Вот скрины, подскажите пожалуйста что можно отключить )))


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

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

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