Мегаобучалка Главная | О нас | Обратная связь


Инициализация массивов



2019-11-21 221 Обсуждений (0)
Инициализация массивов 0.00 из 5.00 0 оценок




Термином "инициализация" обозначают возможность задать начальные значения элементов массива без программирования соответствующих действий. Например, не прибегая к программным средствам типа присвоения значений в цикле или считывания данных из внешнего источника (файл, клавиатура, блок данных). В Си одновременно с объявлением массива можно задать начальные значения всех элементов массива или только нескольких первых его компонент:

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. В массиве хранятся отдельные значения, которые называются элементами.
2. Все элементы массива должны быть одного типа данных (int, float, char*...).
3. Все элементы хранятся в памяти последовательно, и первый имеет нулевой адрес.
4. Имя массива является константой и содержит адрес первого элемента массива.



2019-11-21 221 Обсуждений (0)
Инициализация массивов 0.00 из 5.00 0 оценок









Обсуждение в статье: Инициализация массивов

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (221)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)