Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Задачи для самостоятельного решения. 1.2.2.1. в последовательности из n целых чисел найти самую длинную строго возрастающую цепочку, т.е




 

1.2.2.1. в последовательности из n целых чисел найти самую длинную строго возрастающую цепочку, т.е. такую цепочку элементов, что Ai < Ai+1 < Ai+2 и т.д. Напечатать длину этой цепочки. В первой строке задаётся количество чисел в последовательности, а во второй - сами числа.

Исходные данные:

1 5 1 2 3

Результат:

 

1.2.2.2. в последовательности из n целых чисел найти самую длинную пилу, т.е. такую цепочку элементов, что Ai < Ai+1 > Ai+2 и т.д. или Ai > Ai+1 < Ai+2… В первой строке задаётся количество чисел в последовательности, а во второй - сами числа.

Исходные данные:

1 5 1 2 3

Результат:

 

1.2.2.3. для заданного числа n найти ближайшее сверху число Фибоначчи (большее или равное)

Исходные данные:

Результат:

 

1.2.2.4. для заданного числа n найти ближайшее снизу число Фибоначчи (меньшее или равное)

Исходные данные:

Результат:

 

1.2.2.5. в последовательности из n целых чисел найти пару с самым большим произведением и напечатать его. В первой строке задаётся количество чисел в последовательности, а во второй - сами числа.

Исходные данные:

1 5 1 2 -3

Результат:

 

1.2.2.6. в последовательности из n целых чисел найти пару с самым большим произведением, которое делится на 21, и напечатать его. В первой строке задаётся количество чисел в последовательности, а во второй - сами числа.

Исходные данные:

1 5 14 2 3

Результат:

 

1.2.2.7. в последовательности из n целых чисел найти пару с самым большим (маленьким) произведением, но их номера в последовательности должны отличаться не менее, чем на 5. и напечатать его. В первой строке задаётся количество чисел в последовательности, а во второй - сами числа.

Исходные данные:

2 5 1 2 3 7 3 1 2

Результат:

 

1.2.2.8. в последовательности из n целых чисел найти пару с самым большим (маленьким) чётным произведением, но их номера в последовательности должны отличаться не менее, чем на 5, и напечатать это произведение. В первой строке задаётся количество чисел в последовательности, а во второй - сами числа.

 

1.2.2.9. Представить данное число n в виде суммы нескольких разных чисел Фибоначчи и напечатать их в порядке убывания (возрастания).

Исходные данные:

Результат:

13 5 1

 

1.2.2.10. В последовательности из n целых чисел найти наибольший перепад – наибольшую разность элементов в цепочке возрастающих или убывающих элементов. В первой строке задаётся количество чисел в последовательности, а во второй - сами числа.

Исходные данные:

2 5 1 2 3 7 3 2 2

Результат:

 

1.2.2.11. Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц. В единственной строке записана последовательность нулей и единиц (без пробелов). Суммарное количество цифр не превышает 1000.

Вывести искомую длину цепочки нулей.

Исходные данные:

Результат:

 

Продвинутые задачки.

 

1.2.3.1. Обобщение ряда Фибоначчи. Дана бесконечная в обе стороны последовательность вещественных чисел, которая строится по правилу ai=ai-1+ ai-2. Заданы значения двух произвольных членов этой последовательности ai и aj. Написать программу, которая по заданному числу n вычисляет элемент an. В первой строке задаются номер i и значение ai, во второй номер j и значение aj, в третьей – номер n.

Исходные данные:

Результат:

 

1.2.3.2. В последовательности цифр a1, a2,...ai,... каждый член, начиная с четвертого, равен последней цифре суммы трех предыдущих. Написать программу, которая по заданным значениям a1, a2, a3 вычисляет an, где n<=1000000000.

Исходные данные:

Результат:

 

1.2.3.3. Общее количество цифр. Для заданного натурального числа n вычислить и напечатать общее количество цифр во всех числах от 1 до n.

Исходные данные:

Результат:

 

1.2.3.4. Количество цифр. Для заданного натурального числа n вычислить и напечатать количество каждой цифры во всех числах от 1 до n: количество ноликов, единичек и т.д. до девяти.

Исходные данные:

Результат:

1 10 2 2 2 2 2 2 1 1

 

1.2.3.5. Минимальная вместимость автобуса. На автобусном маршруте имеется n остановок. На каждой остановке из автобуса сначала выходят ai человек, потом входят bi человек. Изначально автобус пустой. Определить и напечатать минимальную возможную вместимость автобуса.

Исходные данные:

 

Результат:

 

 

Тема 1.3. Массивы

 

Цель.

Изучение алгоритмов обработки большого количества данных, хранящихся одновременно в оперативной памяти.

 

Основные понятия.

Массив – упорядоченное множество однотипных элементов, занимающих смежные участки оперативной памяти. Они используются в тех случаях, когда элементы последовательности должны обрабатываться не в том порядке, в котором поступают в программу, или каждый элемент должен обрабатываться (просматриваться) несколько раз. Имя массива ассоциируется с адресом начала массива (первого элемента). Этот адрес является постоянным. Основная операция над массивами – операция доступа к элементу []. Можно использовать значение элемента и можно его изменять. Используя адреса можно обращаться к элементам массива с помощью операции * и операции адресной арифметики.

Ввод и вывод массивов осуществляется поэлементно (для символьных строк – см. ниже).

 

Ключевые слова.

Массив, индекс, элемент, счётчик, адрес, указатель, NULL, случайное число.

 

ПРИМЕР 1.

Дан массив целых чисел из N элементов. Для заданных номеров k1 и k2 (1 <= k1 <= k2 <= N) переставить элементы массива от k1-го до k2-го в обратном порядке.

 

Алгоритм.

В цикле запустим два счётчика навстречу друг другу и соответствующие элементы будем менять местами.

 

Решение.

 

// C++

 

# include <iostream>

# include <cstdlib>

 

using namespace std;

 

const int N = 10000;

 

int main () // основная часть программы – главная функция

{

setlocale (LC_ALL, "RUS");

cout << "Переворот части массива." << endl;

cout << "Введите количество, а в следующей строке числа." << endl;

 

int a [N], n;

cin >> n;

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

cin >> a [i];

 

cout << "С какой позицию по какую: ";

 

int k1, k2;

cin >> k1 >> k2;

k1--, k2--;

 

for (int i=k1, j=k2; i < j; i++, j--)

swap (a [i], a [j]);

 

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

cout << a [i] << " ";

cout << endl;

 

system ("PAUSE");

return 0;

}

 

 

// C#

 

using System;

 

class Program

{

static void Main (string [] args)

{

Console.WriteLine ("Переворот части массива.");

Console.WriteLine ("Введите количество, а в следующей строке числа.");

 

int n = int.Parse (Console.ReadLine ());

int [] a = new int [n];

 

string ss = Console.ReadLine (); // все числа в одной строке

string [] s = ss.Split (' '); //| через один пробел

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

a [i] = int.Parse (s [i]);

 

Console.WriteLine ("С какой позицию по какую: ");

 

int k1 = int.Parse (Console.ReadLine ());

int k2 = int.Parse (Console.ReadLine ());

k1--, k2--;

 

for (int i=k1, j=k2; i < j; i++, j--)

{

int temp = a [i];

a [i] = a [j];

a [j] = temp;

}

 

for (int i=0; i < n; i++) // печатаем числа в одну строку

Console.Write (a [i] + " ");

Console.ReadKey ();

}

}

 

ПРИМЕР 2.

Заполнить массив случайными целыми числами в диапазоне от 0 до 999 и распечатать его.

 

Решение.

 

// C++

 

# include <iostream>

# include <cstdlib>

 

using namespace std;

 

const int N = 1000;

 

int main ()

{

setlocale (LC_ALL, "RUS");

cout << "Заполнение массива случайными числами." << endl;

cout << "Введите количество элементов." << endl;

 

int * a, n;

cin >> n;

 

a = new int [n];

 

srand (time (0));

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

a [i] = rand () % N;

 

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

cout << a [i] << " ";

cout << endl;

 

system ("PAUSE");

return 0;

}

 

 

// C#

 

using System;

 

class Program

{

static void Main (string [] args)

{

Console.WriteLine ("Заполнение массива случайными числами.");

Console.WriteLine ("Введите количество элементов.");

 

int n = int.Parse (Console.ReadLine ());

int [] a = new int [n];

 

// заполнение случайными числами

Random rnd = new Random(DateTime.Now.Millisecond);

//создание генератора случайных чисел и инициализация текущим временем

 

for (int i=0; i < a.GetLength (0); i++)

a [i] = rnd.Next ();

// GetLength(i) возращает длину массива по i-му измерению

 

for (int i=0; i < n; i++) // печатаем числа в одну строку

Console.Write (a [i] + " ");

Console.ReadKey ();

}

}

 





Поделиться с друзьями:


Дата добавления: 2015-10-27; Мы поможем в написании ваших работ!; просмотров: 791 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

80% успеха - это появиться в нужном месте в нужное время. © Вуди Аллен
==> читать все изречения...

2274 - | 2125 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.