Одномерные массивы. Строки. Ввод значений элементов одномерного массива

Страницы работы

Фрагмент текста работы

  Лабораторная работа 4

Одномерные массивы. Строки

(для выполнения лабораторной работы №4 необходимо проработать материал лекций №№ 13-14 и разобрать примеры, приведенные в данной методичке)

Массивы.. 2

Операции над одномерным массивом.. 2

Ввод значений элементов одномерного массива. 2

заполнение массива. 3

случайными числами. 3

в соответствии с некоторым правилом.. 4

Вывод значений элементов одномерного массива. 4

по одному в строке. 4

в строку без учета расположения элементов. 4

целочисленного массива по K элементов  в строке. 5

вещественного  массива по K элементов в строке. 5

в обратном порядке элементов и по K значений в строке. 6

с помощью указания зависимости в индексах. 6

Поиск в массиве. 7

Сортировка массивов. 8

сортировка обменом («пузырьковая» сортировка) 9

Сортировка обменом по возрастанию последней цифры значения элемента. 10

сортировка вставкой. 11

сортировка выбором.. 12

Массивы и указатели. 12

Обращение к элементам массива  и их вывод через  указатель. 13

Массив указателей на функцию.. 15

Динамические одномерные массивы.. 15

Передача одномерного массива в функцию в качестве параметра. 17

Способ 1: С-стиль,  описание формального параметра как массива с размером. 17

Способ 2: описание формального параметра как массива без указания размера. 19

Способ 3: описание формального параметра как указателя. 19

Способ 4: С++ стиль, использование шаблонной функции. 20

Передача в функцию одного элемента массива. 21

Массив как возвращаемое значение. 21

Слияние двух целочисленных массивов, элементы в каждом из которых упорядочены по неубыванию.. 21

Ссылка на элемент массива как результат работы функции. 22

Примеры работы с массивами. 22

Числовые массивы.. 22

Вычисление суммы части элементов массива (начиная с определенного индекса) 22

Копирование элементов массива. 23

Нахождение количества положительных элементов между максимальным и минимальным элементами массива. 24

Нахождение среднего значения элементов массива. 25

Нахождение среднего значения элементов динамического массива. 26

Нахождение суммы элементов массива, расположенных правее последнего отрицательного элемента. 27

Определение в массиве максимального элемента и его индекса. 28

Перестановка значений элементов массива. 30

Подсчет количества положительных элементов массива. 30

Поиск в массиве первого отрицательного числа и его номера. 31

}. 31

Поиск в массиве чисел с наибольшим количеством единиц в их двоичном представлении. 31

Проверка значений массива на упорядоченность (по возрастанию) 32

Символьные массивы.. 32

Перевод «текстового» числа, заданного в виде массива символов, в числовой эквивалент. 32

Перегрузка функций при работе с массивами. 33

Перегрузка функций при вычислении суммы целочисленных и вещественных элементов массива. 33

Шаблон семейства функций для поиска в массиве максимального значения. 33

Шаблон семейства функций для поиска в массиве заданного значения. 34

Перегрузка шаблона функций на примере обмена значений двух переменных и обмена значений двух одномерных массивов. 34

Строки. 35

Строка как массив символов. 35

Строка как указатель на символ. 36

Массив строк (массив указателей на символ) 37

Примеры работы со строками. 37

Выделение слов в тексте по нажатию клавиши (функция  strtok()) 37

Определение длины строки с помощью функции пользователя. 38

Определение количества слов в строке. 38

Определение относительных частот появления в тексте заданных латинских букв. 39

Перевод двоичного числа в десятичное. 39

Перевод десятичного числа в двоичное. 40

Перевод десятичного числа в с/с от 2-х до 10. 40

Перевод десятичного числа в шестнадцатеричное. 41

Перевод  шестнадцатеричного  числа  в  десятичное. 41

Перегрузка функции реверса строки. 41

Проверка, является ли строка целым числом.. 42

Проверка, является ли строка 16-ичным целым числом.. 42

Проверка, является ли строка дробным числом без знака. 43

Сортировка строк в зависимости от признака, передаваемого функции main() через аргумент argv *. 43

Удаление из строки начальных пробелов. 43

Массивы

Операции над одномерным массивом

Ввод значений элементов одномерного массива

Ввод массива реализуется вводом в цикле значений его элементов. При этом размер массива задается константой, например:

const int n=5;

int А[n];

for (int i=0; i <n; i++)

{

printf ("input A[%d]\n", i);       //в стиле С                            

scanf ("%d", &А[i]);

или          

int age[4];

for(int j=0; j<4; j++)         

{

cout << "Enter an age: ";

cin >> age[j];                            //в стиле С++                            

}

заполнение массива

случайными числами
целыми положительными числами от 0 до 32767

#include <cstdlib>

.....

const int n=20;  

int Random_array[n];   

for (int index =0; index <  n; index++)

{Random_array [index] = rand();          

cout << Random_array[index] << endl;

}

целыми положительными или отрицательными числами от -16384 до 16383

#include <cstdlib>

.....

const int n=20;  

int Random_array[n];   

for (int index =0; index <  n; index++)

{Random_array [index] = rand()-16384;      

cout << Random_array[index] << endl;

}

вещественными числами от 0.0. до 1.0

#include <cstdlib>

.....

const int n=20;  

double Random_array[n];

for (int index =0; index <  n; index++)

{Random_array [index]= rand ()/32767.0;    

cout << Random_array[index] << endl;

}

вещественными числами от от 0.0 до 32767.0

#include <cstdlib>

.....

const int n=20;  

double Random_array[n];

for (int index =0; index <  n; index++)

{Random_array [index]= rand ()+ 0.0;    

cout << Random_array[index] << endl;

}   

возрастающими (не убывающими) целыми значениями

#include <cstdlib>

#include <ctime>

.....

const int n=10;  

int Random_array[n];

srand (time(0));             //отсчет от календарного времени в секундах !!!

Random_array [0]= rand()/1000;     //значение от 0 до 32

cout << Random_array[0] << endl;

for (int index =1; index <  n; index++)

{Random_array [index]= Random_array [index-1]+rand()/1000;

cout << Random_array[index] << endl;

}               

целыми числами из диапазона [a, а+b]

const int n=10;  

int Random_array[n];   

int a=5, b=10;

for (int index =0; index <  n; index++)

{Random_array [index] = a + rand() % b;

cout << Random_array[index] << "  ";

}

целыми числами из диапазона [-a, b-a]

const int n=10;

int Random_array[n]; 

int a=5, b=10;

for (int index =0; index <  n; index++)

{Random_array [index] = -a + rand() % b;

cout << Random_array[index] << "  ";

}

в соответствии с некоторым правилом

Например, разные значения для четных и нечетных элементов:                                     

const int n=10;

double A[n];  

for (int j=0; j<n; j++)

{if (j%2) A[j] = j * 10.;  

else A[j] = j/100.;  

cout << A[j] << "    ";

}

получим массив:

0   10   0.02   30   0.04   50   0.06   70   0.08   90 

Вывод значений элементов одномерного массива

по одному в строке

int main()

{                                      

int intarray[5] = { 31, 54, 77, 52, 93 }; 

for(int j=0; j<5; j++)                 

cout << intarray[j] << endl;        

_getch();  

return 0;

}

в строку без учета расположения элементов

int main()

{                                      

int intarray[5] = { 31, 54, 77, 52, 93 }; 

for (int i=0; i<5; i++)

cout << intarray[i] << "    ";

cout << endl;

_getch();  

return 0;

}

целочисленного массива по K элементов  в строке #include <iomanip>

const int n=10;

int main()

{                                       

int K =5;

int A[n];                          //в стиле С++

for (int j=0; j<n; j++) 

A[j] = j * 10;   //заполнение массива

for (int i=0; i<n; i++)         //вывод элементов массива

{cout << setw(7) << A[i];                                        //на элемент отводится 7 позиций

if (!((i+1)% K)) cout << endl;                       //перевод строки происходит после вывода 5 элементов

}

_getch();

return 0;

}

вещественного  массива по K элементов в строке #include <iomanip>                          //в стиле С++

const int n=10;

int main()

{                                      

int K =5;

double A[n];                            

for (int j=0; j<n; j++)  

A[j] = j / 10.;      //заполнение массива

for (int i=0; i<n; i++)            //вывод элементов массива

{cout << setw(7) << setprecision(2)                             << setiosflags(ios::fixed) << A[i];  

//на элемент отводится 7 позиций, 2 из них – на дробную часть,

//форма представления значения – с фиксированной точкой

if (!((i+1)% K)) cout << endl;                      //перевод строки происходит после вывода 5 элементов

}

_getch();

return 0;

}

или

                                                                                     //в стиле С

const int n=10;

int main()

{

int K =5;                         

double A[n];

for (int j=0; j<n; j++)  

A[j] = j / 10.;  //заполнение массива

for (int i=0; i<n; i++)

{printf ("%7.2lf", A[i]);

//на элемент отводится 7 позиций, 2 из них – на дробную часть,

if (!((i+1)% K )) printf ("\n");                               //перевод строки происходит после вывода 5 элементов

}

_getch();

return 0;

}

Вот как можно вывести элементы массива по 5 в строке (в предположении

Похожие материалы

Информация о работе