- •Т.В. Панова программирования на языке высокого уровня си Лабораторный практикум
- •Лабораторная работа №1. Обработка двумерных массивов данных………...…………….3
- •Лабораторная работа №1
- •Обработка двумерных массивов данных
- •I. Теоретические сведения.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •1. Выполнение общего задания.
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •Лабораторная работа №2
- •Работа со строками
- •I. Теоретические сведения.
- •1. Некоторые стандартные функции обработки строк и их использование
- •II. Контрольные вопросы.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Блок-схема алгоритма:
- •3. Текст программы:
- •4. Тестирование:
- •Лабораторная работа № 3
- •Функции
- •I. Теоретические сведения.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •2. Описание подхода к решению задачи.
- •2. Блок-схемы алгоритмов функций:
- •3. Текст программы:
- •4. Тестирование:
- •2. Блок-схемы алгоритмов функций обработки строки:
- •3. Текст программы:
- •4. Тестирование:
- •Лабораторная работа №4
- •Работа с файлами
- •I. Теоретические сведения.
- •Определение типов символов
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •1. Выполнение общего задания.
- •2. Блок-схема алгоритма:
- •3. Текст программы:
- •2. Текст программы:
- •2. Текст программы:
- •2. Текст программы:
- •2. Выполнение индивидуального задания.
III. Практическая часть.
1. Выполнение общего задания.
Разобрать задачи; по текстам программ составить алгоритмы решения задач.
Задача 1
1. Постановка задачи: подсчитать количество строк, символов и слов в текстовом файле (слова – любые связные группы символов, разделенные пробелами, табуляциями или разделителями строк).
2. Блок-схема алгоритма:
3. Текст программы:
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
int main()
{
FILE *f; // структура, описывающая файл
int s; // код введенного символа
int sim=0,word=0,line=0; // количество символов, слов, строк соответственно
int read_word=0; // признак чтения слова
char fileName[256]; // полное имя файла
printf("\nВвести имя файла: ");
scanf("%s", fileName);
f=fopen(fileName, "r"); // открытие файла для чтения
if (f!=NULL)
{
while ((s=fgetc(f))&&!feof(f)) // чтение символа пока не конец файла
{
if (c!='\n')
sim++; // увеличение количества символов
else
line++; // увеличение количества строк – подсчет символов перевода строки
if (!isspace(s) && !read_word) // если s – не разделитель
{
words++; // увеличение количества слов
read_word=1; // чтение слова
}
else
if (isspace(s))
read_word=0;
}
fclose(f);
printf("количество в файле символов =%d\n",sim);
printf("количество слов =%d\n",word);
printf("количество строк =%d\n",line);
}
else // ошибка открытия файла - вывод сообщения об ошибке
perror("\nФайл не может быть открыт для чтения");
getch();
return 0;
}
Задача 2
1. Постановка задачи: постранично просмотреть текстовый файл.
2. Текст программы:
#include <stdio.h>
#include <conio.h>
#define nstr 25
#define m 80
#define s 100
#define c 256
int Read_str(FILE *f,int num,long *p0,char st[]); /* функция вывода содержимого страницы по введенному номеру */
int main()
{
FILE *fd;
long p[s],*p1;
int np=0,i=nstr;
char fileName[c],str[m];
clrscr();
printf("\nInput file's name:");
gets(fileName);
fd=fopen(fileName,"r");
if (fd==NULL) // ошибка открытия файла
{
perror("File can't open!");
getch();
return 1; // выход из главной функции с кодом 1
}
else
{
p1=&p[0]; /* установить указатель на начало массива позиций начала страниц в файле */
while(np<s&&i==nstr) // просмотр страниц файла
{
*p1=ftell(fd);
i=0;
while(i<nstr&&fgets(str,m,fd)!=NULL)
i++;
p1++;
np++;
}
p1-=np;
Read_str(fd,np,p1,str);
fclose(fd);
getch();
return 0;
}
}
int Read_str(FILE *f,int num,long *p0,char st[])
{
long *p2;
int n,i;
while(1)
{
clrscr();
gotoxy(1,27);
do
{
printf("Number of the page ");
scanf("%d",&n);
}
while(n>num+1||n<=0);
p2=p0;
p2=p2+n-1;
fseek(f,*p2,SEEK_SET);
i=0;
while(i<nstr&&fgets(st,m,f)!=NULL)
{
gotoxy(1,1+i);
puts(st);
i++;
}
if (fgets(st,m,f)==NULL)
break;
getch();
}
return 0;
}
Задача 3
1. Постановка задачи: каждое число записано в новой строке текстового файла; считать числа из файла в одномерный массив.
2. Текст программы:
#include <stdio.h>
#include <conio.h>
#define n 10
void main(void)
{
int m[n],i=0,j;
FILE *f;
if ((f=fopen(“с:\file.txt”,”r”))==NULL) // открытие текстового файла
printf("\nФайл не открыт");
else
{
while (!feof(f)) // пока не конец файла считывать числа в массив
{
fscanf(f,”%d\n”,&m[i]); i++;
}
printf(“\n”);
for (j=0;j<=i;j++)
printf(“%d “,m[j]);
fclose(f); // Закрытие файла
}
getch(); return;
}
Задача 4
1. Постановка задачи: создать пустой двоичный файл, открыть существующий файл, добавить 20 переменных вещественного типа, прочитать их в обратном порядке.