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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Реализовать класс "Очередь" http://www.cyberforum.ru/cpp-beginners/thread1817825.html
Помогите разобраться при создании очереди чисел все просто и понятно, к примеру есть поле value туда я помещаю числа и оттуда могу их их взять: head = new element ; tail = head; head->value = x; head->adr=0; size = 1;
C++ Реализовать поиск слова в текстовом файле Необходимо создать консольное приложение, которое по заданному пользователем слову будет обращаться в файл txt с текстом и искать заданное слово, при нахождении такого слова вывести об этом сообщение, если нет то нет, слово должно искаться с учетом регистров, даже если оно в файле будет забориком написано, как можно проще, я даун в программировании,пока что, помогите плиз http://www.cyberforum.ru/cpp-beginners/thread1817812.html
В считывание с файла возникает ошибка C++
Так случилось, что я сменил версию visual studio и работающая программа перестала нормально работать (возникает точка остановки). #include "stdafx.h" #include <iostream> #include <conio.h> #include <time.h> #include <cmath> #include <fstream> #include <algorithm> using namespace std;
Вывод пирамиды чисел в консоли C++
Подскажите как реализовать вывод вот такой пирамиды чисел: ___1___ __121__ _12321_ 1234321 ....
C++ Выбрать вариант не имеющий ошибки и к каждому написать почему этот вариант правильный/неправильный http://www.cyberforum.ru/cpp-beginners/thread1817794.html
Прошу помогите, я плохо понимаю c++, да и простите если не в той теме, в общем, дали задание: Выбрать вариант не имеющий ошибки и к каждому написать почему этот вариант правильный/неправильный. (а) if (num == 10) else num = 0; (c)
C++ Вывести на консоль подстроку, ограниченную заданными символами есть строка, которая выглядит так: "admin::::Владислав,Павленко: pavlenko2k16" как вывести на экран имя, которое находится между "::::" и ","? Добавлено через 31 минуту сделал делив текст string str = database;//ïðèñâàèâàåì string separ(","); //ðàçäåëèòåëü string::size_type pos = str.find(",");//èùåì ïîëîæåíèå ðàçäåëèòåëÿ string first = str.substr(0, pos);//äî ðàçäåëèòåëÿ ... подробнее

Показать сообщение отдельно
gru74ik
Модератор
 Аватар для gru74ik
3113 / 1339 / 166
Регистрация: 20.02.2013
Сообщений: 3,801
Записей в блоге: 17
02.10.2016, 19:46     Насколько плохо написан код?
Цитата Сообщение от pavlenko2k16 Посмотреть сообщение
написал программу с горем да пополам, но появился вопрос о ее качестве. насколько плохо она написана?
pavlenko2k16, очень плохо.

По порядку:
  1. лучше использовать либо сишные строки, либо std::string
    ...
  2. для сишных строк в плюсах используй вместо
    C++
    1
    
    #include <string.h>
    вот такой вариант:
    C++
    1
    
    #include <cstring>
  3. для плюсовых строк (которые std::string) подключай вот этот заголовочный файл:
    C++
    1
    
    #include <string>
  4. лучше не использовать директиву using:
    C++
    1
    
    using namespace std;
    вместо этого лучше использовать либо объявления using:
    C++
    1
    2
    3
    
    using std::cout;
    using std::cin;
    using std::string;
  5. 10-12 строки - отвратительны, читать такое неудобно; хотя бы уж так:
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    char* database[] =
        {
            "admin::::Владислав,Павленко:pavlenko2k16",
            "VKopturov::::Владислав, Коптуров:KopturovV",
            "MZadoyan::::Мирослав, Задоян:ZadoyanM",
            "DZinenko::::Данил, Зиненко:ZinenkoD",
            "NIlchenko::::Николай, Ильченко:IlchenkoN",
            "OKoval::::Олег, Коваль:KovalO",
            "MMalukov::::Михаил, Малюков:MalukovM",
            "LMedzhina::::Любовь, Меджина:MedzhinaL",
            "EYaremchenko::::Евгений, Яремченко:YaremchenkoE",
            "DKolpakova::::Дарья, Колпакова:KolpakovaD"
        };
  6. после операторов for, if else, while вставляй пробел, а фигурные скобки располагай согласно одному из стилей
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    // либо так:
    for ( ; ; ) {
        // some code here
    }
     
    //либо так:
    for ( ; ; )
    {
        // some code here
    }
  7. не стоит скупиться на пробелы и пустые строки, разделяющие логические блоки кода; отступы тоже стоит делать единообразно:
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    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;
            {
        }
    }
  8. вместо goto используй циклы
    ...
  9. логически и функционально связанные блоки кода выделяй в отдельные функции
 
Текущее время: 20:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru