Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_Программирование.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
51 Кб
Скачать
☆

Лекция № 33

Тема : Решение задач создания и обработки записей.

План

  1. Пример 1.

  2. Пример 2.

  3. Пример 3.

  4. Пример 4.

1. Пример 1.

Задача 1. По введенному году, месяцу и числу определить порядковый номер дня в году.

typedef struct {

int year;

int month;

int day;

} DATE;

int tab_days [2] [13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31},

{0,31,29,31,30,31,30,31,31,30,31,30,31}

};

int day_of_year (DATE d)

{

int I,k;

k = d.year%4 = = 0&&d.year%100! = 0 || d.year%400 = = 0; // високосный ли год

if (d.month < 1 || d.month > 12) return -1;

if (d.day < 1 || d.day > tab_days[k][d.month]) return -1;

for (i = 1; i < d.month; i++)

d.day + = tab_days[k][i];

return d.day;

}

2. Пример 2.

#include <stdio.h>

void main () {

DATE d;

int N;

puts (“Введите число, номер месяца и год”)ж

scanf (“%d%d%d”, &d.day, &d.month, &d.year);

N = day_of_year(d);

if (N < 0) puts (“Неверно введена дата !”);

else printf(“В %d году этот день имеет номер %d\n”, d.year, N);

}

3. Пример 3.

#include <iostream.h>

int main () {

enum paytype {CARD, CHECK};

paytype ptype;

union payment {

char card[25];

long check;

} info;

/*присваивание значений info и ptype */

switch (ptype) {

case CARD : cout << “Оплата по карте : “ << info.card; break;

case CHECK : cout << “Оплата чеком : “ << info.check; break;

}

return 0;

}

4. Пример 4.

#include <iostream.h>

int main () {

enum paytype {CARD, CHECK};

struct {

paytype ptype;

union {

char card[25];

long check;

}

} info;

/*присваивание значений info */

switch (info.ptype) {

case CARD : cout << “Оплата по карте : “ << info.card; break;

case CHECK : cout << “Оплата чеком : “ << info.check; break;

}

return 0;

}

Лекция № 34

Тема : Файлы. Директивы препроцессору и функции обработки файлов в языке С.

План

  1. Общие сведения.

  2. Доступ к файлу.

  3. Функции для работы с файлами.

  4. Примеры решения задач.

1. Общие сведения.

Язык С кроме стандартного ввода данных с клавиатуры и вывода результатов на экран предоставляет также возможность обмена при операциях ввода/вывода с внешними устройствами, в том числе, с файлами на диске.

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

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

С началом работы любой программы автоматически открываются некоторые стандартные потоки, например, стандартный ввод (его имя – stdin) и стандартный вывод (его имя – stdout). По умолчанию они связаны с клавиатурой и экраном терминала соответственно. Поэтому в тех функциях ввода/вывода, которые использовались до сих пор, не указывалось, из какого потока берутся или куда помещаются данные : это известно по умолчанию.

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