Архив рубрики: С (Си)

Язык Си: выборы большинством голосов

Начинается третья неделя обучения Computer Science CS50 (Гарвард) и мы продолжаем учить язык C. Первое задание: реализация системы голосования, где выигрывает кандидат, получившей наибольшее количество голосов, т.н. мажоритарная система по большинству или просто «победитель получает все» (plurality.c). Пользователь может выбрать … Читать далее

Рубрика: С (Си) | Оставить комментарий

Язык Си: игра «Эрудит» с другом

На второй неделе обучения по курсу Computer Science CS50 (Harvard) после выполнения всех индивидуальных заданий мы переходим к лабораторной работе по языку C, которую нужно выполнять в группе. Это будет интересная задача — написать код игры «Эрудит» (Scrabble.с). Суть задания: … Читать далее

Рубрика: С (Си) | Оставить комментарий

Язык Си: продвинутое шифрование по-цезарски

Продолжаем выполнять домашние задания из Problem set 2 в курсе Computer science CS50 (Harvard). В прошлый раз мы научились шифровать текст сдвигом букв на некое число (ключ), введенный пользователем. А в этот раз решим задачу посложнее, это будет программа Substitution.c … Читать далее

Рубрика: С (Си) | Оставить комментарий

Язык Си: шифрование текста Цезаря

Продолжаем делать домашние задания по курсу Computer science CS50 (Harvard), и в этот раз нужно написать код программы и зашифровать текстовое послание. Суть задания ceasar.c заключается в том, чтобы программа запрашивала ввод текста пользователя, а затем выводила ниже строку текста … Читать далее

Рубрика: С (Си) | Оставить комментарий

Язык Си: расчет уровня сложности текста по индексу Колман-Лиау

Продолжаем проходить курс Computer Science CS50 (Harvard), и в этот раз будем делать задание на расчет уровня сложности текста по индексу Колман-Лиау (readability.c) на языке программирования C. Согласно идее двух авторов метода, можно оценить сложность текста и таким образом распределить … Читать далее

Рубрика: С (Си) | Оставить комментарий

Язык Си: проверка номера кредитной карты по алгоритму Луна

В курсе cs50 (Гарвард) есть задача по программированию на Си по выявлению правильности номера кредитной карты через алгоритм Луна (credit.c). Разберем эту задачку и покажем два варианта еще решения. Итак. На любой кредитке напечатан номер, который также хранится в базе … Читать далее

Рубрика: С (Си) | Оставить комментарий

Язык Си: сколько монет дает кассир

Изучая жадные алгоритмы (Greedy Algorithms) на языке программирования C в CS50 (Гарвард), давайте решим задачу про монеты (Cash.c). Допустим, что вам нужно дать сдачу покупателю в магазине и вы хотите свести к минимуму количество монет, которые вы выдаете каждому покупателю.  … Читать далее

Рубрика: С (Си) | Оставить комментарий

Язык Си: рисуем пирамидку из Mario

Любопытная задачка для новичков из CS50 (Гарвард). Задача: нарисовать пирамидку из игры Марио (mario-less.c) при помощи символов # (решетка или хэш). Пользователя спрашивают: «Из скольких блоков сделать пирамиду?», он вводит число и пирамидка рисуется, с выравниванием по правому краю, вот … Читать далее

Рубрика: С (Си) | 1 комментарий

Язык C: примеры неявного преобразования типов

Одна из самых жестких вещей в языке C— это неявное преобразование типов. Если вы не будете следить за этим — у вас будут большие проблемы. Попробуйте запустить этот код, чтобы узреть возможные траблы: #include <stdio.h> int main (void) { int … Читать далее

Рубрика: С (Си) | Оставить комментарий

[Язык C] Арифметические прогрессии и MMORPG

Я заядлый игрок в MMORPG и для меня изучение программирования становится намного веселее и интереснее, если у написанных программ есть какая-то привязка к играм. Это особенно важно, если речь идет о каких-то абстрактных математических вещах, которые мне (гуманитарию) весьма непросто воспринимать. … Читать далее

Рубрика: С (Си) | Оставить комментарий

[Язык C] Приоритет операций

Как мне кажется, более удачно отформатировал приоритеты операций K&R: → ( )  [ ]  ->  . ← !  ~  ++   – –   +  –  *  &  (type)  sizeof → *  /  % → +  — → <<  >> … Читать далее

Рубрика: С (Си) | Оставить комментарий

[Язык C] Функция memcpy ()

Помню, что когда я увидел первый раз в коде функцию memcpy () — не понял, что это за неведомая зверушка. Никто и думать не думал написать комментарий, который ее объясняет (не, ну потом понимаешь, что эт логично.. не писать же … Читать далее

Рубрика: С (Си) | Оставить комментарий

[Язык C] Символьный ввод-вывод и перенаправление (глава 8)

Восьмая глава в книжке Стивена Прата “C Primer Plus” (в новой редакции она называется «Символьный ввод-вывод и проверка достоверности ввода«). EOF (end of file) — обозначение конца файла. Ctrl+Z в Windows, Ctrl+D в UNIX. Пользователи особо не задумываются о том, … Читать далее

Рубрика: С (Си) | 2 комментария

[Язык C] Коварные символы новой строки на вводе

При выполнении последнего упражнения в главе 7, столкнулся с проблемой считывания строки ввода, если в ней встречается перевод строки. Везде это объясняется несколько заумно, попробую на пальцах: Проблема в том, что когда вы вводите с клавиатуры в scanf любой ввод … Читать далее

Рубрика: С (Си) | 1 комментарий

[Язык C] Перенос строки оператора printf

Подзабыл, как правильно «резать» длинные куски printf, поэтому решил написать эту шпаргалку. Допустим у вас длиннющее выражение printf и нужно его разбить на несколько небольших для удобочитаемости (или чтобы влезало при встраивании на сайт, например). Есть три способа:

Рубрика: С (Си) | Оставить комментарий

[Язык C] Ввод симола в scanf (%d): ошибка бесконечного цикла

При выполнении заданий из седьмой главы, впервые столкнулся с «защемлением цикла«. Допустим пользователь вводит символ q в поле (не делайте так, если у вас нет возможности прервать программу): #include <stdio.h> int main (void) { int n; scanf(«%d», &n); while (n … Читать далее

Рубрика: С (Си) | Оставить комментарий

[Язык C] Упражнения по программированию (глава 7)

Задания из седьмой главы книжки Стивена Прата “C Primer Plus” —  «Управляющие операторы С: ветвление и переходы«. 1. Напишите программу, которая читает входные данные до тех пор, пока не встретится символ #, а затем отображает количество прочитанных пробелов, количество символов … Читать далее

Рубрика: С (Си) | 3 комментария