Annie96: At[i][j] = A[j][i];
в таком случае при выводе индексы тоже разверните. Главное чтобы при считывании и выводе они были одинаковыми. Первый индекс - номер строчки, второй номер столбца.
Если размер n произвольный, то c[i][j] считается как сумма из n элементов (сейчас у вас 2 слагаемых). Поэтому суммировать надо еще в одном цикле. Нарисуйте 2 матрицы и обведите строчку и столбец при умножении которых получается C[i][j]. Только так вы разберетесь откуда берутся все индексы.
Annie96: Если хотите оставить только один цикл Владимир предложил хороший вариант. Суть в том, чтобы увеличивать i в конце, а если мы сделали erase, продолжить цикл (ключевое слово continue) не увеличивая i.
Да, еще одна гадость от внутреннего цикла. Если в конце строки не буква, то цикл не остановится и будет удалять что-то после ее конца. Поэтому условие еще усложняется: while (i < line.length() && !isalpha(line[i]) && line[i] != ' '){}
Стоит настроить низкий memory.swappines для xorg-server? А в ubuntu без systemd с этим могут возникнуть проблемы? Xorg там запускается от root. В документации пишут: "You cannot change the swappiness of the root cgroup, which uses the swappiness set in /proc/sys/vm/swappiness"
Да не так и трудно объяснить про 6 преобразований. Неявное чтобы не писать код где и так все понятно. c-style наследство С. static_cast, dynamic_cast, reinterpret_cast ровно для того, что написано в документации. const_cast чтобы обходить косяки архитектуры приложения.
На этой вкладке добавьте libserial. После установки пакета libserial-dev в папке /usr/lib появляется файл libserial.so. -lserial означает слинковаться с ним.
KirillDe777: Было бы проще, если бы вы показали исходники (желательно весь проект ссылкой на github или bitbucket). Похоже, что вы не подключаете библиотеку libserial, где находится реализация этих функций. То что вы делаете #include только говорит компилятору что такие функции есть и как их вызывать. Ну и судя по логу у вас 2 функции main в serial.cpp и arduino.cpp.
Mercury13: А это точно будет всегда работать? Если перед этим считать int, а ввести букву, то паузы нет (предположим, при неправильном вводе хотим написать сообщение об этом).
Армянское Радио: В первоначальном виде, без паузы в конце не нужно. Деструктор std::cout сам сделает flush. Если запускать из под консоли все будет ок.
Армянское Радио: Ну да, в скобках double конечно. Во втором варианте все правильно. Для элементарных типов c-style приведение мне кажется вполне допустимо (и гораздо короче).
Армянское Радио: maybeivan: Судя по отзывам, книга достаточно приличная. Использовать std::endl везде не лучший совет. Нужно понимать, что вывод std::endl дополнительно делает flush потоку (непосредственно отрисовка на экране или запись в файл). Если это не требуется, например при записи 1000000 строк в файл, то запись '\n' может быть на порядки быстрее.
в таком случае при выводе индексы тоже разверните. Главное чтобы при считывании и выводе они были одинаковыми. Первый индекс - номер строчки, второй номер столбца.
Если размер n произвольный, то c[i][j] считается как сумма из n элементов (сейчас у вас 2 слагаемых). Поэтому суммировать надо еще в одном цикле. Нарисуйте 2 матрицы и обведите строчку и столбец при умножении которых получается C[i][j]. Только так вы разберетесь откуда берутся все индексы.