Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 1 / 2
Регистрация: 24.09.2016
Сообщений: 144

Насколько плохо написан код?

02.10.2016, 18:41. Показов 2145. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
написал программу с горем да пополам, но появился вопрос о ее качестве. насколько плохо она написана? стояла такая задача:
программа содержит массив строк, каждый из которых представляет собой запись про учетную запись пользователя, а каждое поле отделяется от другого двоеточием. известно, что первое поле сохраняет логин, пятое - имя и фамилию через запятую, а шестое - пароль
запросить логин пользователя. если логин неизвестный, то запросить логин заново. предусмотреть выход из программы если будет введено слово "bye". Если логин найдено в массиве, то вывести поздравление со значением имени и попросить ввести пароль. по результатам проверки пароля вывести на экран сообщение об успешной авторизации или дать пользователю дополнительную попытку. предусмотреть не более двух дополнительных попыток.
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 <string.h>
#include <fcntl.h>
#include <algorithm>
using namespace std;
int main () {
    setlocale (0, "");
    int i=0;
    char login[15], password[25];
    char* database[] = {"admin::::Владислав,Павленко:pavlenko2k16","VKopturov::::Владислав, Коптуров:KopturovV","MZadoyan::::Мирослав, Задоян:ZadoyanM",
    "DZinenko::::Данил, Зиненко:ZinenkoD","NIlchenko::::Николай, Ильченко:IlchenkoN","OKoval::::Олег, Коваль:KovalO","MMalukov::::Михаил, Малюков:MalukovM",
    "LMedzhina::::Любовь, Меджина:MedzhinaL","EYaremchenko::::Евгений, Яремченко:YaremchenkoE","DKolpakova::::Дарья, Колпакова:KolpakovaD"}; // Задаем пользователей
    start:
    for(;;){
        cout << " Введите логин: "; // Просим ввести логин
        cin.getline(login, 15); // Принимаем ввод
        if (strcmp(login, "bye") == 0)
        exit(0);
        for (i=0; i<10; i++) { // Проверяем логин в каждой строке
        char* num = strchr(database[i], ':'); //ищет номер первого входа : в строку
         if (strncmp(database[i],login,num-database[i])==0) // если логин и элементы до первого входа : совпадают - переход к приветствию
        goto privetstvie;
        }
}
privetstvie:
    
    cout<<"Введите пароль, ";
    string str = database[i];//присваиваем 
    string separ(","); //разделитель
    string::size_type pos = str.find(",");//ищем положение разделителя
    string first = str.substr(0, pos);//до разделителя
    string second = str.substr(pos+separ.length());//после разделителя
    string separate("::::"); //разделитель
    string::size_type pos3 = str.find("::::");//ищем положение разделителя
    string five = first.substr(0, pos3);//до разделителя
    string six = first.substr(pos3+separate.length());//после разделителя
    cout <<six<<endl;
    cout<<pos3<<" pos3";
    
    string separat(":"); //разделитель
    string::size_type pos2 = second.find(":");//ищем положение разделителя
    string third = second.substr(0, pos2);//до разделителя
    string fourth = second.substr(pos2+separat.length());//после разделителя
 
    int n=0;
    while (n<=2) { //ставим счетчик на 3 попытки
    n++;
    cout<<endl <<"Пароль: ";
    cin.getline(password, 25); //вводим пароль
    if (fourth==password) { //сравниваем пароль
    cout<<"Вход выполнен!";
    exit(0);
    }
}
goto start;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2016, 18:41
Ответы с готовыми решениями:

Код написан в Dev C. Не работает в Visual. Как нужно переделать код?
Здравствуйте. Столкнулась с такой проблемой: код был написан в Dev C, но в Visual он выдаёт ошибку. ...

как исправить код на динамический массив-код уже написан только на статическом
#include &lt;iostream&gt; #include &lt;iostream&gt; #include &quot;string.h&quot; using namespace std; const int N = 100; //максимальна длина...

правильно ли написан код в с++?
#include &lt;iostream&gt; #include &lt;map&gt; #include &lt;fstream&gt; using namespace std; int main() { map &lt;char,int&gt; chars; ...

26
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
03.10.2016, 13:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от gru74ik Посмотреть сообщение
А возвращаясь к вопросу ТС? Насколько плохо написан его код? На что бы стоило обратить внимание чисто стилистически и концептуально?
Я думаю что нужно выработать свой стиль приближенный к стилю большинства программистов. Без заскоков в ту или иную сторону.

Добавлено через 7 минут
Вот мой стиль. Стандарт, читается легко (я так думаю)
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
// *.h
 
#include "IState.h"
 
#ifndef DEFINE_STATE_MACHINE
#define DEFINE_STATE_MACHINE
 
namespace lexer
{
    class StateMachine
    {
    public:
        StateMachine();
        ~StateMachine();
 
        void Set(char);
        void Reset();
 
        StateId GetState() { return stateId; }
 
    private:
        static const int size = 4;
        IState* states[size];
 
        StateId stateId;
 
        static StateId Skip(char);
        StateId CheckState();
    };
}
 
#endif
 
// *.cpp
 
#include "StateMachine.h"
 
#include "StateFunction.h"
#include "StateName.h"
#include "StateNumber.h"
#include "StateOperation.h"
 
#include <cctype>
 
lexer::StateMachine::StateMachine()
{
    states[0] = new StateFunction();
    states[1] = new StateName();
    states[2] = new StateNumber();
    states[3] = new StateOperation();
 
    stateId = StateId::NON;
}
lexer::StateMachine::~StateMachine()
{
    for (int i = 0; i < size; i++)
        delete states[i];
}
 
void lexer::StateMachine::Set(char ch)
{
    for (int i = 0; i < size; i++)
        states[i]->Set(ch);
 
    stateId = CheckState();
 
    if (stateId == StateId::BAD)
        stateId = Skip(ch);
}
void lexer::StateMachine::Reset()
{
    for (int i = 0; i < size; i++)
        states[i]->Reset();
 
    stateId = StateId::NON;
}
 
lexer::StateId lexer::StateMachine::Skip(char ch)
{
    switch (ch)
    {
    case '^':
    case '*':
    case '/':
    case '+':
    case '-':
    case ';':
    case '(':
    case ')':
        return StateId::BAD;
 
    default:
        if (isspace(ch) )
            return StateId::BAD;
    }
 
    return StateId::NON;
}
 
lexer::StateId lexer::StateMachine::CheckState()
{
    for (int i = 0; i < size; i++)
        if (!states[i]->Good() && !states[i]->Bad() )
            return StateId::NON;
 
    for (int i = 0; i < size; i++)
        if (states[i]->Good() )
            return states[i]->GetId();
 
    return StateId::BAD;
}
0
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
03.10.2016, 13:08
_stanislav, всем не угодишь, лучше зарекомендовать себя как знатока, чтоб никто не смел делать замечания, и составлять для остальных требования к формированию и оформлению кода.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
03.10.2016, 13:11
без стандартов далеко не уедешь. (хаос)
0
03.10.2016, 23:43

Не по теме:


Цитата Сообщение от Убежденный Посмотреть сообщение
используется "умный" diff
Честно, я про такой даже и не знал. Я руководствовался мнением DrOffset, которое я приводил выше и вот этой темой коллеги 0x10.
Отчего же таким diff'ом не пользуются все тогда? Или это какое-то ноу-хау?

0
04.10.2016, 00:04

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
Отчего же таким diff'ом не пользуются все тогда?
Этот вопрос из той же серии, что священная война "табы против пробелов", где апологеты табов тоже приводят аргументом использование инструментов, которые их (табы) "правильно" интерпретируют. Тем не менее, война не утихает.

Добавлено через 1 минуту
PS. Не встречал ни одного автоформаттера, который бы не "косячил" на исходном сложном форматировании. Особенно в коде на С++.

Добавлено через 15 минут
Впрочем, мое мнение уж чересчур демонизировали здесь. Никакого Diff-Driven-Development я ввиду не имел и не предлагал; конечно же инструменты для дела, а не дело для инструментов (всех вопросов жизни касается). Но везде должна быть мера.

0
Падаван С++
 Аватар для obivan
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
04.10.2016, 00:27
Хочу сказать свое мнение ТС`у, многие начинающие программисты любят интересоватся у других, насколько хорошо написан код и тд. , я лично считаю так, во первых к коду нужно относится как к творчеству, и всю "красоту" которую вы там делаете сравнивать с мазками кисти

как по мне:
C++
1
2
3
4
for(int i(0); i < 10; ++i) {
    cosf(a);
    sinf(b);
}
выглядит явно лучше чем:

C++
1
for(int i(0); i<10;++i) {cosf(a);sinf(b);}
старайтесь наводить порядок в своем коде, НО не стоит забывать такую вещь как удобность для самого себя, если вам самому удобнее второй вариант, то пишите так, при условии если вы не показываете код другим, а если вы хотите вылаживать его на дискус, то стоит придерживатся общих "рекомендаций" по форматированию кода, чтобы другим было легче его разбирать, но это не значит, что эти рекомендации есть правила, вообщем я хотел донести такую мысль, каждого художника учат рисовать и двигать рукой одинаково, но потом каждый рисует по своему и с кодом так же как по мне
0
04.10.2016, 03:17

Не по теме:

я вам скажу просто а вы сами думайте , я люблю когда в корень смотрят, мозг не понимает, он приспосабливается.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.10.2016, 03:17

Неправильно написан код
Функция должна находить простые числа в заданном массиве. Выходит что-то вроде 003С100 .. void f1 (int*mas) { int size =...

Правильно ли написан код
Извините, подправьте плиз, всем заранее огромное спасибо #include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; ...

Правильно ли написан код .cpp?
Вот сам код #define _CRT_SECURE_NO_WARNINGS #include &lt;Windows.h&gt; #include &lt;HCNetSDK.h&gt; #include &lt;memory&gt; #include...

Этот код написан на С++ или Delphi?
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include...

Код написан,нужна небольшая корректировка.Массивы
Задана матрица размером N×M, N,M&lt;50. Получить массив B, присвоив его k-му элементу значение 1, если элементы k–й строки матрицы ...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru