Conversation
GKuzzinshtern
left a comment
There was a problem hiding this comment.
В общем, там где мои мысли повторялись, я их уже не писал.
Хочу отметить, что нежелательно использовать имена переменных типа i,j,k даже если на данный момент это однозначный маленький цикл. Он со временем может наполнится еще кодом и читатели будут гадать что означает эта буква. Короткое содержательное имя - будет самое то! :)
homework3.cpp
Outdated
| } | ||
|
|
||
| bool is_dgt(char var) { | ||
| int dec_v = static_cast<int>(var); |
There was a problem hiding this comment.
можно пользоваться операторами сравнения для char. Не стоит их кастить в данном случае к int
There was a problem hiding this comment.
сравнивать что символ является числом? 10 сравнений?)
There was a problem hiding this comment.
if (var >= '0' && var <= '9') - начить это цифра
homework3.cpp
Outdated
| } | ||
|
|
||
| void reverse_str() { | ||
| constexpr int arr_len{100}; |
There was a problem hiding this comment.
для размеров можно использовать size_t вместо int
There was a problem hiding this comment.
это наверное дело вкуса?)
There was a problem hiding this comment.
сам не могу привыкнуть :(
homework3.cpp
Outdated
| int arr[arr_len]{}; | ||
| for (int i = 0; i < arr_len; ++i) { | ||
| int val{}; | ||
| std::cout << "Enter a number: "; |
homework3.cpp
Outdated
| std::cin >> val; | ||
| for (int j = 0; j < arr_len; ++j) { | ||
| std::cout << val; | ||
| if (arr[j] == 0) { |
There was a problem hiding this comment.
если пользователь введет "0", похоже будет "ой" :( Практика использовать потенциально возможное значение как критерий поведения к хорошему не приводит. Т.е. 0 - не должен означать, что ячейка не заполнена.
There was a problem hiding this comment.
согласен, пока что не придумал решения. Заводить флаг, если первый элемент, то ставить его первым, а дальше от него шагать?
There was a problem hiding this comment.
или смещать элементы на место удаленного...
homework3.cpp
Outdated
| for (int j = 0; j < arr_len; j++) { | ||
| if (num == arr[j]) { | ||
| std::cout << "Element " << num << " is removed from array" << std::endl; | ||
| arr[j] = '-'; |
There was a problem hiding this comment.
не-не-не. Так нельзя делать. У Вас arr - это интовый массив. То что Вы присвоили, компилятор неявно преобразовал const char в int. И значение в данный элемент массива попало 45. Если бы Вы вывели итоговый массив, то увидели бы это.
Здесь вообще, по-моему, надо поступать аналогично с заданием на добавление числа. Только при удалении смещать элементы массива, чтоб заполнить освободившееся место.
There was a problem hiding this comment.
придумал обходной костыль.)
There was a problem hiding this comment.
Зачем? Смещайте элементы. std::string здесь вообще не к месту (хоть я его и люблю :) )
| #include <locale> | ||
|
|
||
| int get_str_len(char* str) { | ||
| int count{}; |
There was a problem hiding this comment.
такое как размер последовательности лучше обьявлять как безнаковое целое, а не знаковое
лучше для этого подойдет тип size_t
| int str_len = get_str_len(_str); | ||
|
|
||
| int strt = 0; | ||
| int end = str_len - 1; |
There was a problem hiding this comment.
| int str_len = get_str_len(_str); | |
| int strt = 0; | |
| int end = str_len - 1; | |
| int str_len {get_str_len(_str)}; | |
| int strt {0}; | |
| int end {str_len - 1}; |
| bool is_dgt(char var) { | ||
| int dec_v = static_cast<int>(var); | ||
| constexpr int lwr_ascii_dec_lim = 48; | ||
| constexpr int uppr_ascii_dec_lim = 57; |
There was a problem hiding this comment.
как вы думаете тот кто читает этот код он знает на изусть таблицу ascii?)
лучше писать символьные литералы 0
| arr[i] = arr[i] & '_'; | ||
| } | ||
| else { | ||
| arr[i] = arr[i]; |
There was a problem hiding this comment.
а зачем это? просто не надо else ветки
| std::cin >> arr; | ||
| for (int i = 0; arr[i] != '\0'; ++i) { | ||
| if (std::isalpha(arr[i], loc)) { | ||
| arr[i] = arr[i] & '_'; |
There was a problem hiding this comment.
капец, зачем так сложно) ну представте себя в роли человека который будет читать этот код, вот как понять мы побитово складываем один символ с символом подчеркивания??????)))))
|
|
||
| void remove_elmtn() { | ||
| constexpr int arr_len{ 5 }; | ||
| std::string arr[arr_len]; |
There was a problem hiding this comment.
ничего не понял а зачем вам массив строк?
|
|
||
| while (elmnts_deleted != arr_len) { | ||
| bool present = false; | ||
| std::string num{}; |
There was a problem hiding this comment.
зачем тут string в качестве строки?
| std::string num{}; | ||
| std::cout << "Enter a number which you want to delete from array: "; | ||
| std::cin >> num; | ||
| std::string rmvd_ch = "-"; |
There was a problem hiding this comment.
непонял вообще что это и зачем эта магия?
просто проверяйте что строка не пустая и все я думаю что этого вполне достаточно
| std::cin >> num; | ||
| std::string rmvd_ch = "-"; | ||
| for (int j = 0; j < arr_len; j++) { | ||
| if (num == arr[j] && arr[j] != rmvd_ch) { |
There was a problem hiding this comment.
вот подумайте над этим условием. что куда лучше поставить, т.е. поменять местами
| arr[j] = val; | ||
| val = tmp; | ||
| j = 0; | ||
| } |
There was a problem hiding this comment.
я думаю вам стоит подумать, и реализацию лучше написать
No description provided.