Инициализация массивов
Термином "инициализация" обозначают возможность задать начальные значения элементов массива без программирования соответствующих действий. Например, не прибегая к программным средствам типа присвоения значений в цикле или считывания данных из внешнего источника (файл, клавиатура, блок данных). В Си одновременно с объявлением массива можно задать начальные значения всех элементов массива или только нескольких первых его компонент: int d[10]={1,2,3,4}; char a[7]="Привет"; char b[7]={'П','р','и','в','е','т'}; Пример выполнения задания:
1. В одномерном массиве, состоящем из n вещественных элементов, вычислить: · сумму отрицательных элементов массива; · произведение элементов массива, расположенных между максимальным и минимальным элементами; Блок - Схема
Код программы : #include <conio.h> #include <iostream> using namespace std; #include <math.h> int main() { const int n = 6; int a[n],kx,kn,i,z,s; int otr=0; cout <<"\nvvedite massiv\n"; for (i=0; i<n; i++) cin>>a[i]; //vvod massiva a s klaviaturi // int max=a[0]; int min=a[0]; kn=0; kx=0; for (i=0; i<n; i++) if (a[i]>max) //cikl dlya nahozhdeniya naibolshego elementa // { kx=i; max=a[i]; }
for (i=n; i>0; i--) //cikl dlya nahozhdeniya naimenshego elementa // if (a[i]<min) { min=a[i]; kn=i; } cout<<"max="<<max<<" min="<<min; for (i=0; i<n; i++) if (a[i]<0) { otr=otr+a[i]; //podschet summi otric. elementov // } if (kn>kx) { s=1; for (i=kn; i<kx; i++) s=s*a[i]; } else { s=1; for (i=kx; i>kn; i--) s=s*a[i]; }
cout<<"\n proizvedenie chlenov mezhdu max i min chlenami - "<<s; cout<<"\n summa otric 4lenov - "<<otr; getch(); return 0; } Генерация двумерных массивов Принцип генерации двумерных массивов такой же, как и одномерных. //Описание функции генерации массиваvoid gen(int str,int slb, int a, int b, int m[max_x][max_y]){ int i,j; srand(time(NULL)*1000); //устанавливает начальную точку генерации случайных чисел for (i=0;i<str;i++) for (j=0;j<slb;j++) m[i][j]=rand()%(b-a)+a); //функция генерации случайных чисел на [a,b)}
Ввод-вывод массива Язык Си не имеет встроенных средств для ввода-вывода массива целиком, поэтому массив вводят и выводят поэлементно с помощью циклов, как, например, в следующей программе: 1. #include <stdio.h> 2. 3. void main(void) 4. { 5. double a[100]; int n, i; 6. printf("Введите количество чисел n = "); 7. scanf("%d", &n); 8. if( n>(sizeof a)/sizeof(double) ) 9. { printf("Слишком много элементов\n"); return; } 10. for(i=0; i<n; i++) 11. { 12. printf("a[%d] = ", i); scanf("%lf", &a[i]); 13. } 14. 15. /* Операторы, обрабатывающие массив */ 16. 17. }
Блок-схема ввода массива #include <stdio.h> void main(void) { double a[100]; int n, i; printf("Введите количество чисел n = "); scanf("%d", &n); if( n>(sizeof a)/sizeof(double) ) { printf("Слишком много элементов\n"); return; } for(i=0; i<n; i++) { printf("a[%d] = ", i); scanf("%lf", &a[i]); } /* Операторы, обрабатывающие массив */ } Во многих случаях удобно возложить на программу подсчет числа элементов, вводимого массива, при этом ввод завершается при появлении во входном потоке признака конца данных. Таким признаком в следующей программе служит число большее 1.0e300 1. #include <stdio.h> 2. 3. void main(void) 4. { 5. double a[100], temp; int n, end; 6. for(end=n=0; n<(sizeof a)/sizeof(double); n++) 7. { 8. printf("a[%d] = ", n); scanf("%lf", &temp); 9. if( temp>=1.0e300 ) { end=1; break; } 10. a[n] = temp; 11. } 12. if( end ) 13. { 14. 15. /* Операторы, обрабатывающие массив */ 16. 17. } 18. else 19. printf("Переполнение массива\n"); 20. } #include <stdio.h> void main(void) { double a[100], temp; int n, end; for(end=n=0; n<(sizeof a)/sizeof(double); n++) { printf("a[%d] = ", n); scanf("%lf", &temp); if( temp>=1.0e300 ) { end=1; break; } a[n] = temp; } if( end ) { /* Операторы, обрабатывающие массив */ } else printf("Переполнение массива\n"); } Вывод массива, содержащего большое количество элементов желательно производить в несколько строк с остановом после заполнения экрана. Блок-схема вывода массива
Следующий фрагмент программы выводит массив строками по 5 элементов. После вывода 120 элементов программа останавливается для просмотра выдачи. Очередные 120 элементов выводятся после нажатия на любую клавишу. 1. for (i=0; i<n; i++) 2. { 3. printf("%10.3lf ", a[i]); 4. if( (i+6) % 5 == 0 ) printf("\n"); 5. if( (i+121) % 120 == 0 ) { getch(); clrscr(); } 6. } for (i=0; i<n; i++) { printf("%10.3lf ", a[i]); if( (i+6) % 5 == 0 ) printf("\n"); if( (i+121) % 120 == 0 ) { getch(); clrscr(); } }Здесь стандартная функция clrscr() очищает экран.
Итак, основные выводы по вышеизложенной информации.
Свойства массивов: 1. В массиве хранятся отдельные значения, которые называются элементами.
Популярное: Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (221)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |