Как сделать справочник на c
Перейти к содержимому

Как сделать справочник на c

  • автор:

Документация по языку C

Узнайте, как использовать C и библиотеку времени выполнения C.

Начало работы с C в Visual Studio

Скачать

  • Скачать Visual Studio для Windows
  • Установка поддержки C/C++ в Visual Studio
  • Скачать только средств сборки для командной строки

Учебник

Использование компилятора и средств

Ссылка

  • Справочные сведения о сборке кода на C/C++
  • Проекты и системы сборки
  • Справочник по компилятору
  • Справочник по компоновщику
  • Дополнительные средства сборки
  • Ошибки и предупреждения

Язык C

Ссылка

  • Справочник по языку C
  • Элементы языка C
  • Структура программы
  • Объявления и типы
  • Выражения и присваивания
  • Операторы
  • Функции
  • Краткие сведения о синтаксисе языка C
  • Поведение, определяемое реализацией
  • Справочник по препроцессору в C/C++

Библиотека времени выполнения (CRT)

Ссылка

  • Особенности библиотеки CRT
  • Алфавитный указатель функций
  • Подпрограммы среды выполнения C по категориям
  • Глобальные переменные и стандартные типы
  • Глобальные константы
  • Глобальное состояние
  • Универсальные текстовые сопоставления

Значок отказа согласно Закону Калифорнии о защите конфиденциальности потребителей (CCPA)

  • Светлая
  • Темная
  • Высокая контрастность
  • Предыдущие версии
  • Блог
  • Участие в доработке
  • Конфиденциальность
  • Условия использования
  • Товарные знаки
  • © Microsoft 2024

Значок отказа согласно Закону Калифорнии о защите конфиденциальности потребителей (CCPA)

  • Светлая
  • Темная
  • Высокая контрастность
  • Предыдущие версии
  • Блог
  • Участие в доработке
  • Конфиденциальность
  • Условия использования
  • Товарные знаки
  • © Microsoft 2024

Справочник в EXCEL

Справочник состоит из двух таблиц: справочной таблицы, в строках которой содержатся подробные записи о некоторых объектах (сотрудниках, товарах, банковских реквизитах и пр.) и таблицы, в которую заносятся данные связанные с этими объектами. Указав в ячейке лишь ключевое слово, например, фамилию сотрудника или код товара, можно вывести в смежных ячейках дополнительную информацию из справочной таблицы. Другими словами, структура Справочник снижает количество ручного ввода и уменьшает количество опечаток.

Создадим Справочник на примере заполнения накладной.

В накладной будем выбирать наименование товара, а цена, единица измерения и НДС, будут подставляться в нужные ячейки автоматически из справочной таблицы Товары , содержащей перечень товаров с указанием, соответственно, цены, единицы измерения, НДС.

Таблица Товары

Эту таблицу создадим на листе Товары с помощью меню Вставка/ Таблицы/ Таблица , т.е. в формате EXCEL 2007 (см. файл примера ). По умолчанию новой таблице EXCEL присвоит стандартное имя Таблица1 . Измените его на имя Товары , например, через Диспетчер имен ( Формулы/ Определенные имена/ Диспетчер имен )

К таблице Товары , как к справочной таблице, предъявляется одно жесткое требование: наличие поля с неповторяющимися значениями. Это поле называется ключевым . В нашем случае, ключевым будет поле, содержащее наименования Товара. Именно по этому полю будут выбираться остальные значения из справочной таблицы для подстановки в накладную.

Для гарантированного обеспечения уникальности наименований товаров используем Проверку данных ( Данные/ Работа с данными/ Проверка данных ):

  • выделим диапазон А2:А9 на листе Товары ;
  • вызовем Проверку данных ;
  • в поле Тип данных выберем Другой и введем формулу, проверяющую вводимое значение на уникальность:

При создании новых записей о товарах (например, в ячейке А10 ), EXCEL автоматически скопирует правило Проверки данных из ячейки А9 – в этом проявляется одно преимуществ таблиц, созданных в формате Excel 2007 , по сравнению с обычными диапазонами ячеек. Проверка данных срабатывает, если после ввода значения в ячейку нажата клавиша ENTER . Если значение скопировано из Буфера обмена или скопировано через Маркер заполнения , то Проверка данных не срабатывает, а лишь помечает ячейку маленьким зеленым треугольником в левом верхнем углу ячейке.

Через меню Данные/ Работа с данными/ Проверка данных/ Обвести неверные данные можно получить информацию о наличии данных, которые были введены с нарушением требований Проверки данных .

Для контроля уникальности также можно использовать Условное форматирование (см. статью Выделение повторяющихся значений ).

Теперь, создадим Именованный диапазон Список_Товаров, содержащий все наименования товаров :

  • выделите диапазон А2:А9 ;
  • вызовите меню Формулы/ Определенные имена/ Присвоить имя
  • в поле Имя введите Список_Товаров ;
  • убедитесь, что в поле Диапазон введена формула =Товары[Наименование]
  • нажмите ОК.

Таблица Накладная

К таблице Накладная , также, предъявляется одно жесткое требование: все значения в столбце (поле) Товар должны содержаться в ключевом поле таблицы Товары . Другими словами, в накладную можно вводить только те товары, которые имеются в справочной таблице Товаров , иначе, смысл создания Справочника пропадает. Для формирования Выпадающего (раскрывающегося) списка для ввода названий товаров используем Проверку данных :

  • выделите диапазон C4:C14 ;
  • вызовите Проверку данных ;
  • в поле Тип данных выберите Список;
  • в качестве формулы введите ссылку на ранее созданный Именованный диапазон Список_товаров , т.е. =Список_Товаров .

Теперь товары в накладной можно будет вводить только из таблицы Товары .

Теперь заполним формулами столбцы накладной Ед.изм., Цена и НДС . Для этого используем функцию ВПР() :

или аналогичную ей формулу

Преимущество этой формулы перед функцией ВПР() состоит в том, что ключевой столбец Наименование в таблице Товары не обязан быть самым левым в таблице, как в случае использования ВПР() .

В столбцах Цена и НДС введите соответственно формулы: =ЕСЛИОШИБКА(ВПР(C4;Товары;3;ЛОЖЬ);»») =ЕСЛИОШИБКА(ВПР(C4;Товары;4;ЛОЖЬ);»»)

Теперь в накладной при выборе наименования товара автоматически будут подставляться его единица измерения, цена и НДС.

scanf в C/C++: простыми словами с таблицей

�� Рад вас видеть! В этой статье мы поговорим о функции scanf . Начнем мы с простого примера для разогрева. Потом мы рассмотрим все спецификаторы формата, которые эта функция поддерживает. Знание printf будет большим плюсом при знакомстве со scanf . В конце статьи вы найдете несколько упражнений для закрепления материала.

Иллюстрация scanf

Как считывать данные используя scanf

Для считывания данных из стандартного ввода в C и C++ можно воспользоваться функцией scanf . Эта функция доступна нам после подключения заголовочного файла (в C++ я рекомендую использовать ).

Функция scanf имеет следующий вид:

int scanf ( const char * format, ... );
  • Первым аргументом передается строка, которая описывает формат строки, которую мы будем считывать.
  • Вторым и последующими аргументами передаются параметры, которые ожидает функция scanf на основе переданного формата строки (первого аргумента).
  • Возвращает функция количество считанных аргументов. scanf может считать меньше указанного количества значений (вплоть до нуля), поскольку возможны ошибки и неожиданные символы при вводе.

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

#include int main()  int i; char name[10]; char c; printf("Загадайте число: "); scanf("%d", &i); printf("Звезды говорят что вы загадали %d\n", i); printf("Теперь введите имя и год рождения через пробел: "); int n = scanf("%s %d", name, &i); printf("Значений считано: %d\n", n); printf("%s, ваш приз без регистрации: $%d", name, i * 2); return 0; >

Пример работы программы:

Загадайте число: 42 Звезды говорят что вы загадали 42 Теперь введите имя и год рождения через пробел: Дима 1999 Значений считано: 2 Дима, ваш приз без регистрации: $3998

scanf игнорирует пробельные символы в начале при считывании.

В этой программе мы продемонстрировали, как можно использовать scanf для простого ввода. Давайте попробуем считать что-то посложнее:

#include int main()  int day, year; char month[20]; float price; printf("Введите дату, название месяца и цену (например, 15 Август 2023 $10.50): "); int n = scanf("%d %s %*d $%f", &day, month, &price); printf("День: %d\n", day); printf("Месяц: %s\n", month); printf("Цена: %.2f\n", price); printf("Значений считано: %d\n", n); return 0; >

scanf считывает строки %s до первого пробельного символа.

Пример работы программы:

Введите дату, название месяца и цену (например, 15 Август 2023 $10.50): 17 Июль 2010 $12.34 День: 17 Месяц: Июль Цена: 12.34 Значений считано: 3
  • Мы используем %*d для игнорирования года. Звездочка говорит scanf ‘у считать, но не сохранять значение.
  • Мы считываем день в day , строку в month и цену в price .
  • scanf возвращает количество успешно считанных аргументов, т.е. 3, потому что одно значение было проигнорировано.

Теперь давайте разберем все спецификаторы формата, которые можно использовать для считывания значений.

Certainly, here is the modified question with the changes you requested:

Какой будет вывод программы, если пользователь введет 10 20 30.50 ?

#include int main()  int a; float c; int n = scanf("%d %*d %f", &a, &c); printf("a: %d, c: %.2f, n: %d\n", a, c, n); return 0; >

a: 10, c: 30.50, n: 3
a: 10, c: 30.50, n: 2
a: 10, c: 20.00, n: 2
a: 10, c: 30.50, n: 1

Функция scanf считывает значения в переменные a и c , но значение 20 игнорируется из-за спецификатора формата %*d , который говорит scanf считать, но не сохранять значение. Поэтому, scanf вернет 2 (количество успешно считанных аргументов).

Структура спецификатора в scanf немного отличается от спецификатора в printf (в квадратных скобках опциональные модификаторы):

%[*][ширина][размер]тип

Как видите, обязательными являются только знак процента и тип; остальные можно не использовать.

Считывает целое число в восьмеричной, десятеричной или шестнадцатеричной системе.

scanf(«%i», &x); // x = 987
scanf(«%i», &x); // x = -987
scanf(«%i», &x); // x = 987

Считывает целое число в десятеричной системе.

scanf(«%d», &x); // x = -987

Считывает целое положительное число в десятеричной системе.

scanf(«%u», &x); // x = 987

Считывает целое число в восьмеричной системе.

scanf(«%o», &x); // x = -987

Считывает целое число в шестнадцатеричной системе.

scanf(«%x», &x); // x = -987
scanf(«%x», &x); // x = 987

Считывает вещественное число.

scanf(«%f», &x); // x = 12.34
scanf(«%f», &x); // x = 12.34
scanf(«%f», &x); // x = 12.34
scanf(«%f», &x); // x = 12.34

1.234e+01
12.34
987
0x1.8ap+3

Считывает строку до первого пробельного символа.

Считывает адрес в памяти.

scanf(«%p», &x); // x = 0x16dc

Считывает строку до тех пор, пока не встретит символ, который отличается от символов, внутри квадратных скобок.

Считывает строку до тех пор, пока не встретит символ, который совпадает с одним из символов, внутри квадратных скобок, после ^ .

Ничего не считывает. Записывает количество считанных символов до этого момента.

scanf(«C++%n11», &x); // x = 3

Считывает знак процента.

Мы можем указать звездочку после процента, чтобы не сохранять прочитанное значение:

int x; scanf("Пропустить: %*d, сохранить: %d", &x); printf("Число: %d", x);
Пропустить: 123, сохранить: 456 Число: 456

Звездочку можно использовать с любым типом из таблицы выше, не только с числами.

Мы можем указать максимальное количество символов, которые будут прочитаны функцией scanf при считывании значения:

char s[4]; // 3 символа + '\0' scanf("%3s", s); printf("Считали: %s", s);
C++11 Считали: C++

Как и звездочка, ширину можно указывать для любого типа.

По умолчанию, scanf считывает значения типа int , unsigned int , float и char (зависит от типа спецификатора). Чтобы считать, например, значение в переменную типа long long int , нам нужно явно указать размер:

#include #include int main()  long long int x; printf("Число: "); scanf("%lld", &x); // ^ добавили ll для long long int printf("Считали: %lld\n", x); // ^ в printf тоже не забываем return 0; >
Число: 10000000000 Считали: 10000000000

Без указания размера вывод будет выглядеть примерно так:

Число: 10000000000 Считали: 5705032704

Мы видим такой вывод, потому что десять миллиардов просто не влезают в тип int , который scanf пытается считать без явного указания размера.

Вот таблица размеров, которые можно использовать:

signed char / unsigned char

short int / unsigned short int

long int / unsigned long int

long long int / unsigned long long int

  1. Игнорирование значений:
    Напишите программу на C++, которая запрашивает у пользователя дату (день, месяц, год), но сохраняет только день и месяц, игнорируя год. Используйте спецификатор %*d для игнорирования значения года. После ввода пользователем данных, программа должна выводить сохраненные значения дня и месяца.
  2. Считывание различных типов данных:
    Создайте программу, которая запрашив

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *