Ниже приводится программа алгоритма сортировки (Листинг 5.). Поясним некоторые моменты программы. Прежде всего, о квалификаторе const. Переменную, объявленную с квалификатором const, обычно называют именованной константой и имеет следующий синтаксис:constимя_типа имя_переменной = константа. В данном случае квалификатор используется следующим образом: constintn=9;. Таким образом, массив содержит 10 элементов с индексами 0,1,2,…,9. После ввода данных программа сначала выводит их в том же порядке. Далее, фактически, осуществляется сортировка по возрастанию. Для этого использована временная переменная intvr. С ее помощью программа меняет местами соответствующие элементы массива. После завершения сортировка осуществляется вывод отсортированного массива.
Листинг 5.
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
const int n=9;
int a[n],vr, i,j;
cout<<"Введите элементы массива"<<endl;
for(i=0;i<=n;i++)
cin>>a[i];
cout<<"Исходныймассив"<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<"; ";
cout<<a[n]<<endl;
for(i=0;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
if(a[j]<a[i])
{
vr=a[i];
a[i]=a[j];
a[j]=vr;
}
}
}
cout<<"Отсортированымассив "<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<"; ";
cout<<a[n]<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Задание 16
С помощью генератора случайных чисел (rand()) образовать целочисленный массив
, причем
, i=1,2,…,n
int main(int argc, char *argv[])
{
int n, m,i, j,k=0;
cout<<"n=";
cin>>n;
float a[n],a1[n],x1,x2,b, max, min, sum=0.,teta;
cout<<"x1=";
cin>>x1;
cout<<"x2=";
cin>>x2;
cout<<"Массив a[i]:"<<endl;
max=x1;
min=x2;
for(i=0;i<n;i++)
{
m=n*(int)(x2-x1);
teta=(float)(rand()%m);
teta=teta/(float) m;
a[i]=(x2-x1)*teta+x1;
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
sum+=a[i];
cout<<a[i];
(i<n-1)? cout<<"; ":cout<<endl;
}
cout<<"max="<<max<<'\t'<<" min="<<min<<'\t'<<"Сумма="<<sum<<endl;
cout<<"New massiv (a[i]+a[i+1])/2"<<endl;
for(i=0;i<n-1;i++)
{
cout<<(a[i]+a[i+1])/2;
(i<n-2)? cout<<"; ":cout<<endl;
}
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;
}
}
}
cout<<"Отсортированный массив: "<<endl;
for(i=0;i<n;i++)
{
cout<<a[i];
(i<n-1)? cout<<"; ":cout<<endl;
}
m=(n+1)/2;
cout<<"Зигзаг : "<<endl;
for(i=0;i<m;i++)
{
a1[k]=a[i];
k++;
a1[k]=a[n-(i+1)];
k++;
}
for(int i=0;i<n;i++)
{
cout<<a1[i];
(i<n-1)? cout<<"; ":cout<<endl;
}
cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Примечание.
В этой программе использован вариант простого ветвления:
(условие)?оператор_да:оператор_нет.
Например, (i<n-1)? cout<<";":cout<<endl; означает, что если i<n-1, то отображается «;», иначе осуществляется переход на другую строку.
Задания для лабораторной работы №5
Задан массив данных. Для ввода и выводов элементов массива данных используйте массив элементов управления.
1. Даны десять вещественных чисел. Найти их сумму.
2. Даны десять вещественных чисел. Найти их произведение.
3. Даны десять вещественных чисел. Найти их среднее арифметическое.
4. Дано целое число N и набор из N вещественных чисел. Вывести сумму и произведение чисел из данного набора.
5. Дано целое число N и набор из N положительных вещественных чисел. Вывести в том же порядке целые части всех чисел из данного набора (как вещественные числа с нулевой дробной частью), а также сумму всех целых частей.
6. Дано целое число N и набор из N положительных вещественных чисел. Вывести в том же порядке дробные части всех чисел из данного набора (как вещественные числа с нулевой целой частью), а также произведение всех дробных частей.
7. Дано целое число N и набор из N вещественных чисел. Вывести в том же порядке округленные значения всех чисел из данного набора (как целые числа), а также сумму всех округленных значений.
8. Дано целое число N и набор из N целых чисел. Вывести в том же порядке все четные числа из данного набора и количество K таких чисел.
9. Дано целое число N и набор из N целых чисел. Вывести в том же порядке номера всех нечетных чисел из данного набора и количество K таких чисел.
10. Дано целое число N и набор из N целых чисел. Если в наборе имеются положительные числа, то вывести True; в противном случае вывести False.
11. Даны целые числа K, N и набор из N целых чисел. Если в наборе имеются числа, меньшие K, то вывести True; в противном случае вывести False.
12. Дан набор ненулевых целых чисел; признак его завершения — число 0. Вывести количество чисел в наборе.
13. Дан набор ненулевых целых чисел; признак его завершения — число 0. Вывести сумму всех положительных четных чисел из данного набора. Если требуемые числа в наборе отсутствуют, то вывести 0.
14. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести количество чисел в наборе, меньших K.
15. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести номер первого числа в наборе, большего K. Если таких чисел нет, то вывести 0.
16. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести номер последнего числа в наборе, большего K. Если таких чисел нет, то вывести 0.
17. Дано вещественное число B, целое число N и набор из N вещественных чисел, упорядоченных по возрастанию. Вывести элементы набора вместе с числом B, сохраняя упорядоченность выводимых чисел.
18. Дано целое число N и набор из N целых чисел, упорядоченный по возрастанию. Данный набор может содержать одинаковые элементы. Вывести в том же порядке все различные элементы данного набора.
19. Дано целое число N (> 1) и набор из N целых чисел. Вывести те элементы в наборе, которые меньше своего левого соседа, и количество K таких элементов.
20. Дано целое число N (> 1) и набор из N целых чисел. Вывести те элементы в наборе, которые меньше своего правого соседа, и количество K таких элементов.
21. Дано целое число N (> 1) и набор из N вещественных чисел. Проверить, образует ли данный набор возрастающую последовательность. Если образует, то вывести True, если нет — вывести False.
22. Дано целое число N (> 1) и набор из N вещественных чисел. Если данный набор образует убывающую последовательность, то вывести 0;
в противном случае вывести номер первого числа, нарушающего закономерность.
23. Дано целое число N (> 2) и набор из N вещественных чисел. Набор называется пилообразным, если каждый его внутренний элемент либо больше, либо меньше обоих своих соседей (то есть является «зубцом»). Если данный набор является пилообразным, то вывести 0; в противном случае вывести номер первого элемента, не являющегося зубцом.
24. Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму чисел из данного набора, расположенных между последними двумя нулями (если последние нули идут подряд, то вывести 0).
25. Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму чисел из данного набора, расположенных между первым и последним нулем (если первый и последний нули идут подряд, то вывести 0).
11. Массивы для хранения строк
Одним из способов представления строк является использование массива базового типа char. Например, строку «Алгоритм» удобно представить как массив из девяти индексированных переменных: восьми букв слова «Алгоритм» и одного нулевого символа '\0', служащего маркером конца строки. Символ '\0' называется нуль-символом или нулевым символом, а когда он используется в качестве маркера конца строки - нуль-терминатором. При использовании таких маркеров программа может считывать массивы посимвольно и знать, когда следует остановиться. Строка, хранящаяся в описанном формате, называется строкой С. В программе C++ нуль-символ записывается как '\0', то есть в виде двух символов, но на самом деле, подобно символу новой строки '\n', он является одним символом. Как и любое другое символьное значение, он может храниться в переменной типа char или элементе массива с базовым типом char.
Строковая переменная С представляет собой просто массив символов. Так, следующее объявление массива: char s[10]; создает строковую переменную С, в которой может храниться строковое значение С, состоящее из десяти или менее символов. Массив длиной десять символов вмещает строку из девяти символов и нуль-символ '\0', отмечающий ее конец.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |


