
- •Министерство образования и науки российской федерации
- •Содержание
- •Лабораторная работа 1. "Одномерные массивы"
- •Пример решения задачи
- •Лабораторная работа 2. "Двумерные массивы (с использованием указателей)"
- •Пример решения задачи
- •Лабораторная работа 3. "Символьные строки. Подпрограммы"
- •Выбор варианта
- •Пример решения задачи
- •If(*s)//как только обнаружена русская буква,
- •Лабораторная работа 4. "Структуры. Файлы "
- •Примеры решения задач
- •Void input (tv *tv, int *k) //ввод массива телевизоров
- •Input(tv, &k);//ввод массива телевизоров
- •Void input (tv *tv, int *k)//чтение данных из файла
- •Input(tv, &k);//ввод массива структур из файла
- •Лабораторная работа 5. "Списки. Динамические переменные"
- •Выбор варианта
- •Пример решения задачи
- •Void vivod(stul* stack, char name[])//вывод списка в файл
- •Vivod(first,name2);//вывод результата в файл
- •Лабораторная работа 6. "Рекурсия"
- •Примеры решения задач
- •Void setleft(node*p, int X)//присоединение числа X к узлу p слева
- •Void setright(node*p, int X) //присоединение числа X к узлу p справа
- •Int max,min;//максимальное и минимальное число в дереве
- •Int numb;//искомое число
- •If (!der) puts("дерево пустое");
- •Пример использования рекурсии для проверки правильности записи арифметического выражения
- •If (fae () || *pf ) /* то есть в выражении есть ошибка,
- •109028 Москва, б. Трехсвятительский пер., 3/12.
- •113054 Москва, ул. М. Пионерская, 12.
If(*s)//как только обнаружена русская буква,
return i;//возвращает номер строки, т.е. выходит из функции
}
return(k);//вернет –1, если русских букв не было
}
/*Функция вставляет три звездочки после каждой латинской буквы
в строке, которой принадлежит найденная подстрока.
Возвращает 1 если вставка была и 0 в противном случае*/
int ins(char *s)
{ char *s1,s2[4]="***",*j;
int f=0;//признак вставки
for(s1=s;*s1;s1++)
if(*s1>='A' && *s1<='Z' ||*s1>='a' && *s1<='z')
{//если символ латинская буква, освобождаем место для вставки *
j=strlen(s)+s; //указатель в конце строки - на нуль-символе
for(;j>s1;j--)//сдвиг символов вправо на 3 позиции,
// начиная с последнего символа
*(j+3)=*j;
s1++;//ставим указатель на символ, расположенный после
// латинской буквы
strncpy(s1,s2,3);//копируем звездочки
f=1;//вставка была
}
return f;
}
void main()
{ int n=0,n1,num[100],f,i,k;
char str [10][81],str1[10][81];
clrscr();
//ввод строк до пустой строки
printf("Введите строки: \n");
while(n<10 && *gets(str[n]))n++;;
substr(str,n,str1,&n1,num);//выделение подстрок
if (n1==0)
printf("Нет подстрок! \n");
else
{
printf("Выделено %d подстрок: \n",n1);
for(i=0;i<n1;i++)
puts(str1[i]);
k=rus(str1,n1);//поиск номера подстроки с русской буквой
if(k==-1)
printf("Нет строк с русскими буквами!");
else
{
printf("Выделенная строка: %s\n",str1[k]);
if(f = ins(str[num[k]]))//если вставка была
printf("Преобразованная строка: %s\n",str[num[k]]);
else printf("Нет вставки\n");
}
}
getch();
}
Лабораторная работа 4. "Структуры. Файлы "
Н
аписать программу, которая вводит в режиме запросов заданное число структур вида (в зависимости от номера варианта):
Запрос выводится с новой строки для каждого поля. Например:
После ввода массива структур программа ищет в нем следующую информацию:
Названия телевизоров с размером по диагонали больше 50 см.
Фамилии директоров, производящих телевизоры стоимостью свыше 7000 руб.
Города, в которых производятся телевизоры стоимостью менее 4000 руб.
Заводы, производящие телевизоры с самым большим размером экрана.
Названия телевизоров с самым маленьким размером экрана.
Фамилии директоров заводов, выпускающих самые дешевые телевизоры.
Города, в которых производятся самые дорогие телевизоры.
Названия самых дешевых цветных телевизоров.
Названия самых больших черно-белых телевизоров.
Заводы, производящие только цветные телевизоры.
Города, в которых производятся только черно-белые телевизоры.
Фамилии директоров, производящих самые большие черно-белые телевизоры.
Заводы, производящие самые дешевые цветные телевизоры.
Заводы, производящие телевизоры с размером экрана не менее 50 см.
Фамилии директоров заводов, производящих телевизоры не дороже 3000 руб.
Производителей самых дорогих цветных телевизоров.
Названия самых дорогих холодильников.
Города, в которых производятся самые тяжелые холодильники.
Города, в которых производятся самые большие холодильники.
Адреса заводов, производящих только холодильники дороже 4000 руб.
Адреса заводов, производящих самые дешевые холодильники.
Адреса заводов, производящих самые маленькие холодильники.
Адреса заводов в Москве, производящих самые легкие холодильники.
Названия холодильников объемом более 250 литров, выпускаемых в Москве.
Города, в которых расположено максимальное число заводов.
Города, в которых производится наибольшее число марок холодильников.
Адреса заводов, производящих наибольшее число марок холодильников.
Названия самых больших холодильников, выпускаемых в Санкт-Петербурге.
Названия самых дешевых холодильников, выпускаемых в Москве.
Все различные цены на холодильники, выпускаемые в Москве.
Названия холодильников, производимых в городе с наименьшим числом заводов.
Города, где производится наибольшее число холодильников разного объема.
ПРИМЕЧАНИЕ: Номер варианта выбирается равным номеру по журналу.
II. Модифицировать программу, написанную в первом пункте, таким образом, чтобы она вводила структуры из текстового файла и записывала результаты в файл.