Министерство общего и профессионального Образования российской федерации
Московский государственный институт электроники и математики
(Технический университет)
Кафедра информационных технологий в
Автоматизированных системах
Отчет по лабораторным работам по дисциплине
“Системы программирования” (Язык Си)
Москва 1999
/* Лабораторная работа #1 (Одномерные Массивы)
Даны два одномерных массива целых чисел A и B. Вычислить одномерный массив
C, который содержит:
Неповторяющиеся элементы массива A, которых нет в массиве B
*/
# include<stdio.h>
void main()
{
int a[100],b[100],c[100],n,m,k,i,j,l,flag;
k=0;
printf("Введите кол-ко элементов в массиве А :");
scanf("%d",&n);
printf("Введите %2d элементов в массив А\n",n);
for (i=0;i<n;scanf("%d",&a[i++]));
printf("Введите кол-ко элементов в массиве B :");
scanf("%d",&m);
printf("Введите %2d элементов в массив B\n",m);
for (i=0;i<m;scanf("%d",&b[i++]));
for (i=0;i<n;i++)
{
flag=1;
j=0;
l=0;
while (l<n && flag!=0)
if (a[l]!=a[i] || l==i) l++;
else flag=0;
if (flag!=0)
{
while (flag!=0 && j<m)
{
if (a[i]!=b[j]) j++;
else flag=0;
}
if (flag==1) c[k]=a[i],k++;
}
}
if (k==0) printf("Массив C П У С Т !!!!!!! \n");
else
{
printf("Массив С состоит из %5d элементов\n",k);
for (i=0;i<k;i++)
printf("%3d",c[i]);
}
}
/*Лабораторная работа #2 (Двумерные массивы (с использованием указателей))
В заданном двумерном массиве поменять местами следующие два элемента:
Первый и последний положительные
*/
# include <stdio.h>
main()
{
int a[100][100],n,m,i,j,*first,*second,*x;
first=second=NULL;
printf("Введите количество строк в матрице А :");
scanf("%d",&n);
printf("Введите количество столбцов в матрице А :");
scanf("%d",&m);
printf("Введите матрицу А %dХ%d \n",n,m);
for (i=0;i<n;i++)
{
printf("Введите %d элементов в %d строке\n",m,i+1);
for (j=0;j<m;scanf("%d",&a[i][j++]));
}
printf("Матрица: \n");
for (i=0;i<n;i++)
{
for (j=0;j<m;printf("%6d",a[i][j++]));
printf("\n");
}
for (i=0;i<n||first==NULL&&second==NULL;i++)
for (j=0;j<m||first==NULL&&second==NULL;j++)
{
if (a[i][j]>0)
if (first==NULL) first=&a[i][j];
else
second=&a[i][j];
}
if (second==NULL) printf("Матрица не изменилась !!\n");
else
{ printf("Местами поменялись элементы %2d и %2d\n",*first,*second);
*x=*second;
*second=*first;
*first=*x;
printf("Элементы поменялись %2d и %2d\n",*first,*second);
printf("Теперь матрица выглядит так\n");
for (i=0;i<n;i++)
{
for (j=0;j<m;printf("%6d",a[i][j++]));
printf("\n");
}
}
}
/*Лабораторная работа #3 (Символьные строки. Подпрограммы)
Разработать программу для решения указанной ниже задачи, состоящей
из трех частей. Каждую часть оформить в виде отдельной подпрограммы
Ввод и вывод осуществлять в главной программе.
Задание #1
Даны символьные строки (ввод осуществляется до тех пор, пока не будет
введена пустая строка)
Требуется:
Выделить из каждой строки и напечатать подстроки заключеннные
круглые скобки
Задание #2
Среди выделенных подстрок найти подстроку содержащую максимальную
цепочку из единиц
Задание #3
Преобразовать исходную строку, которой принадлежит найденная подстрока,
следующим образом:
Удалить все символы отличные от русских букв
*/
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void substr(int n,int *n1,char str[][81],char str1[][81],int num[]);
int nomstr(char str1[][81],int n1);
void udal(char *s);