КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Одномерные массивы
Else Do Обработка данных последовательности В качестве примера рассмотрим следующую задачу: Дана последовательность целых ненулевых чисел. Индикатор окончания – число ноль. Определить сумму элементов и количество отрицательных чисел в последовательности. Для решения задачи используем накопитель и счетчик для получения суммы элементов и количества отрицательных чисел. // Обработка последовательности - 1 #include <stdio.h> #include <conio.h> #include <iostream.h> #include <math.h> void main() { int a; float sum=0; int ko=0; int f=0; cout<<"\nInput posledovatelnost (0)\n"; cin>>a; while (a!=0) { sum+=a; if (a<0) ko++; f=1; cin>>a; } if (f==1) printf("Sum = %.3f, Kol.otr. = %i.\n",sum,ko); else printf("Posledovatelnost is empty!\n"); getch(); } Отметим, что при использовании оператора while оператор ввода cin>>a приходится использовать 2 раза, первый – вне цикла для обработки пустой последовательности и второй – внутри цикла для ввода очередных элементов. Для анализа ситуации, когда обрабатывается пустая последовательность, используется механизм фиксации события (флажок int f=0). А теперь рассмотрим вторую форму организации цикла с использованием оператора do...while. // Обработка последовательности - 2 #include <stdio.h> #include <conio.h> #include <iostream.h> #include <math.h> void main() { int a; float sum=0; int ko=0; int f=0; cout<<"\nВведите последовательность. (0)\n"; {cin>>a; if (a!=0) { sum+=a; if (a<0) ko++; f=1; } } while (a!=0); if(f==1) printf("Sum=%.3f,Kol.otr.=%i.\n",sum,ko); printf("Последовательность пуста!\n"); getch(); } В этом случае, чтобы исключить обработку индикатора окончания, необходимо дважды анализировать условие: if(a<0)и while(a!=0). Еще один вариант программы связан с использованием оператора досрочного выхода из цикла - break. Другие способы определения окончания последовательности также должны быть реализованы с учетом того, что обрабатываться могут лишь элементы последовательности, а не служебные или иные виды данных.
4.2 Сложные структуры данных – массивы Массив – это группа элементов одного типа, расположенных друг за другом в памяти, и имеющих одно общее имя. Элемент часто называют компонентой массива. Каждый элемент массива может быть обозначен с помощью указателя – индекса, который может быть вычислен. Например, объявим массив данных: int mas[4]; Т.е. объявлен массив элементов целого типа, состоящий из 4-х элементов. Размер массива в этом случае составляет 4 х 2 = 8 байт. Индекс массива начинается с 0. Как и обычные переменные, элементы массива могут быть инициализированы при объявлении: int mas[4]={12, -7, 19, 5}; int mas[4]={6, 3}; Остальные элементы будут равны 0. Индексы можно вычислять: tmp = mas[i+1]; Если i=2 тогда tmp=8. Например, следующий фрагмент выводит значения массива на экран: for (int i=0; i<4; i++) cout<<mas[i]<<" "; А вот этот фрагмент позволяет вводить данные в массив в диалоговом режиме: for (int i=0; i<4; i++) {cout<<i<<" = "; cin>>mas[i]; cout<<"\n"; Массив не может быть пустым. В C++ можно использовать одно, двух, трех и более мерные массивы. Например, двухмерный массив 2 х 3 объявляется следующим образом: int msb[2][3]={{12,3,-5},{19,5,4}};
Массив msb располагается в памяти он так:
Самый правый индекс в паре будет меняться чаще всего. Чтобы вывести построчно двухмерный массив, можно использовать следующий программный фрагмент: for (int i=0; i<2; i++) { for (int j=0; j<3; j++) cout<<msb[i][j]<<" = "; cout<<"\n"; }
В качестве завершающего примера приведем реализацию программы, которая определяет количество "совершенных" чисел в одномерном массиве. Совершенным называют натуральное число, равное сумме всех своих собственных делителей (т. е. всех положительных делителей, отличных от самого́ числа). // Task 51 Количество совершенных чисел #include <stdio.h> #include <conio.h> #include <iostream.h> #include <math.h> int mas[12]={12,7,6,67,34,28,32,17,18,9}; int sover (int a); // -- prototype void main() // --- MAIN --- { int i,j; int k=0; for (i=0;i<9;i++) // Обработка массива {if(sover(mas[i])==1) {k++; printf("%4i\n",mas[i]);}; }; printf("k=%2i.\n",k); getch(); } int sover (int a) // 1 – если число a совершенное. { int Sum=0; for(int i=1;i<=a-1;i++) {if (a%i==0) Sum+=i;}; if (Sum==a) return 1; return 0; }
Дата добавления: 2014-11-29; Просмотров: 435; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |