Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Поиск элемента в списке. Есть список, который содержит объекты класа type. Мне нужно найти в этом списке объект, который будет отвечать некоторым условиям. Пробую реализовать это с помощью рекурсии type GetUnit(std::list<type*> List, std::list<type*>::iterator itr) { if ((*itr)) { if <условие> return itr; if (itr != List.end()) { https://www.cyberforum.ru/ cpp-beginners/ thread362908.html C++ Предварительное объявление
Добрый вечер, Есть файл file.h и file.cpp, в file.cpp я делаю подключение #include <boost/signal.hpp>, не подключаю в хэдер file.h умышленно, потому что этот хэдер подключается в много других файлов, проблема состоит в том чтобы в file.h объявить указатель на сигнал Signal *errorSignal; пробовал сделать предварительное объявление в file.h так: namespace boost { class signal<void...
C++ Введите с клавиатуры данные о температуре воздуха за месяц. Определите, сколько раз за месяц была самая низкая температура? Собственно, проходим циклы, возникли проблемы с этой задачей. Нуждаюсь в вашей помощи. https://www.cyberforum.ru/ cpp-beginners/ thread362890.html C++ getline https://www.cyberforum.ru/ cpp-beginners/ thread362887.html
Я считываю число из входного потока, но дальше из входного потока уже не могу считать строку. Его надо очищать что ли? #include <stdafx.h> #include <iostream> #include <locale.h> #include <string> using namespace std; int main()
С чего начать программирование? C++
Не нашёл тему, уж извините. Проблема в том, что: Я не знаю программирования. Впринципе. Мне посоветовали С++. Как думаете? Стоит ли начинать именно с него или с чего то другого?
C++ Быстрое чтение и запись файлов Вопрос такой: имеется файл input.txt следующего вида: 5 12 6 7 44 2 1 2 3 4 5 2 343 634 54 1 123 2 345 56 56 11111 2222 333 44 5 https://www.cyberforum.ru/ cpp-beginners/ thread362874.html
C++ Уравнение с тремя переменными С++ Уважаемые форумчане, помогите решить задачу на С++. Задано уравнение третьей степени 11*x*x*x-13*y*y*y+17*z*z*z-4503=0 Определить, имеет ли оно решение в целых числах. Если имеет, то сколько их и чему они равны. кроме того обязательным условием является использование в коде подпрограммы. Сам я написал вот такой "сложный" код с двумя вложенными циклами без всяких подпрограмм, в результате... https://www.cyberforum.ru/ cpp-beginners/ thread362850.html C++ Две не сложные задачки
1. Составьте программу, определяющую остаток от деления числа А на число В. 2. Даны два различных вещественных числа. Определить какое из них меньше. ЗАРАНЕЕ СПАСИБО
C++ Считывание математического выражения из файла и его выполнение Всем привет! Нужно сделать программу, которая бы считывала математическое выражение из файла input.txt, и записывала результат в output.txt Вот что я сделал: #include <iostream.h> #include <stdio.h> int main() https://www.cyberforum.ru/ cpp-beginners/ thread362802.html C++ работа с файлами https://www.cyberforum.ru/ cpp-beginners/ thread362787.html
подскажите как можно сохранить/считать с файла *.dat и чтобы этот файл не смогли прочесть(даже открыть) другие пользователи.
C++ Вычислить значение выражения
2. Вычислите значения выражений при int x = 7, y = 10: a) x & y; b) x | y; c) x ^ y; d) ~x;
C++ Помогите со структурами (дописать программу) Структуры вводятся с клавиатуры. В ряде вариантов заданий с клавиатуры вводится не вся структура, а только ее отдельные поля. Необходимо выполнить обработку сформированного массива структур и результаты обработки вывести на экран дисплея. Массив должен содержать сведения о книгах. Каждая структура должна иметь следующие поля: автор (авторы), название, год издания, цена и издательство. Вывести... https://www.cyberforum.ru/ cpp-beginners/ thread362772.html
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
09.10.2011, 01:54 0

Покритикуйте пожалуйста программу - C++ - Ответ 2053184

09.10.2011, 01:54. Показов 1654. Ответов 20
Метки (Все метки)

Ответ

Цитата Сообщение от MrGluck Посмотреть сообщение
Student(char *n, char *s, char *p, char *d, char *a, int st);
Все параметры типа char* предназначенные только для чтения должны быть объявлены c модификатором const.
C++
1
2
Student(const char *n, const char *s, const char *p, 
        const char *d, const char *a, int st);
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Student::Student(char *n, char *s, char *p, char *d, char *a, int st)
{
    name = new char [strlen(n) + 1];
    strcpy(name, n);
    surname = new char [strlen(s) + 1];
    strcpy(surname, s);
    patronymic = new char [strlen(p) + 1];
    strcpy(patronymic, p);
    date = new char [strlen(d) + 1];
    strcpy(date, d);
    adress = new char [strlen(a) + 1];
    strcpy(adress, a);
    stip = st;
    is_free = true;
}
дублирование кода так и осталось... Всё это следовало бы переписать вот так
C++
1
2
3
4
5
char* cstrdup(const char *src)
{
    char *dest = new char[ strlen(src) + 1 ];
    return strcpy(dest, src);
}
C++
1
2
3
4
5
6
7
8
9
10
11
Student(const char *n, const char *s, const char *p, 
        const char *d, const char *a, int st)
{
    name = cstrdup(n);
    surname = cstrdup(s);
    patronymic = cstrdup(p);
    date = cstrdup(d);
    adress = cstrdup(a);
    stip = st;
    is_free = true;
}
конструтор копий
C++
1
2
3
4
5
6
7
8
9
10
Student::Student(const Student &s)
{
    name = cstrdup(s.name);
    surname = cstrdup(s.surname);
    patronymic = cstrdup(s.patronymic);
    date = cstrdup(s.date);
    adress = cstrdup(s.adress);
    stip = s.stip;
    is_free = s.is_free;
}
оператор присваивания
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Student &Student::operator = (const Student &s)
{    
    // проверка на присваивание объекта самому себе
    if(&s == this) 
        return *this;
 
    // очищаем выделенную ранее память(можно назвать этот метод как-то более удачно...)
    cleanUp(); 
 
    name = cstrdup(s.name);
    surname = cstrdup(s.surname);
    patronymic = cstrdup(s.patronymic);
    date = cstrdup(s.date);
    adress = cstrdup(s.adress);
    stip = s.stip;
    is_free = s.is_free;
    
    return *this;
}
private метод cleanUp
C++
1
2
3
4
5
6
7
8
void Student::cleanUp()
{
    delete[] name;
    delete[] surname;
    delete[] patronymic;
    delete[] date;
    delete[] adress;
}
деструктор
C++
1
2
3
4
Student::~Student()
{
    cleanUp();
}


Вернуться к обсуждению:
Покритикуйте пожалуйста программу C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2011, 01:54
Готовые ответы и решения:

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

Шифратор пароля. Покритикуйте пожалуйста.
Это моя первая программка на С++, если кому не лень, натычте меня носом в ляпы. Чтобы не топтаться...

Покритикуйте, пожалуйста
Написала свой пермутатор. Мне нравится. Но понимаю, конечно, что найдется много разных косяков....

Покритикуйте, пожалуйста!
Уважаемые форумчане! Есть ресурс - vladeniya.tv. Ваше мнение? Привлекателен ли он в таком виде для...

20
09.10.2011, 01:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2011, 01:54
Помогаю со студенческими работами здесь

Покритикуйте пожалуйста
Всем добрейшего вечера уважаемые знатоки! Решил собрать себе десктоп для онлайн...

Покритикуйте пожалуйста
Для начала соответстие правилам: Добавленая ценность - ХЗ кому это полезно, но с чего-то...

Покритикуйте пожалуйста
Здравствуйте. Моя первая разведеная плата - покритикуйте пожалуйста. Это просто штука на 48 меге...

Покритикуйте вёрстку, пожалуйста
Здравствуйте. Оцените, пожалуйста, вёрстку. Жесткая критика приветствуется. Возникли трудности:...

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