Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 29 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Les utilisateurs ont également aimé (15)

Publicité

Similaire à Progr labrab-4-2013-c++ (20)

Publicité

Plus récents (20)

Progr labrab-4-2013-c++

  1. 1. Секция спортивного программирования Тренер: старший преподаватель каф. «Автоматика и процессы управления» Поповкин Александр Викторович vk.com/popovkin Mail: microsoftintel@yandex.ru 1
  2. 2. Работа с массивами Kolya Vasya Petya Slavik Michael athlete Kolya, Vasya, Petya, Slavik, Michael Jump(Kolya); Jump(Vasya); Jump(Petya); Jump(Slavik); Jump(Michael);
  3. 3. Обозначим именем Guy группу из 5 гимнастов Guy[0] Guy[1] Guy[2] Guy[3] Guy[4] Массив Guy, построенный из гимнастов Элементу Guy в позиции индекс выполнить упражнение индекс
  4. 4. //Программа для отдельных гимнастов void main() { athlete Kolya, Vasya, Petya, Slavik, Michael; Jump(Kolya); Jump(Vasya); Jump(Petya); Jump(Slavik); Jump(Michael); } //Программа для массива гимнастов void main() { // Объявление массива из пяти гимнастов athlete Guy[5]; for (int which=0; which<=4; which++); { // Выполнение упражнения каждым гимнастом Jump(Guy[which]); } }
  5. 5. Пример 1. Заполните одномерный массив размером 10 элементов числами от 1 до 10 и выведите содержимое массива на экран в виде: a[0] = 1 a[1] = 2 #include <iostream> using namespace std; int main() { // Инициализация переменных int a[10]; // Массив a типа int, // размер - 10 элементов int i; // Заполнить массив for (i = 0; i < 10; i++) a[i] = i + 1; // Вывести массив на экран for (i = 0; i < 10; i++) cout << "a[" << i << "] = " << a[i] << endl; return 0; }
  6. 6. 3 ЗАДАЧИ на статические массивы
  7. 7. Самостоятельно: Введите одномерный массив из 10 элементов типа int с клавиатуры и выведите массив на экран так же, как и в примере 1 ЗАДАЧА 1
  8. 8. Самостоятельно: Инициализируйте одномерный массив в тексте программы и выведите его на экран ЗАДАЧА 2 int a[10] = {10,20,30,40,50, // Массив a типа int, 9 ,8 ,7, 6, 5}; // размер - 10 элементов
  9. 9. Самостоятельно: Заполните одномерный массив int a[10] случайными числами, скопируйте его в массив int b[10]. Выведите оба массива на экран ЗАДАЧА 3
  10. 10. #include <iostream> #include <ctime> //для ф-ии time() #include <cstdlib> //для srand() и rand() int main() { // Инициализация переменных // Массивы a и b типа int, // размер - 10 элементов ??????????????? // Сброс генератора случайных чисел srand(time(NULL)); // Заполнить массив случайными числами for (i = 0; i < 10; i++) a[i] = rand(); // Скопировать массив a в массив b ????????????? // Вывести массивы на экран ????????????? } ЗАДАЧА 3
  11. 11. Динамические массивы в С++ double *arr = new double[count]; // Освобождаем память, отведенную под динамический массив delete [] arr; 12
  12. 12. Статический массив int main() { const int amount = 5; int data[5]; } 13
  13. 13. Динамический массив int main() { int amount = 5; int *ptr = NULL; //адрес массива хранится в указателе ptr ptr = new int[amount]; //освободить память по адресу ptr delete []ptr; } 14
  14. 14. 15 #include <iostream> using namespace std; int main() { int amount = 0; int *ptr = NULL; cout << "enter amount: "; cin >> amount; //адрес массива хранится в указателе ptr ptr = new int[amount]; for(int i = 0; i < amount; i++) { ptr[i] = rand() %100; cout << ptr[i] << 't'; } cout << endl; //освободить память по адресу ptr delete []ptr; }
  15. 15. 16 //подключаем необходимые библиотеки ????????????? //подключаем стандартное пространство имен ?????? int main() { // Максимальное количество случайных элементов массива const int NUMBER_RAND_MAX = 100; // Инициируем генератор случайных чисел ????? // Случайное количество элементов массива int count = int((double)rand()/RAND_MAX*NUMBER_RAND_MAX); // Выделяем память под динамический массив double *arr = new double[count]; // Инициализируем массив случайными числами for(int i = 0; i < count; i++) { arr[i] = (double)rand()/RAND_MAX; } // Производим поиск минимального и максимального значений double min_value = arr[0]; double max_value = arr[0]; for(int i = 0; i < count; i++) ????????????? //вывод максимального и минимального значений ??????????? // Освобождаем память, отведенную под динамический массив delete [] arr; return 0; }
  16. 16. 17 #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { // Максимальное количество случайных элементов массива const int NUMBER_RAND_MAX = 100; // Инициируем генератор случайных чисел ???????????????????? // Случайное количество элементов массива int count = int((double)rand()/RAND_MAX*NUMBER_RAND_MAX); // Выделяем память под динамический массив ????????????????????? // Инициириуем массив случайными числами for(int i = 0; i < count; i++) { arr[i] = (double)rand()/RAND_MAX; // вывод элементов массива ????????????? } // Освобождаем память, отведенную под динамический массив ????????????????? return 0; }
  17. 17. 18 ЗАДАЧИ НА ДИНАМИЧЕСКИЕ МАССИВЫ
  18. 18. 19 ЗАДАЧА Создать программу с функцией, которой передаѐтся динамический массив и его размерность. Эта функция должна выводить сумму элементов массива.
  19. 19. 20 #include <iostream> #include <ctime> #include <cstdlib> using namespace std; int sum(int *a, int m) { int i, qwe = 0; for(i = 0; i < m; i++) qwe = qwe + a[i]; return qwe; } int main() { int i, m, *a=0, *b; cout << "Введите размерность -> "; cin >> m; // a = (int *) calloc(m, sizeof(*a)); a = new int[m];//выделение динамической памяти b = a; srand(time(NULL)); for(i = 0; i < m; i++) { *b++ = rand() %100; cout << a[i] << "t"; } cout << endl << "Сумма элементов массива: "; cout << endl << sum(a, m); delete[]a; return 0; }
  20. 20. 21 ЗАДАЧА Задание. сгенерировать дин. массив с элеменами типа int, размерность вводим вручную, дин. массив new, delete Требуется: 1) вывести исх одномерный массив в читабельном виде 2) скопировать нечетные элементы данного массива в целевой массив В 3) вывести полученный массив четных чисел 4) скопировать из массива а -> b все нечетные числа 5) вывести массив 6) вывести макс. и миним. нечетные числа из массива В
  21. 21. Алгоритмы сортировки массивов в методичке
  22. 22. В своем простейшем варианте она выполняется очень медленно, поэтому обычно применяют пузырьковую сортировку с оптимизацией. Однако все алгоритмы пузырьковой сортировки имеют общую особенность – обмен элементов массива производится между двумя соседними элементами массива. (*)выбираем в новом массиве наибольшее число и обменивает его с соседним (правым). Метод пузырьковой сортировки (метод обменной сортировки с выбором)
  23. 23. Отсортировать массив 142 23 97 19 2 4 по возрастанию (min -> max) Отсортировать массив 162 26 88 22 1 2 по возрастанию (min -> max) Отсортировать массив 4 2 19 97 23 142 по убыванию (max-> min)
  24. 24. Реализация пузырьковой сортировки на С++: #include <iostream> using namespace std; int main() { int arr[6]={142, 23, 97, 19, 2, 4}; int i,j,tmp; cout << "Unsorted massiv: "; for ( i=0; i<6; i++) cout << arr[i] << endl; for ( i=0; i<6; i++) for ( j=i+1; j<6; j++) if( arr[i] > arr[j] ) { tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } cout <<" Sorted massiv: "; for ( i=0; i<6; i++) cout << arr[i] << endl; return 0; }
  25. 25. #include <iostream> using namespace std; int main() { int arr[6]={4 2 19 97 23 142}; int i,j,tmp; cout << «Unsorted massiv»"; for ( i=0; i<6; i++) cout << arr[i] << endl; for ( i=0; i<6; i++) for ( j=i+1; j<6; j++) if( arr[i] > arr[j] ) { tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } cout << " Sorted massiv: "; for ( i=0; i<6; i++) cout << arr[i]) << endl; return 0; } ЗАДАЧА 4 Отсортировать массив 4 2 19 97 23 142 по убыванию (max-> min)
  26. 26. ЗАДАЧА 5 Отсортировать массив 9, 12, 43, 2, 4, 78, 15, 34, 11, 27 по возрастанию (min -> max)

×