Лабораторная работа №2
.docМинистерство образования РФ
Санкт-Петербургский государственный электротехнический университет
“ЛЭТИ”
Кафедра Вычислительной Техники
Лабораторная работа № 2
По дисциплине «Программирование»
«Массивы в языке Си»
Выполнил: Власюк А. В.
Преподаватель:
Сискович Т. И.
Факультет: КТИ
Группа: 3371
Санкт-Петербург
2003
Цель работы:
Изучение массивов и операций над ними в языке Си.
Задание на лабораторную работу:
Написать программу, которая многократно по желанию пользователя выполняет следующие действия:
-
Создаёт массив заданной пользователем длины.
-
Заполняет массив заданными пользователем значениями.
-
Производит контрольный вывод массива.
-
Сортировку массива.
-
Создаёт из старого массива новый, удовлетворяющий заданному условию.
-
Вывод нового массива.
Контрольный пример:
Длина исходного массива |
Элементы массива |
Результат |
-1 |
отсутствуют |
Число элементов массива заданно неверно |
3 |
3,1,2 |
контрольный вывод массива:3,1,2 отсортированный массив(по возрастанию):1,2,3 отсортированный массив(по убыванию):3,2,1 массив из положительных элементов:3,2,1 |
3 |
-1,2,-3 |
контрольный вывод массива:-1,2,-3 отсортированный массив(по возрастанию):-3,-1,2 отсортированный массив(по убыванию):2,-1,-3 массив из положительных элементов:2 |
2 |
-4,-5 |
контрольный вывод массива:-4,-5 отсортированный массив(по возрастанию):-5,-4 отсортированный массив(по убыванию):-4,-5 массив из положительных элементов: положительных элементов нет |
Описание данных:
переменная |
тип |
описание |
n |
int |
длина исходного массива (число элементов) |
i |
int |
вспомогательная переменная |
j |
int |
вспомогательная переменная |
k |
int |
вспомогательная переменная |
b |
float |
вспомогательная переменная |
a |
float |
исходный массив |
l |
float |
получаемый массив положительных элементов |
s |
char |
символ управления циклом |
Текст программы:
#include<conio.h>
#include<stdio.h>
void main (void)
{
clrscr();
textcolor(12);
int n,i,j,k;
float a[50],b,l[50];
char s;
cprintf("\n\n\n\n\n Программа,предназначенная \n ");
cprintf(" для работы с массивами \n ");
getch();
clrscr();
//Вводим размер массива
do
{
do
{
do
{
clrscr();
printf("\n\n\n\n\n");
printf("\n Введите размер массива N(от 1 до 50)\n");
printf("\n N=");
scanf("%d",&n);
if(n<=0)
{
printf("\n Параметр N был введен неверно");
getch();
}
}
while(n<=0);
//Вводим массив
printf("\n Введите значения массива \n");
for(i=0;i<n;i++)
{
scanf("%f",&a[i]);
}
printf("\n\n\n\n");
printf("\n Ввести размер и значения заново?(y/n)");
s=getch();
}
while(s=='y'||s=='Y');
//Выводим массив
printf("\n Вывод массива .\n\n");
for(i=0;i<n;i++)
{
printf(" a[%d]=%.3f\n",i,a[i]);
}
getch();
clrscr();
// Сортировка по возратанию
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{
b=a[i];
a[i]=a[j];
a[j]=b;
}
printf("\n Сортировка по возрастанию.");
for(i=0;i<n;i++)
printf("\n %.3f ",a[i]);
// Сортировка по убыванию
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j])
{
b=a[i];
a[i]=a[j];
a[j]=b;
}
printf("\n Сортировка по убыванию.");
for(i=0;i<n;i++)
printf("\n %.3f ",a[i]);
// Массив из положительных элементов.
printf("\n Массив из положительных элементов:");
j=0;
k=0;
for(i=0;i<n;i++)
{
if(a[i]>0)
{
l[j]=a[i];
printf("\n l[%d]=%.3f ",j,l[j]);
j++;
k++;
}
}
if(k==0)
printf("\n Положительных элементов нет\n");
printf("\n\n\n\n Для продолжения работы нажмите любую клавишу.");
getch();
clrscr();
printf("\n \n\n\n\n\n\n");
printf("\n Продолжить работу программы?(y/n) ");
s=getche();
}
while(s=='y'||s=='Y');
}
Блок схема:
нет
да
нет
да
да
да
нет
да
нет
нет
да
нет
да
да
нет
нет
да
нет
нет
да
да
нет
да
нет
да
нет
да
нет
Пояснения:
Сообщение
1: Программа,предназначенная
для работы с массивами.
Сообщение
2:Параметр N
был введен неверно.
Сообщение
3:Положительных элементов
нет.Для продолжения нажмите любую
клавишу.
Условие
1:Ввести размер и значения заново?(y/n)
Условие
2:Продолжить работу
программы?(y/n)
Результаты решения задачи:
Все полученные ответы совпадают с контрольными примерами.
Выводы:
Данная лабораторная работа позволяет овладеть основами использования массивов в языке Си.