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

Не хватает опыта для того, чтобы понять ошибку в задаче циклического побитового сдвига - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Описать базовый класс автомобиль http://www.cyberforum.ru/cpp-beginners/thread1155598.html
Помогите написать программу Описать базовый класс автомобиль со следующими данными: количество колес тип двигателя геометрические размеры (длина, ширина, высота) грузоподъемность(кг) На основе этого класса создать производные: легковой автомобиль грузовой автомобиль
C++ Шаблонный класс динамический вектор Создала шаблонный класс одномерный динамический массив. Нужно заполнить массив числами какими-нибудь. Объявила данные и методы: template <class T> class Exm { protected: T *mas; int len; public: Exm(); //конструктор http://www.cyberforum.ru/cpp-beginners/thread1155568.html
Использование функция для решения задачи C++
Добрый вечер, подскажите в чем ошибка в коде. #include "stdafx.h" #include <stdio.h> #include <time.h> #include <stdlib.h> int i,j; int matrix(int **A,int **B,int **C,int rows,int cols ) { for (i=0;i<rows;i++)
Удалить из текста все символы, которые не являются буквами C++
Удалит из текста все символы, которые не являются буквами латинского алфавита или кириллицы
C++ Строковый калькулятор http://www.cyberforum.ru/cpp-beginners/thread1155517.html
добрый вечер) Помагите написать строковый калькулятор, понятия не имею как это делать. вот что то похожее надо набрать
C++ Архитектура правильного определения и объявления класса Всем привет! В процессе написания одной программы "поймал" себя на том, что видимо не до конца понимаю логику правильного определения и объявления класса. Использую для этого бинарную структуру из заголовочного файла + файла с определением. //файл Class.h class Class { public: void func(); }; //файл Class.cpp подробнее

Показать сообщение отдельно
DrOffset
6429 / 3803 / 882
Регистрация: 30.01.2014
Сообщений: 6,602
25.04.2014, 13:32     Не хватает опыта для того, чтобы понять ошибку в задаче циклического побитового сдвига
Цитата Сообщение от Кателевский ВН Посмотреть сообщение
поясните пожалуйста это место "in[j] = static_cast<unsigned int>(ch[j]);"
Это не играет роли. Вообще-то расширение char->int - это автоматическое преобразование (оно у тебя и было), но я посчитал, что в алгоритме присутствует определенная неочевидность, и обозначил явно намерение это сделать.
Цитата Сообщение от Кателевский ВН Посмотреть сообщение
что-то мне подсказывает здесь проблема у меня и была.
Нет. Проблема была из-за неправильного чтения массива in (последний цикл while). Массив не обязан заканчиваться нулем, поэтому условие срабатывало значительно большее количество раз, чем требовалось, выводя мусор из памяти. Ноль мог встретиться и позже, тогда мусорных "элементов" было бы еще больше. Я же просто немного сократил твой алгоритм, добавил некоторой четкости формулировок и убрал ошибку выведения данных массива in.

Добавлено через 2 минуты
Цитата Сообщение от Кателевский ВН Посмотреть сообщение
По условию задания нулей нет, кроме, как в конце строки.
В конце строки ноль есть. Но он в конце строки. А в конце массив in нет нуля, потому что его туда никто не пишет. Массив in - это уже не строка.

Добавлено через 6 минут
Цитата Сообщение от Кателевский ВН Посмотреть сообщение
Почему именно такое приведение типов Вы использовали?
Вообще, С++-касты задумывались в том числе и для того, чтобы внести определенную декларативность в исходный код. Чтобы было сразу видно, что тут происходит, чтобы, в том числе, можно было найти такой каст поиском по тексту.
В общем, чем четче обозначены намерения программиста в исходном коде, тем меньше ему придется писать комментариев (они, как известно, имеют свойство устаревать и рассинхронизироваться с кодом), и тем проще будет другому программисту сходу разобраться.
 
Текущее время: 12:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru