Пошаговое руководство. Компиляция машинной программы на языке C++ из командной строки
Visual Studio включает в себя командную строку C и компилятор C++. Его можно использовать для создания всех элементов — от базовых консольных приложений до приложений универсальной платформы Windows, классических приложений, драйверов устройств и компонентов .NET.
В этом пошаговом руководстве приводятся инструкции по созданию программы на языке C++ в стиле «Hello, Wolrd» в текстовом редакторе с последующей компиляцией из командной строки. Если вы хотите попробовать интегрированную среду разработки Visual Studio вместо использования командной строки, см . пошаговое руководство. Работа с проектами и решениями (C++) или использование интегрированной среды разработки Visual Studio для классических приложений C++.
В этом пошаговом руководстве вместо ввода показанного кода можно использовать собственную программу на языке C++. Также можно использовать пример кода C++ из другой статьи справки.
Необходимые компоненты
Для выполнения этого пошагового руководства необходимо установить Visual Studio и дополнительную рабочую нагрузку Разработка настольных приложений на C++ или Build Tools командной строки для Visual Studio.
Visual Studio — интегрированная среда разработки (IDE). Она поддерживает полнофункциональный редактор, диспетчеры ресурсов, отладчики и компиляторы для многих языков и платформ. Доступные версии включают бесплатный выпуск Visual Studio Community Edition, и все они могут поддерживать разработку на C и C++. Сведения о скачивании и установке Visual Studio см. в статье Установка поддержки C++ в Visual Studio.
Build Tools для Visual Studio устанавливают только средства, библиотеки и компиляторы командной строки, необходимые для сборки программ C и C++. Это идеальный вариант для создания заданий и упражнений, а установка выполняется относительно быстро. Чтобы установить только средства командной строки, найдите Build Tools для Visual Studio на странице загрузки Visual Studio.
Прежде чем можно будет выполнить сборку программ C или C++ в командной строке, убедитесь, что эти средства установлены и к ним можно получить доступ из командной строки. Visual C++ имеет сложные требования к среде командной строки для поиска используемых средств, заголовков и библиотек. Visual C++ нельзя использовать в простом окне командной строки без предварительной подготовки. К счастью, Visual C++ устанавливает ярлыки для запуска командной строки разработчика, для которой настроена среда для сборок из командной строки. К сожалению, имена ярлыков командной строки разработчика и места их расположения отличаются практически во всех версиях Visual C++ и в различных версиях Windows. Первая задача пошагового руководства — найти нужную командную строку.
Ярлык командной строки разработчика автоматически задает правильные пути для компилятора и средств, а также для всех необходимых заголовков и библиотек. Эти значения среды необходимо задавать самостоятельно, если используется обычное окно командной строки. Дополнительные сведения см. в статье Использование набора инструментов MSVC из командной строки. Рекомендуется использовать ярлык командной строки разработчика вместо создания собственного.
Открытие командной строки разработчика
- Если вы установили Visual Studio 2017 или более поздней версии в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio (не приложение Visual Studio). Выберите элемент Командная строка разработчика для VS, чтобы открыть окно командной строки. Если вы установили Microsoft Visual C++ Build Tools 2015 в Windows 10 или более поздней версии, откройте меню Пуск и выберите Все приложения. Прокрутите вниз и откройте папку Microsoft Visual C++ Build Tools. Выберите элемент Командная строка Native Tools x86 Visual C++ 2015, чтобы открыть окно командной строки. Можно также ввести «командная строка разработчика» в строке поиска в Windows и выбрать командную строку, которая соответствует установленной версии Visual Studio. Откройте окно командной строки с помощью ярлыка.
- Затем убедитесь в том, что командная строка разработчика Visual C++ настроена правильно. В окне командной строки введите cl и убедитесь в том, что выходные данные выглядят примерно так:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>cl Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86 Copyright (C) Microsoft Corporation. All rights reserved. usage: cl [ option. ] filename. [ /link linkoption. ]
Возможно, существуют различия в текущем каталоге или номерах версий. Эти значения зависят от версии Visual C++ и установленных обновлений. Если приведенный выше результат похож на отображаемый, можно приступать к сборке программ C или C++ в командной строке.
Примечание. Если при выполнении команды cl появляется сообщение о том, что «cl не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл», или возникают ошибки C1034 или LNK1104, дело в том, что вы не используете командную строку разработчика или что-то не так с установкой Visual C++. Для продолжения нужно будет исправить ошибку.
Если вы не можете найти ярлык командной строки разработчика или при вводе cl появляется сообщение об ошибке, возможно, возникла проблема с установкой Visual C++. Попробуйте переустановить компонент Visual C++ в Visual Studio или Microsoft Visual C++ Build Tools. Не переходите к следующему разделу, пока команда cl не сработает. Дополнительные сведения об установке Visual C++ и устранении неполадок см. в статье Установка Visual Studio.
Примечание. В зависимости от версии Windows, установленной на компьютере, и конфигурации системы безопасности может потребоваться правой кнопкой мыши открыть контекстное меню для ярлыка командной строки разработчика и выбрать пункт Запуск от имени администратора, чтобы успешно выполнить сборку и запуск программы, созданной в этом пошаговом руководстве.
Создание файла исходного кода на языке Visual C++ и его компиляция из командной строки
- В окне командной строки разработчика введите md c:\hello , чтобы создать каталог, а затем введите cd c:\hello , чтобы перейти к этому каталогу. В этом каталоге создаются файл исходного кода и скомпилированная программа.
- В окне командной строки введите notepad hello.cpp . Когда Блокнот предложит создать файл, выберите Да. Откроется пустое окно Блокнота, в котором можно ввести код для файла hello.cpp.
- В окне блокнота введите следующие строки кода:
#include using namespace std; int main()
c:\hello>dir Volume in drive C has no label. Volume Serial Number is CC62-6545 Directory of c:\hello 05/24/2016 05:36 PM . 05/24/2016 05:36 PM .. 05/24/2016 05:37 PM 115 hello.cpp 1 File(s) 115 bytes 2 Dir(s) 571,343,446,016 bytes free
Даты и некоторые другие данные будут отличаться на вашем компьютере.
Примечание. Если файл исходного кода hello.cpp не отображается, убедитесь, что текущий рабочий каталог в командной строке — это созданный вами каталог C:\hello . Это должен быть каталог, в который вы сохранили файл исходного кода. Также убедитесь, что файл исходного кода был сохранен с расширением имени файла .cpp , а не .txt . Если открыть Блокнот из командной строки с помощью команды notepad hello.cpp , файл исходного кода автоматически сохраняется в текущем каталоге в виде файла .cpp . Если Блокнот открыть другим способом, его поведение также будет другим. По умолчанию Блокнот добавляет расширение .txt в новые файлы при их сохранении. Кроме того, файлы по умолчанию сохраняются в каталоге Документы. Чтобы сохранить файл с расширением .cpp в Блокноте, выберите Файл>Сохранить как. В диалоговом окне Сохранение файла перейдите к папке C:\hello в элементе управления иерархического представления каталогов. Затем используйте раскрывающийся список «Сохранить как тип», чтобы выбрать все файлы (*.*). Введите hello.cpp в элемент управления «Поле ввода» Имя файла и нажмите кнопку Сохранить, чтобы сохранить файл.
c:\hello>cl /EHsc hello.cpp Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86 Copyright (C) Microsoft Corporation. All rights reserved. hello.cpp Microsoft (R) Incremental Linker Version 14.10.25017.0 Copyright (C) Microsoft Corporation. All rights reserved. /out:hello.exe hello.obj
Примечание. Если вы получаете сообщение об ошибке, например «cl не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл», ошибке C1034 или LNK1104, командная строка разработчика настроена неправильно. Чтобы получить сведения о том, как устранить эту проблему, вернитесь к разделу Открыть командную строку разработчика.
Примечание. Если вы получаете другое сообщение об ошибке или предупреждение компилятора или компоновщика, проверьте исходный код, исправьте ошибки, сохраните его и снова запустите компилятор. Для получения сведений о конкретных ошибках введите номер ошибки в поле поиска.
Hello, world, from Visual C++!
Следующие шаги
Этот пример «Hello, World» является самой простой программой C++. Реальные программы обычно имеют файлы заголовков, дополнительные исходные файлы и ссылки на библиотеки.
Вы можете использовать шаги, описанные в этом пошаговом руководстве по C++, для создания собственного кода, чтобы не вводить приведенный пример. Эти шаги также позволяют собрать множество примеров кода C++, которые можно найти в других местах. Вы можете разместить исходный код и собрать приложения в любом доступном для записи каталоге. По умолчанию интегрированная среда разработки Visual Studio создает проекты в папке пользователя в подпапке source\repos . Старые версии могут помещать проекты в папку Documents\Visual Studio \Projects .
Чтобы скомпилировать программу с дополнительными файлами исходного кода, введите их все в командной строке, например:
cl /EHsc file1.cpp file2.cpp file3.cpp
Параметр командной строки /EHsc указывает компилятору на необходимость стандартной обработки исключений C++. В противном случае созданные исключения могут привести к неуничтоженным объектам и утечкам ресурсов. Дополнительные сведения см. в статье /EH (модель обработки исключений).
При указании дополнительных исходных файлов компилятор использует первый входной файл для создания имени программы. В этом случае выводится программа с именем file1.exe. Чтобы изменить имя на program1.exe, добавьте параметр компоновщика /out:
cl /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe
Чтобы автоматически перехватывать другие ошибки программирования, рекомендуется выполнить компиляцию с помощью порога предупреждений /W3 или /W4:
cl /W4 /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe
В компиляторе cl.exe есть множество дополнительных параметров. Их можно применять для создания, оптимизации, отладки и анализа кода. Чтобы просмотреть краткий список, введите cl /? в командной строке разработчика. Можно также выполнять компиляцию и компоновку отдельно и применять параметры компоновщика в более сложных сценариях сборки. Дополнительные сведения о параметрах и использовании компилятора и компоновщика см. в справочнике по сборке для C/C++.
Для настройки и создания более сложных проектов в командной строке можно использовать NMAKE и файлы makefile, MSBuild и файл проекта или CMake. Дополнительные сведения об использовании этих средств см. в разделах Справочник по NMAKE, MSBuild и Проекты CMake в Visual Studio.
Языки C и C++ похожи, но имеют различия. Компилятор MSVC использует простое правило для определения языка, используемого при компиляции кода. По умолчанию компилятор MSVC рассматривает файлы с расширением .c как исходные файлы на языке С, а файлы с расширением .cpp — как исходные файлы на языке С++. Если указан параметр компилятора /TP, компилятор будет рассматривать все файлы как исходные файлы на языке С++ вне зависимости от расширения.
Компилятор MSVC содержит библиотеку времени выполнения C (CRT), которая соответствует стандарту ISO C99 с небольшими исключениями. Переносимый код обычно компилируется и выполняется, как ожидалось. Некоторые устаревшие функции библиотеки и несколько имен функций POSIX не рекомендуется использовать в компиляторе MSVC. Функции поддерживаются, но предпочтительные имена изменились. Дополнительные сведения см. в статьях Функции безопасности в CRT и Предупреждение компилятора (уровень 3) C4996.
Превращаем код на Python в исполняемый EXE-файл
Как скомпилировать Python-код в файл EXE, чтобы защитить свой код или наглядно показать работу вашей программы.
Обычно код на Питон запускают двумя способами: через терминал или через текстовый редактор / IDE.
При этом стоит отметить, что файлик Python — это всего лишь скрипт, который сохранён в расширении .py. Да, это очевидно, но в этом и кроется проблема: иногда нужно скрыть исходный код, а поделиться программкой (в виде альфа-версии, например) очень хочется.
Одно из решений, которое закрывают боль с исходным кодом — это конвертация файла Python в исполняемый exe-файлик.
В этой статье мы научимся создавать «экзешники» при помощи двух библиотек: Pyinstaller and auto-py-to-exe.
Перед тем, как продолжить чтение статьи, скачайте этот репозиторий. Он здорово поможет вам понять процесс, если вы будете повторять все шаги вместе с нами.
Почему возникает потребность конвертировать Python-код в EXE
- Код могут украсть. Об этом мы уже говорили выше. Куда проще достать исходный код непосредственно из py-файла, чем из скомпилированного приложение. Py-файл достаточно просто открыть!
- Хочется поделиться кодом с другими юзерами. Дело не только в том, что ваш код могут украсть. Зачастую код содержит зависимости, которыми должен владеть другой юзер перед запуском вашего Python-кода. Но что, если он вообще ничего не смыслит в программировании? Не заставишь ведь его сперва выучить программирование, чтобы оценить ваше новое суперприложение. Проще создать исполняемый файл.
- Исполняемый файл можно запускать автоматически, по расписанию. Этот пункт актуален, если вы решили написать утилиту для вашего ПК, и эта утилита должна запускаться либо в определенное время, либо вместе с запуском ОС.
Конвертация кода Python в файл .exe
Для начала создадим скрипт на Python. В качестве примера мы используем открытый код бронирования жилья AitBnb в Нью-Йорке. Если у вас уже есть готовый код, можете сразу использовать его.
import pandas as pd from pandas.api.types import CategoricalDtype def perform_validation(filename:str): """ A function to validate inputs for NYC Airbnb Open data. """ path_to_data = "../.." data = pd.read_csv(f"") # Convert neighbourhood_group to type category neighbourhood_group_to_cat = CategoricalDtype( categories=["Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island"], ordered=False ) data["neighbourhood_group"] = data["neighbourhood_group"].astype(neighbourhood_group_to_cat) # Convert room_type to type category room_type_to_cat = CategoricalDtype( categories=["Entire home/apt", "Private room", "Shared room"], ordered=False ) data["room_type"] = data["room_type"].astype(room_type_to_cat) # Convert last_review to datetime data["last_review"] = pd.to_datetime(data["last_review"]) # Minimum nights a person can stay is one night assert data["minimum_nights"].min() >= 1 # Minimum number of reviews is 0 assert data["number_of_reviews"].min() >= 0 # Minimum number of reviews per month assert data["reviews_per_month"].min() >= 0.00 # Minimum amount of listings per host assert data["calculated_host_listings_count"].min() >= 1 # Number of days when listing is available for books # Could be 0 if tennant has long term booking assert data["availability_365"].min() >= 0 # Save validated data data.to_csv("validated_ab_nyc_2019.csv", index=False) if __name__ == "__main__": # User inputs filename filename = input("Enter filename: ") # Ensure it's a string if not filename.isalpha(): filename = str(filename) # Automated validation perform_validation(filename)
Вы не забыли скачать библиотеки по ссылке по введении? Сделайте это сейчас.
Вот структура файлов на GitHub:
# Directory structure | AB_NYC_2019.csv | +---auto_py_to_exe | | requirements.txt | | validation.py +---pyinstaller | requirements.txt | validation.py
Каждая из директорий должна обладать своей виртуальной средой. Убедитесь, что среды развёрнуты и в директории pyinstaller, и в auto-py-to-exe.
Сохраните ваш код и скопируйте его в обе директории.
Что делать в Pyinstaller
Ещё раз убедитесь, что виртуальная среда развёрнута. Да, мы настаиваем. Проверьте, установлены ли все зависимости между библиотеками и кодом.
Всё в порядке? Запускайте команду:
pyinstaller --onefile validation.py
Процесс должен запуститься, и в конце консоль сообщит: «Completed successfully». Значит, всё прошло успешно. ?
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
В папке с библиотекой и кодом должны появиться две новые директории под названиями build и dist. В папке dist вы найдёте заветный exe-файл. Запустите его и проверьте работу приложения.
Что делать в Auto-py-to-exe
Также скиньте файлик с кодом в папку с библиотекой и проверьте зависимости между кодом и библиотекой.
auto-py-to-exe
Команда запустит графический интерфейс.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
- В строчке «Script Location» нажмите «Browse» и выберите py-скрипт.
- В строчке «Onefile» выберите, скомпилируется код в единый файл или в папку. В папке будет содержаться exe-файл и все зависимости кода.
- В строчке «Console Window» выберите настройки отображения exe-приложения, когда оно будет запущено. Если выбрать «Console Based», запустится и программа, и консоль, в которой будут показаны процессы. Опция «Window Based» скрывает консоль.
- Нажмите кнопку «Convert .py to .exe». Готово!
Запускаем exe-файл
В обоих случаях, после компиляции и запуска exe-файла, тот запустит консоль и попросит вас ввести имя файла. Придумайте его и укажите расширение, в котором всё должно работать. К примеру, Tproger-is-the-best-it-media-in-the-world.csv . Тогда консоль закроется, а в папке появится заветный файлик с расширением .csv.
И всё — вы великолепны!
C++: Компиляция и компоновка (линковка)
С++ — компилируемый язык. Поэтому прежде чем запускать написанную программу, нам нужно превратить текстовые файлы с исходным кодом в машинный код, который понятен компьютеру.
В этом уроке мы узнаем, что такое компилятор. Также разберем, как происходит процесс компиляции, который можно разбить на две стадии: компиляция и компоновка.
Компиляция
Чтобы скомпилировать программу на C++, мы используем специальную программу. Она последовательно просматривает каждый файл исходного кода (.cpp) и выполняет две важные задачи:
- Проверяет код на соответствие правилам языка C++. В противном случае компилятор выдаст ошибку и номер соответствующей строки, чтобы помочь точно определить, что нужно исправить. Процесс компиляции будет прерван, пока ошибка не будет исправлена
- Переводит исходный код C++ в файл машинного кода, называемый объектным файлом
Объектные файлы обычно имеют имена name.o или name.obj , где name совпадает с именем файла .cpp , из которого он был создан.
Если бы в вашей программе было бы три файла .cpp , компилятор сгенерировал бы три объектных файла.
Компиляторы C++ доступны для многих операционных систем. Например, в стандартной поставке многих дистрибутивов Linux есть компилятор gcc. В Windows можно пользоваться IDE Visual Studio — в нее уже встроен компилятор и система сборки.
Компоновка
После того, как компилятор создал один или несколько объектных файлов, включается другая программа — компоновщик или линкер. Работа компоновщика состоит из трех частей:
- Берет все объектные файлы, сгенерированные компилятором, и объединяет их в единую исполняемую программу
- Помимо возможности связывать объектные файлы компоновщик также может связывать файлы библиотек. Файл библиотеки — это набор предварительно скомпилированного кода, который был упакован для повторного использования в других программах
- Обеспечивает правильное разрешение всех межфайловых зависимостей. Например, если мы определяем что-то в одном файле .cpp , а затем используем это в другом файле .cpp , компоновщик соединит их вместе. Если компоновщик не может связать ссылку с чем-то с ее определением, мы получим ошибку компоновщика, и процесс линковки прервется
Системы сборки
Когда проект содержит десятки и даже сотни файлов с исходным кодом, процесс его сборки надо автоматизировать. Здесь на помощь приходят системы сборки, которые автоматически запускают все нужные команды, чтобы скомпилировать и скомпоновать все файлы проекта. В итоге на выходе получается один исполняемый файл.
Одной из таких систем является утилита Make и Makefile . В Makefile описываются все цели и зависимости проекта, а утилита Make смотрит в этот файл и запускает компилятор с соответствующими командами.
Еще одна популярная система сборки проектов — утилита CMake , которая работает поверх Make . Она отличается своей кроссплатформенностью и позволяет делать сборки под различные операционные системы.
Компиляции и сборка программы не менее важный процесс, чем написание самой программы.
Задание
Выведите на экран число 9780262531962.
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Полезное
- «Если в редакторе есть запись // BEGIN и // END , то код нужно писать между этими строчками.»
- Установка gcc в Windows
- gcc для Linux
Преобразовать код из C в C++
Нашел код в интернете. Можно ли этот код из С++ преобразовать в язык программирования C#?
Нашел код в интернете можно ли этот код из С++ преобразовать в язык программирования C#. Язык.
Преобразовать двоичный код в двоично-десятичный код (Intel 8051)
Прочитать с порта Р0 один байт двоичного кода 8-4-2-1, превратить его в двоично-десятичный код и.
Преобразовать код на Java в код для ассемблера 3AA
переделать Java программу в программу 3AA все данные типа int for(int i = 0; i < 10; ++i)
Преобразовать данный код в код с лямбда-выражениями
Как преобразовать данный код в код с лямбда-выражениями? (((( Не понимаю совсем using System;.
Заклинатель змей
611 / 508 / 213
Регистрация: 30.04.2016
Сообщений: 2,412
ZhuravvliK, не запускается или не компилируется? using namespace std; перед main()
Регистрация: 24.03.2020
Сообщений: 10
Выдаёт ошибку E0349.
std указал, кстати.
4055 / 3309 / 924
Регистрация: 25.03.2012
Сообщений: 12,451
Записей в блоге: 1
Где код получившийся?
Вообще, Си это подмножество С++. Отличия есть, но не в наличии/отсутствии printf. формально программа на Си также может выступать в роли программы на С++!
Регистрация: 24.03.2020
Сообщений: 10
Ну, как я и писал, моя версия кода с данной различаются только, что я printf заменил на cout, scanf на cin, добавил namespace std и библиотеки подключил.
Регистрация: 24.03.2020
Сообщений: 10
Выводит вот это, про 12 и 17 строку. Перестаёт ругаться, если я уберу % и &, но тогда программа работает неправильно.
2506 / 1229 / 455
Регистрация: 08.11.2016
Сообщений: 3,370

Сообщение было отмечено ZhuravvliK как решение
Решение
Если менять заголовки, то достаточно заменить stdlib.h на cstdlib и весь код оставить как есть. Если хотите переделать с форматированного ввода-вывода (prinf/scanf) на потоковый (cin/cout) то достаточно подключить только
Сообщение от ZhuravvliK 
Перестаёт ругаться, если я уберу % и &, но тогда программа работает неправильно.
% — это для форматированного ввода-вывода — означает что в соответствии со следующим выражением подставляется значение из списка аргументов следующих за форматом.
& — в Вашем случае оператор взятия ссылки нужен для потокового ввода, так как scanf принимает параметры в виде указателя на переменную.
Если переводить с форматированного ввода-вывода на потоковый, выглядеть будет так:
форматированный:
1 2 3 4 5
for (k=0; kn; ++k) { printf("a[%i] : ",k+1); scanf("%i",&a[k]); }
1 2 3 4 5
for (k=0; kn; ++k) { cout <"a["+ 1 <"] : "; cin >> a[k]; }
4055 / 3309 / 924
Регистрация: 25.03.2012
Сообщений: 12,451
Записей в блоге: 1
Сообщение от ZhuravvliK 
Ну, как я и писал, моя версия кода с данной различаются только, что я printf заменил на cout, scanf на cin, добавил namespace std и библиотеки подключил.
какаяя разница? Ты место на серверах форума экономишь? пиши сюда!
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
Судя по ошибкам, объекту cin оператором >> передаётся непонятная ему фигня. А не проще ли было использовать тот же printf, scanf — ведь это тоже С++?
Регистрация: 24.03.2020
Сообщений: 10
Сообщение от Annemesski 
Если переводить с форматированного ввода-вывода на потоковый, выглядеть будет так:
А как будет тогда 8 строка?)
4055 / 3309 / 924
Регистрация: 25.03.2012
Сообщений: 12,451
Записей в блоге: 1
ZhuravvliK, почему ты до сих пор не показал свою ошибочную программу?
cin>>n;
Регистрация: 24.03.2020
Сообщений: 10
Сообщение от Kuzia domovenok 
почему ты до сих пор не показал свою ошибочную программу?
Я изменил форматированный на потоковый, как и писал Annemesski и у меня всё заработало наконец. Я даже и не подозревал о таком.
В итоге необходимости скидывать «ошибочный» код нет. Если, конечно, тебе хочется его увидеть, то смотри
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#include #include #include #include using namespace std; int main(void) { int a[10], b[10]; int n; cout ("N: "); cin >> n; int k; for (k = 0; k n; ++k) { cout "a[" k + 1 "] : "; cin >> a[k]; } int i = 0; for (k = 2; k n; k += 3) { b[i] = a[k]; ++i; } cout ("B: \n size: %i \n", i); for (k = 0; k i; ++k) cout (" %i: %i\n", k + 1, b[k]); return 0; }
Добавлено через 30 минут
Хотя всё-таки не всё) Я подумал, что я понял, как из форматированного в потоковый переводить.
Можете подсказать, пожалуйста, как 26 и 27 строчки в потоковый перевести? На этом примере то я пойму наконец, надеюсь)
2506 / 1229 / 455
Регистрация: 08.11.2016
Сообщений: 3,370
1 2 3
cout "B: " endl " size: " i endl; for (k = 0; k i; ++k) cout " " k + 1 ": " b[k] endl;
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
ZhuravvliK, советую почитать про printf scanf хоть в той же википедии. А если вкратце — то printf(), scanf() первым параметром принимают форматную строку «. » (к примеру «%d%d»), а дальше идут сами переменные, которые либо выводятся в консоль (printf()), либо считываются с консоли(scanf()).
Для cin и cout не нужно передавать никакой форматной строки — сразу «скармливаем» им нужные переменные и всё прекрасно работает (потому как работает перегрузка и для стандартных переменных операторы > перегружены «что называется из коробки», но их так же можно перегрузить и для своих пользовательских типов данных. А вообще, внутри любого cin и cout находится всё тот же Сишный scanf(), printf())
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Преобразовать код без функции в код с функцией
Дан вот такой код, нужно преобразовать его в код с функцией. Спасибо. PROGRAM TEST (INPUT.
Преобразовать 16-ти разрядный двоичный код в код 8-4-2-1
Помогите пожалуйста составить программу для Intel 8051, которая преобразует 16-ти разрядный.
Wpf не виставляются нормально координати елипса && как преобразовать код xaml в код C#
собственно вот код программы using System; using System.Collections.Generic; using System.Linq;.
Преобразовать код из С++ в код Ассемблера
Прошу о помощи. В условии надо поменять местами первую четверть массива со второй, а третью с.
Преобразовать код на Ассемблере в код на С
Доброго времени суток! Прошу помощи, ибо в этой теме чайник. Есть фрагмент программки: mov r16,r0 .
Преобразовать в bb код
Здравствуйте! Помогите мне пожалуйста изменить данный html код в bb код: <font style="position.
