С++ ЕНФ / мои отчёты / Отчёт по Лабе №3
.docФедеральное агентство по образованию Российской Федерации
Государственное образовательное учреждение высшего профессионального образования
«Уфимский Государственный Авиационный Технический Университет»
Кафедра ВВТиС
ОТЧЕТ
по лабораторной работе №3
Массивы в С++
Выполнил: студент гр. ПМ-125
Марьин Д.Ф.
Проверил: ст. преподаватель каф. ВВТиС
Насибуллаева Э.Ш.
Уфа 2005
Содержание
Цель работы 3
1.ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 4
1.1.Массивы 4
1.1.1.Определение массивов 4
1.1.2.Инициализация массивов 4
1.2.Сортировка массива (метод “пузырька”) 4
2.ПРАКТИЧЕСКАЯ ЧАСТЬ 5
2.1.Описание программы LABA3_1.cpp 5
2.2.Описание программы LABA3_2.cpp 5
ЗАКЛЮЧЕНИЕ 6
Список литературы 7
ПРИЛОЖЕНИЕ А 8
Цель работы
-
Ознакомиться с методами определения и инициализации массива
-
Разобраться в основных типах сортировки массивов ,и освоить метод определения быстродействия данного алгоритма
-
Разобраться в особенностях передачи массива в функцию
-
Получить начальное представление об указателях, используемых при работе с массивами
Задание к лабораторной работе № 3
1. Написать программу, которая находит минимальный элемент в массиве, введенным с клавиатуры.
2. Написать программу, которая подводит итоги конкурса 5 лучших товаров года. Программа должна получить от пользователя количество человек, давших определенный балл данному товару, после этого упорядочить список (с помощью сортировки методом «пузырька») в соответствии с набранным количеством очков. Оценка производится по пятибалльной системе.
Сортировку оформить в виде функции.
Во всех программах должна быть предусмотрена защита ввода неправильных данных.
1.ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1.Массивы
1.1.1.Определение массивов
Кроме одиночных переменных, представляющих в программе отдельное число или символ, в языке С определено понятие массива. Массив - это совокупность (последовательность) значений одного типа. Для объявления массива в программе используется следующий синтаксис:
int аrray[10]; // Массив из десяти целых чисел
double array[1000]; // Массив из 1000 действительных чисел
char array[80]; // Массив из 80 байтов
Для доступа к отдельному элементу массива введено понятие индекса - т.е. номер элемента в массиве, причем индекс массива, состоящего из N элементов, меняется от 0 до N - 1. Так массив
int Ar[3];
содержит элементы Ar[0], Ar[1], Ar[2].
1.1.2.Инициализация массивов
Как и отдельные переменные, при объявлении массивов их можно инициализировать, т.е. присвоить элементам конкретные значения.
По существу инициализация - это объединение определения объекта с одновременным присваиванием ему конкретного значения. Использование инициализации позволяет изменить формат определения массива. Например, можно явно не указывать количество элементов одномерного массива, а только перечислить их начальные значения в списке инициализации:
int s[] = {1, 2, 3, 4, 5};
В данном примере будет определен одномерный массив из пяти элементов, причем
s[0]=1 s[1]=2 s[2]=3 s[3]=4 s[4]=5
Если в определении массива явно задан его размер, то количество начальных значений не может быть больше количества элементов в массиве. В случае, когда количество начальных значений меньше заданного размера массива - будут присвоены начальные значения только группе первых элементов массива (элементам с меньшим значением индекса).
1.2.Сортировка массива (метод “пузырька”)
В сортировке «пузырьком» суть заключается в том, что мы сравниваем последовательно два различных элемента массива, и в случае необходимости меняем их местами.
2.ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1.Описание программы LABA3_1.cpp
В данной программе требуется найти минимальный элемент массива, введенного с клавиатуры. Для этого используется итерационный цикл.
2.2.Описание программы LABA3_2.cpp
В данной программе просится подвести итоги олимпийских игр. Программа должна получает от пользователя число медалей и соответствующее ему число очков, и после этого упорядочить список (с помощью сортировки подсчетом) в соответствии с набранным количеством очков. Для заполнения массива очков завоеванных командами в данной программе применяются функции: pravilnoe_zapolnenie()проверяющее правильность введенного пользователем количества медалей аналогично предыдущей программе, zapolnenie_massiva () непосредственно заполняющей массив посредством цикла for,
Podschetsort () ,которая осуществляет сортировку методом подсчета ,алгоритм которого описан в теоретической части,и наконец vivod_na_ekran()функция выводящая результаты (итоговую таблицу) на экран, где тоже применен цикл for,при этом для связывания названия команды и его порядкового номера предусмотрена функция komanda()выполняющая означенную процедуру посредством цикла switch().
ЗАКЛЮЧЕНИЕ
-
В ходе написания программ я ознакомился с методами определения, инициализации и работы с элементами массива
-
После изучения методов сортировки и их непосредственного применения я понял основное различие между алгоритмами сортировки и разобрался в основных подходах к ней
-
Также я убедился в удобстве принятого соглашения об индексировании элементов массива
Список литературы
-
Подбельский В.В. Язык Си++. – М.: Финансы и статистика,1996.–560 с.
-
Дейтел Х., Дейтел П. Язык пограммирования С++: перевод с англ.
М.:ЗАО «Издательство БИНОМ»,1998,1024с.
ПРИЛОЖЕНИЕ А
Листинг программы 3LB1.cpp
Листинг программы
#include <iostream.h>;
#include <math.h>;
#include <conio.h>;
/* Directiva preprocessora #include <imya faila>:osushestvlyaet
poisk faila v standartnih directoriyah.
iostream.h-input and output on a stream,uses functions cout,cin
math.h- matematicheskie funcsii uses functions abs(),
conio.h-rabota s ekranom,uses functions clrscr(),getch()*/
void main()
{
clrscr();
cout<<"proga vichislyayushaya min element massiva Z chisel \n";
int m[100]; int c=1,i=0,l=0,min=0; float n=0;
do
{
Cout<<"vvedite kol-vo elementov massiva,ono dolgno bit >0 i celoe \n";
cin>>n;
}
while ((n<=0.)||(n-int(n)!=0)||(n>=100.));//zapros na vvod kol-va elementov massiva
l=n; textcolor(1);
for (i=1;i<=l;i++)
{
do {cout<<"vvedite "<<i<<" element massiva,on dolgen bit celim \n\n";
cin>>n; m[i-1]=n;}
while (n-int(n)!=0);//vvod elementov massiva i proverka na uslovie
};
min=m[0]; //prisvaivanie znach. min znach. 1 elementa
for (i=1;i<=l;i++)
{
if (m[i]<min) min=m[i]; //esli i element <min to menyaem mestami
};
cout<<"min element massiva= "<<min; //vivod min elementa
getch();
}
Листинг программы 3LB2.cpp
Листинг программы
#include <iostream.h>
#include <conio.h>
//#include <math.h>
//int const N=3,B=5; int ball[s][s]={0}; int k[s]={0}; float c[s]={0}; char str[s]={0};
template <class T> //shablon funkcii,kotoraya menyaet mestami elementi
T swap (T *v1,T *v2)
{ T v; v=*v1;*v1=*v2;*v2=v; return 0;}
void sort(int *c,int N,char *str,int n)
//sortirovka metodom PUZIRKA
{float p; char ch;
for(int i=0;i<=(N-1);i++)
{for(int l=0;l<(N-i);l++)
{if (c[l]<c[l+1])
{swap(&c[l],&c[l+1]);swap(&str[l],&str[l+1]); //obmen mestami
//p=c[l];c[l]=c[l+1];c[l+1]=p;ch=str[l];str[l]=str[l+1];str[l+1]=ch;
};
};
};
}
void main() //glavnaya funkciya
{
clrscr();
int const N=3,B=3;
//int ball[3][3];
int c[3];char str[3]={'Q','A','Z'};
int x,j=0,i=0; float y=0;
cout<<"proga "<<N<<" luchshih tovarov goda \n\n";
//for (j=1;j<=N;j++){cout<<"vvedite nazvanie "<<j<<"tovara \n\n"; cin>>str[j-1];};
for (j=0;j<=(N-1);j++)
{ c[j]=0;
for (i=0;i<=(B-1);i++)
{
cout<<"vvedite kol-vo chelovek davshih tovaru "<<str[j]<<" ocenku "<<(i+1)<<endl;
cin>>y; x=y; //zapros dannih
while ((y<0)||(x!=y))
{cout<<"kol-vo chelovek dolgno bit celim & >0 \n\n";
cout<<"vvedite kol-vo chelovek davshih tovaru "<<str[j]<<" ocenku "<<(i+1)<<endl;
cin>>y; x=y;
};
//ball[j][i]=x;
c[j]+=(i+1)*x;
};
//for (i=0;i<=(B-1);i++) {c[j]+=(i+1)*ball[j][i];};
};
sort(c,N,str,N); //vizov funkcii
for (j=0;j<=(N-1);j++) //vivod rezultata na ekran
cout<<(j+1)<<" mesto: tovar "<<str[j]<<" ; kol-vo ballov= "<<c[j]<<endl;
getch();
}