Софт-Портал

программы на C

Рейтинг: 4.6/5.0 (423 проголосовавших)

Категория: Windows

Описание

Примеры программ на С

Большинство программ в этом разделе (но не все) написаны с использованием объектно-ориентированного программирования. Примеры написаны с помощью Borland C++ Builder 5 или Visual Studio.NET (для примеров, в которых используется DirectX). Однако, это должно вам мешать использовать их с какой-либо другой средой разработки, т.к. все функции программ (кроме интерфейса) написаны в виде отдельных модулей и не зависят от VCL и MFC.

Совет: не пропускайте описание программы. Безусловно, исходного кода достаточно для того, чтобы разобраться в работе программы. Но в описании рассказывается о назначении отдельных файлов программы, и о взаимодействии её частей между собой.

  • Простая логическая игрушка
  • С этой игрой я познакомился, когда играл в "Космических рейнджеров" (это было задание в одном из квестов). Игра показалась мне интересной, и я решил написать свою версию. При этом мне захотелось добавить возможность регулирования уровня сложности >>>
  • Путешествие коня
  • Эта интересная головоломка была предложена математиком Эйлером. Задание, на первый взгляд, достаточно простое – нужно шахматным конем, находящимся на произвольной клетке шахматной доски, обойти все остальные клетки доски. При этом на одну клетку можно походить только один раз >>>
  • Восемь ферзей
  • Эта задача - одна из очень интересных шахматных головоломок.
    Нужно поставить восемь ферзей на пустой доске таким образом, чтобы ни один из них не "атаковал" другого >>>
  • Крестики-нолики (DirectX)
  • Эта игра известна всем, начиная с дошкольного возраста. Тем не менее, я до сих пор не видел её трехмерного варианта (может, плохо искал?). К тому же, мне давно хотелось написать полноценную 3D игрушку, и крестики-нолики показались мне достаточно подходящим вариантом. В общем, если вы интересуетесь программированием игр и библиотекой DirectX, читайте дальше >>>

P.S. Любые замечания или предложения, касающиеся этого сайта, статей и примеров, размещенных на нем, вы можете отправить лично мне по адресу vova_33@gala.net. либо сообщить всем с помощью гостевой книги.

Автор: Владимир Стаценко

программы на c:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Исходные тексты программ на C, C и Pascal

    Исходные тексты программ

    Здесь собраны исходные тексты программ, написанных мной во время учебы в школе и университете. Программы на каждом языке программирования сжаты в один архив. Информация о файлах в ReadMe.txt

    Программы на Pascal

    Определение времени работы программы. Вечный календарь. Решение кроссвордов. Корни квадратного уравнения. Вычисление определителя. Простые множетели числа. Деление многочленов. Решение системы методом Гаусса. Построение графиков. Преобразование текста в HTML. Размножение клеток. Вхождение символов в строку. НОД. Вычисление числа Pi как суммы ряда. Отгадывание слов в "Поле чудес". Простые чисела методом решета Эратосфена. Простые чисела перебором возможных делителей. График распределения простых чисел. Счастливые числа. Перевод числа из одной системы счисления в другую. Правильность расстоновки скобок. Составление слов из букв исходного. Совершенные числа (перебор). Совершенные числа (формула). Нахождение слова, из которого можно составить макс. кол. других слов. Статистика вхождения символов в файл. Умножение матриц. Сортировка чисел. Решение уравнения 4-ой степени методом неопределенных коэффициентов. Решение уравнений методом половинного деления (методом вилки). Словарь существительных в именительном падеже для программ с поиском слов.
    Скачать (39,5 Кб)

    Программы на C

    Игра "Балда" (игроки по очереди добавляют одну букву, кто закончил слово - проиграл) с отчетом по курсовой. Решение системы линейных уравнений методом Гаусса с выбором главного элемента. Палиндромы. Длина первой отрицательной подпоследовательности в массиве. Решение задачи Коши методом Рунге-Кутта. Определение числа слов в строке. Словарь существительных в именительном падеже для программ с поиском слов.
    Скачать (52 Кб)

    Программы на C++

    Игра 15 ("пятнашки"). Работа с упорядоченным набором элементов заданного типа: добавление, удаление, получение i-го элемента; динамическое распределение памяти и обработка исключительных ситуаций. Работа с графическим объектом - сектором: изменение положения, размера, цвета. Работа с множествами, элементы которых записываются битами числа типа long.
    Скачать (8,6 Кб)

    Курсовая работа по объектно-ориентированному программированию на C++ на тему "Библиотека классов для работы с числами большой точности" (с отчетом по курсовой).
    Скачать (11,6 Кб)

    Курсовая работа по программированию в Windows API "Программа шифрования по алгоритму IDEA": отчет и исходные тексты (80 Кб ), скомпилированная программа (58 Кб ).

    © 2002-2015 Vladimir Filippov | designed by Phantom

    Занятие 1: Простейшая программа на C

    Занятие 1: Простейшая программа на C++

    Простейшая программа на C++ выглядит примерно так:

    Это её исходный код (source code) — текстовая запись программы, состоящая из символов и команд, понятных прежде всего программисту, знакомому с конкретным языком программирования (или обучающемуся такому языку).

    Представленная программа выведет на экран фразу «Hello world», но только после того, как будет откомпилирована и запущена.

    Принято исходный код программ на C++ сохранять с расширением .cpp после имени файла (происходит такая идея от названия «C Plus Plus» и от того, что во многих операционных системах знак плюс нельзя использовать в именах файлов и каталогов).

    Давайте нашу первую программу сохраним в файле hello.cpp. тогда, чтобы откомпилировать данный файл в ОС GNU/Linux, достаточно, находясь в том же каталоге, где сохранён файл с исходным кодом, дать системе команду:

    Команда make. кроме вызова компилятора, выполнит ряд рутинных операций, в результате которых в той же директории, где хранится hello.cpp и откуда мы запустили команду make. появится исполнимый файл hello (без расширения). Чтобы запустить нашу программу, мы должны запустить получившийся исполнимый файл. Из текущей директории это делается так:

    Для C++ существует масса IDE (например, NetBeans). Внутри IDE (интегрированной среды разработки) процесс компиляции и запуска автоматизирован и, как правило, скрыт от разработчика. Но эти процессы всё равно, происходят каждый раз при попытке запустить программу, притом строго в рассмотренной нами последовательности, т.е. самое минимальное изменение в программном коде требует пересохранения файла с исходным кодом, перекомпиляции и перезапуска программы.

    Перед тем, как создаётся исполняемый код, программа анализируется отладчиком, который ищет в исходном коде существующие и потенциальные ошибки. Если ошибок не найдено, то команда make ничего не выведет на экран в результате своей работы, иначе — будет представлена информация об ошибках с указанием строк, в которых они присутствуют. Пока ошибки не будут исправлены, исполнимый файл не будет создан (или не обновлён, если существовал ранее).

    Инструкции простейшей программы

    В первой строке программы с помощью директивы #include происходит подключение заголовочного файла iostream. Заголовочные файлы содержат описание функций и других готовых элементов, которые можно использовать в своих программах после того, как заголовочный файл подключён. iostream входит в стандартную библиотеку C++, но заголовочные файлы можно создавать и самостоятельно, помещая туда часто используемые функции, шаблоны и прочие заготовки.

    Заголовочный файл iostream содержит набор готовых функций для потокового ввода и вывода. Мы будем использовать функцию вывода на консоль.

    На второй строке программы мы объявляем функцию main. Перед именем функции — тип возвращаемого ею значения, в данном случае это int (целые числа). После имени в круглых скобках указывается набор параметров функции, в данном случае слово void указывает на отсутствие параметров. Вместо void круглые скобки можно было оставить пустыми.

    Описание функции, т.е. перечень команд, которые в ней будут выполняться обособляется фигурными скобками (которые называются операторами блока).

    Функция в C++, как и в большинстве языков программирования, понимается как некоторая подпрограмма, в момент вызова которой управление из основной программы передаётся в функцию, вместе с управлением может передаваться ряд аргументов (параметров). Когда функция завершит своё выполнение, то есть когда будут выполнены все инструкции перечисленные в теле функции, управление вернётся основной программе. Вместе с этим функция в программу вернёт некоторый результат.

    При запуске программы на C++ происходит выполнение функции main. Если такой функции в программе не будет, то программа не сможет выполняться. Явно вызывать функцию main не требуется. По договорённости, функция main должна возвращать значение типа int. то есть она может возвращать любое целочисленное значение. По другой договорённости, это значение интерпретируется операционной системой, как код ошибки запущенной программы. Ноль означает отсутствие ошибки.

    На четвёртой строке программы с помощью return ноль и возвращается, как результат функции. Для функции main. даже объявляя её как возвращающую целое число, и только для неё, можно ничего не возвращать.

    На пятой строке закрывается блок и соответствующее тело функции.

    На третей — происходит вывод на экран. Для этого мы пользуемся командой cout. Она не является частью самого языка C++, но описана в стандартной библиотеке, а именно, в её заголовочном файле iostream. Если бы данный заголовочный файл мы не подключили в начале программы, мы не могли бы использовать cout.

    Перед cout представлена инструкция:

    std — это пространство имён, определённое для всей стандартной библиотеки С++, а «::» — это оператор разрешения области видимости, который указывает, из какого пространства имён должен браться следующий за ним идентификатор.

    Пространство имён — группа идентификаторов, внутри которой все идентификаторы уникальны (не повторяются). С помощью идентификаторов, состоящих из латинских букв и цифр мы можем давать имена различным сущностям программы: переменным, функциям, методам, классам. С помощью разных пространств имён можно использовать одни и те же имена в одной и той же программе. Кроме того, пространство имён позволяет решить следующую программу: в собственных программах для создания сущностей мы можем использовать те же имена, что задействованы в сторонних библиотеках, в том числе, в стандартной библиотеке C++.

    Если отсутствует необходимость в использовании разных пространств имён в рамках одной программы, то можно однажды задать пространство и далее обращаться ко всем именам без его указания.

    Наша первая программа может выглядеть так:

    На всей стандартной библиотеке единое пространство имён std помогает объединить описанные в библиотеке ресурсы в единое целое. Стандартная библиотека устроена так, что в разных её файлах нет повторяющихся идентификаторов на одном уровне. Стандартная библиотека распределена по разным заголовочным файлам, каждый из которых мы можем подключить к программе, но пространство имён везде общее — std .

    Как уже упоминалось, в методе main может отсутствовать return. не смотря на то, что метод объявленный, как возвращающий значение целого типа. Аналогично, может отсутствовать void внутри аргумента функции main .

    Задачи

    Итак, вам уже знакомы основы синтаксиса на примере языка Java. Давайте их вспомни, решив несколько простых задач.

    1. Создать программу, выводящую на экран ваше имя.
    2. Создать программу, вычисляющую и выводящую на экран значение выражения 20x?+15?.
    3. Создать программу, вычисляющую и выводящую на экран среднее арифметическое двух вещественных чисел, сохранённых в переменных x и y .
    4. Создать программу, вычисляющую и выводящую на экран куб числа, сохраненного в целой переменной num .
    5. Создать программу, вычисляющую и выводящую на экран сумму цифр натурального двухзначного числа, сохраненного в целой переменной chis .
    6. Создать программу, вычисляющую и выводящую на экран сумму цифр натурального трёхзначного числа, сохраненного в целой переменной s .

    Пример программы игры в крестики-нолики

    Пример программы игры в крестики-нолики

    Двумерные массивы чаще всего используются для создания игр, использующих поле (матрицу). Мы рассмотрим простейшую программу игры в крестики-нолики.

    Матрица для игры в крестики-нолики имеет вид двумерного массива символов 3 на 3. Пользователь всегда играет крестиками, а компьютер - ноликами. Когда ходит пользователь, «X» помещается в указанную позицию матрицы. Когда наступает очередь ходить компьютеру, он сканирует матрицу и помещает «О» в пустое место матрицы. (Это достаточно тупая игра и можно получить определенное удовольствие, немного ее улучшив.) Если компьютер не может найти пустой ячейки, он выводит результат игры и завершает работу программы. Игровая матрица инициализируется так, что в начале игры она содержала пробелы. Ниже показана программа крестики-нолики:

    #include <stdio.h>
    #include <stdlib.h>

    /* простая программа игры в крестики-нолики */
    #define SPACE ' '
    char matrix[3][3] = < /* матрица для крестиков-ноликов */
    ,
    ,

    > ;
    void get_computer_move(void), get_player_move(void);
    void disp_matrix(void);
    char check (void);
    int main()
    <
    char done;
    printf("This is the game of Tic-Tac-Toe.\n");
    printf("You will be playing against the computer.\n");
    done = SPACE;
    do <
    disp_matrix(); /* вывод игровой доски */
    get_player_move(); /* ходит игрок */
    done = check(); /* проверка на победу */
    if (done!=SPACE) break; /* победитель */
    get_computer_move(); /* ходит компьютер */
    done=check(); /* проверка на победу */
    > while(done==SPACE);
    if(done=='X') printf("You won!\n");
    else printf("I won. \n");
    disp_matrix(); /* отображение результирующего положения */
    return 0;
    >

    /* ввод хода игрока */
    void get_player_move(void)
    <
    int x, у;
    printf("Enter coordinates for your X.\n");
    printf("Row? ");
    scanf ("%d", &x);
    printf("Column? ");
    scanf("%d", &y);
    х--; y--;
    if (x<0 || y<0 || x>2 || y>2 || matrix[x] [y] !=SPACE)
    <
    printf("Invalid move, try again.\n");
    get_player_move();
    >
    else matrix[x][y]='X';
    >

    /* ход компьютера */
    void get_computer_move(void)
    <
    register int t;
    char *p;
    p = (char *) matrix;
    for (t=0; *p!=SPACE && t<9; ++t) p++;
    if(t==9)
    <
    printf("draw\n");
    exit(0); /* game over */
    >
    else *p = 'O';
    >

    /* отображение игровой доски */
    void disp_matrix(void)
    <
    int t;
    for(t=0; t<3; t++)
    <
    printf(" %c | %c | %c", matrix[t][0], matrix[t][1], matrix[t][2]);
    if(t!=2) printf("\n-|-|-\n");
    >
    printf("\n");
    >

    /* проверка диагоналей */
    if(matrix[0] [0]==matrix [1] [1] && matrix[1] [1]==matrix [2] [2] )
    return matrix[0][0];
    if(matrix[0][2]==matrix[1][1] && matrix[1][1]==matrix[2] [0])
    return matrix[0][2];
    return SPACE;
    >

    Массив инициализируется пробелами, поскольку пробелы используются для отображения вакантного состояния функциями get_player_move() и get_computer_move(). Тот факт, что пробелы используются вместо нулевых символов, упрощает функцию отображения матрицы - disp_matrix(), позволяя выводить содержимое массива на экран без преобразований. Обратим внимание, что процедура get_player_move() вызывает рекурсию в случае ввода неправильного значения. Это пример использования рекурсий для упрощения подпрограммы и уменьшения количества кода, необходимого для реализации функции.

    В главном цикле каждый раз при вводе хода вызывается функция check(). Данная функция определяет, выиграна ли игра и, если да, то кем. Функция check() возвращает «X» в случае выигрыша пользователя, или «О», если выиграл компьютер. В противном случае она возвращает пробел. check() сканирует строки, столбцы и диагонали с целью поиска выигрышной конфигурации.

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

    Простая программа на Си

    Пример разбора листинга простой программы на Си

    power. // Начало функции power

    // Параметры функции передаются через стек (специально отведенная под это область памяти),

    // адрес вершины которого находится в регистре esp. Всякие локальные переменные тоже будем

    // размещать в стеке. Для этого сформируем кадр - часть стека, отведенная под локальные

    // переменные. Указывать на кадр будет регистр ebp - через него будем обращаться к локальным

    // переменным. Через него же будем обращаться и к параметрам подпрограммы.

    // Кстати, стек растет в сторону уменьшения адреса. Т.е. уменьшаем e sp. значит добавляем в стек.

    pushl % ebp // Сохраняем указатель кадра вызвавшей программы

    // (помещаем в стек значение в регистре ebp )

    movl % esp ,% ebp // -ормируем указатель нашего кадра:

    // пишем в регистр ebp значение регистра esp

    // (это будет начало кадра для локальных переменных)

    subl $24,% esp // Вычесть из esp значение 24

    // (смещаем вершину стека на 24 байта вперед - резервируем

    // место под локальные переменные).

    movl $1065353216,-8(% ebp ) // Записать по адресу -8(% ebp ) значение $1065353216

    // Видимо, это s =1 в исходной программе. Т.е. переменная s находится

    // по адресу -8(% ebp ), а $1065353216 - это вещественная единица.

    movl $0,-4(% ebp ) // Записать по адресу -4(% ebp ) значение $0

    // В программе на Си - это операция i=0.

    L 3: // Просто такая метка в программе, сюда можно перейти

    movl -4(% ebp ),% eax // Записать в ax значение из памяти (переменная i )

    cmpl 12(% ebp ),% eax // Сравнить значение из памяти и ax

    // Видимо, это сравнение i < n. т.е. 12(% ebp ) - адрес переменной-параметра n

    // Заметили? Локальные переменные лежат по адресам (% ebp - x ),

    // а параметры функции - по адресам (% ebp + x ), т.к. они уже были в стеке

    // до вызова функции.

    jl. L 6 // Переход, если больше (иначе нет перехода)

    jmp. L 4 // Безусловный переход на метку. L 4 (там конец функции)

    flds -8(% ebp ) // Загрузка в st (0) значения из памяти (переменная s ).

    fmuls 8(% ebp ) // Умножение st (0) = st (0) * х

    fstps -8(% ebp ) // Выталкивание значения из st (0) в память (в s )

    incl -4(% ebp ) // Увеличение значения в памяти на 1 ( i++ )

    jmp. L 3 // Безусловный переход на метку. L 3 (след. итерация)

    flds -8(% ebp ) // Загрузка в st (0) значения из памяти (переменная s )

    // (его мы вернем в качестве результата функции)

    jmp. L 2 // Безусловный переход на. L 2

    leave // Э то эквивалентно movl % ebp. % esp ; popl % ebp

    // Так мы восстанавливаем состояние стека и кадра, которые были до вызова

    ret // Выход из подпрограммы ( power )

    section. rodata // Тут хранятся всякие строки, константы и т.п.

    string " Result. % f \ n "

    main. // Начало функции main

    pushl % ebp // Сохраняем указатель кадра вызвавшей программы

    movl % esp ,% ebp // -ормируем указатель нашего кадра

    subl $24,% esp // Выделяем место в стеке под кадр

    addl $-8,% esp // И еще немного- не мог сразу вычесть 30?

    // Вот что значит без оптимизации!

    pushl $10 // Поместить в стек число 10

    flds. LC 0 // Поместить в st (0) значение по адресу. LC 0

    subl $4,% esp // Вычесть из esp число 4

    // Это мы выделили 4 байта в стеке под параметр

    fstps (% esp ) // Поместить в память по адресу в esp число из st (0)

    // Вот этот самый параметр и записали в стек

    call power // Вызов функции power

    // Тут мы знаем, что результат вернулся в st (0)

    // (кстати, если результат целочисленный, он возвращается в eax )

    addl $16,% esp // Чистим место в стеке (увеличиваем указатель стека)

    fstps -4(% ebp ) // Записываем в память результат функции

    // из вершины стека сопроцессора st (0)

    // (видимо, в переменную y )

    addl $-4,% esp // Выделяем место (4 байта) в стеке

    flds -4(% ebp ) // Помещаем в стек сопроцессора, т.е. st (0), переменную y

    subl $8,% esp // Выделяем еще место (8 байт) в стеке

    fstpl (% esp ) // Записываем в выделенное место значение из st (0)

    pushl $. LC 1 // Помещаем в стек адрес .LC1

    // Теперь в стеке есть параметры - адрес строки и

    // значение переменной y (а можно было проще-)

    call printf // Вызов функции printf

    addl $16,% esp // Очистка стека от параметров

    xorl % eax ,% eax // Обнуление регистра ax

    jmp .L7 // Скачем к выходу

    leave // Восстанавливаем указатели стека и кадра ( esp и ebp )

    ret // Возврат из функции main

    ident "GCC: (GNU) 2.95.4 20011002 ( Debian prerelease)"

    Замечания по синтаксису ассемблера AT&T

    - К названиям команд, имеющим операнды, добавляются суффиксы, отражающие размер операндов:

    l - двойное слово

    q - учетверенное слово

    s - 32-битное число с плавающей точкой

    l - 64-битное число с плавающей точкой

    t - 80-битное число с плавающей точкой

    - Если команда имеет несколько операндов, операнд-источник записывается первым, а операнд-приемник - последним.

    Регистровый операнд всегда начинается с символа "%":

    xorl % eax. % eax // обнулить регистр eax

    Непосредственный операнд всегда начинается с символа "$":

    movl $ variable. % edx // записать в edx адрес переменной variable ( variable - переменная в памяти)

    Косвенная адресация использует немодифицированное имя переменной:

    pushl variable // записать значение переменной variable в стек ( variable - переменная в памяти, стек также занимает область памяти)

    Примеры более сложных способов адресации памяти:

    addr (%ebx,%edi,4) - адрес. addr + ebx + edi * 4

    (%ebx,%eax,4) - адрес. ebx + eax * 4

    -2(% ebp ) - адрес. -2 + ebp

    (,%edi,2) - адрес. edi * 2

    (% ebx ) - адрес: ebx

    Книга по С - Пример простой программы на языке Си

    Следующий простой пример, но вполне законченной программы поможет понять многие из расмотренных ранее принципов построения программ на языке Си. Наша первая программа вводит два числа, вычисляет их сумму и печатает результат с поясняющим текстом "Cумма "
    (пример 1.1)

    Дадим некоторые пояснения. В языке Си любая пограмма, состоит из нескольких программных едениц и каждая из них - функция. Функции в Си подобны функциям или подпрограммам в Фортране или процедурам в Паскале, Имена функций выбираются произвольно (только латинскими буквами), но одно из них main. именно с нее начинается выполнение программы. Такая главная функция обычно обращается к другим функциям, которые находятся в одном файле с головной программой или извлекают из библиотеки предварительно подготовленных функций.Функция main не имеет аргументов, поэтому список ее выглядит так: ( ). Скобки < > обрамляют операоры, которые реализуют собственно алгоритм. Эти скобки аналогичны BEGIN - END в Паскале.
    Строка int a,b,c; объявляет a,b,c переменными целого типа. Все используемые в программе переменные должны быть объявлены. Далее идут опрераторы присваивания к a значение 5. а к b - 7. с - значение их суммы. Значения переменных типа int лежат в диапазоне [-32768; 32767]. Функция printf выводит на экран: СУММА = 12.

    Рассмотрим теперь функцию scanf предназначенную для форматного ввода данных. Функция scanf в качестве фактических параметров использует адреса переменных, а не их значения. Для этого перед соответствующим параметром ставят знак & - символ взятия адресса. Например, &XL означает "адрес перменной XL ", а не значение, которое переменная имеет в данный момент.

    Строка форматов функции scanf указывает, какие данные ожидаются на входе. Если функция встречает в форматной строке знак %. за которым следует символ преобразования, то она будет пропускать на входе символы до тех пор, пока не встретит какой-нибудь не пустой символ.

    Предыдущяя программа страдает одним недостатком: программа вычисления суммы годится только для одного конкретного случая, когда a=5, b=7. Улучшим ее, заменив соответствующие операторы присваивания вызовом функции scanf (пример 1.2).

    /* Ввод двух чисел, вычисление суммы и печать результата*/

    Форматная строка предписывает функции scanf ввести десятичное число, которое надо поместить в переменную a. затем через пробел ввести второе десятичное число, которое надо присвоить переменной b .Обратите внимание, что программа начинается со строки коминтарием. /*. */ , транслятор пропускает любые символы между /* и */ и их можно использовать для пояснений.

    Примеры программ

    Примеры программ

    В данном разделе представлено огромное количество решенных математических задач на языке программирования С++. Наличие такого количества однотипных программ позволит в полной мере понять суть решения любого проблемного направления. Просмотрев логику решения десятка примеров, можно с легкостью решить последующие или любой другой пример.

    Представленные примеры разбиты на подгруппы, т.е. если для решения определенной математической задачи используется оператор if, тогда его следует искать в категории «Условный оператор (if)»; если для решения определенной математической задачи используется оператор while, тогда его следует искать в категории «Циклы (while)»; в более сложных задачах используется, как оператор if так и while. и т.д.

    Ниже представлены типовые задания реализации алгоритмов (if)

    Ниже представлены типовые задания через реализацию оператором (while)

    x = 4,71; a = 12,3; b = 3,11; c = 11,2; d = 0,13; i = 1


    Ниже представлены решенные задачи по обработке массивов (матриц) средствами языка программирования С/С++

    Даны натуральные числа n, a1 …, an. Получить произведение членов последовательности a1, …, an, удовлетворяющих условию 2^k

    Посетители сайта Регистрация Мы в сети Новенькое

    Пишем первую программу на языке C

    Первая программа на C++ — урок 1

    В качестве среды разработки под Windows автор советует использовать Visual Studio 2008 (800 Мб), если у вас Windows XP, Visual Studio 2013 (6.5 Гб) для Windows 7 и выше, или Dev C++ 5 (41 Мб) для тех, у кого слишком медленный интернет для загрузки Visual Studio. Пользователям Unix-подобных систем, потребуется компилятор GCC и любой текстовый редактор, например Vim .

    После того, как вы установили все необходимое, приступим к написанию первой программы.

    Создание проекта Для Visual Studio

    Откройте меню «Файл > Создать > Проект». Перейдите на вкладку «Общие» и выберите «Пустой проект». Придумайте проекту любое название, например «lesson1» и нажмите «OK».

    В окне обозревателя решений (обычно он находится в левом верхнем углу) щелкните правой кнопкой на папке «файлы исходного кода». В диалоговом окне выберите пункт меню «Добавить > Создать элемент». Введите название для нового файла — main.cpp и нажмите кнопку «Добавить».

    Для GCC

    Создайте пустой файл и откройте его любым текстовым редактором, в котором есть подсветка синтаксиса.

    Код первой программы

    Наберите следующий код:

    Описание синтаксиса

    Директива #include используется для подключения других файлов в код. Строка #include <iostream>. будет заменена содержимым файла «iostream.h», который находится в стандартной библиотеке языка и отвечает за ввод и вывод данных на экран.

    #include <cstdlib> подключает стандартную библиотеку языка С. Это подключение необходимо для работы функции system .

    Содержимое третьей строки — using namespace std; указывает на то, что мы используем по умолчанию пространство имен с названием «std». Все то, что находится внутри фигурных скобок функции int main() <> будет автоматически выполняться после запуска программы.

    Строка cout << "Hello, world!" << endl; говорит программе выводить сообщение с текстом «Hello, world» на экран.

    Оператор cout предназначен для вывода текста на экран командной строки. После него ставятся две угловые кавычки ( << ). Далее идет текст, который должен выводиться. Он помещается в двойные кавычки. Оператор endl переводит строку на уровень ниже.

    Если в процессе выполнения произойдет какой-либо сбой, то будет сгенерирован код ошибки, отличный от нуля. Если же работа программы завершилась без сбоев, то код ошибки будет равен нулю. Команда return 0 необходима для того, чтобы передать операционной системе сообщение об удачном завершении программы.

    — В конце каждой команды ставится точка с запятой.

    Компиляция и запуск

    Теперь скомпилируйте и запустите программу. Тем, кто пользуется MS Visual Studio, нужно нажать сочетание клавиш «Ctrl+F5». Пользователям GCC нужно выполнить следующие команды:

    Если программа собралась с первого раза, то хорошо. Если компилятор говорит о наличии ошибок, значит вы что-то сделали неправильно.

    Прочитайте текст ошибки и попробуйте ее исправить своими силами. Если не получится, напишите о вашей проблеме в комментариях.

    В качестве домашнего задания, переделайте эту программу так, чтобы вместо, сообщения «Hello, World» выводилось сообщение «Hello, User».

    Следующий урок: Переменные и типы данных в C++ >.