Хелпикс

Главная

Контакты

Случайная статья





тип имя_массива[количество_строк][количество_столбцов];



тип имя_массива[количество_строк][количество_столбцов];

тип имя_массива[количество_элементов n][количество_элементов m] =

{ {значение_элем. _00, значение_ элем. _0_1, … значение_ элем. _0_m-1},

{значение_ элем. _1_0, значение_ элем. _1_1, … значение_ элем. _1_m-1},

{значение_ элем. _n-1_0, значение_ элем. _n-1_1, … значение_ элем. _n-1_m-1} };

 

Пример. Объявление двумерного массива

int mas1[10][15];

int a[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, {7, 8, 9} };

 

Для перебора всех элементов массива необходимо организовать цикл.

 

Пример. Подсчет суммы и среднего арифметического элементов двумерного массива

#include < stdio. h>

#include < stdlib. h>

#define N 4

#define M 3

 

void main()

{

int mas[N][M] = {{10, 2, 15, 7}, {14, 3, 11, 6}, {19, 0, 14, 13}};

int sum=0, i, j;

float sr;

for (i=0; i< N; i++)

{

   for (j=0; j< M; j++)

   {

       sum+=mas[i][j];

   }

}

printf(" Summa = %d\n", sum); //вывод результата, равного 32

sr=(float)sum/(N*M);            // приведение суммы к вещественному типу и

//подсчет среднего арифметического

printf(" Srednee = %6. 3f", sr); //вывод результата, равного 8. 500

}

 

Пример. Заполнение и вывод двумерного массива

#include < stdio. h>

#include < stdlib. h>

#define N 5

#define M 4

 

int main()

{

int mas[N][M];

int i, j=0;

for (i=0; i< N; ++i)

{

   for (j=0; j< M; ++j)

   {

       mas[i][j] = i+j; //заполнение массива значениями i+j

   }

}

for (i=0; i< N; i++)

{

   for (j=0; j< M; j++)

   {

       printf(" %d", mas[i][j]); //вывод элементов массива

   }

   printf(" \n" );

}

}

 

Пример. Поиск максимального элемента и его индексов в двумерном массиве

#include < stdio. h>

#include < stdlib. h>

#include < time. h>

#define N 8

#define M 10

 

void main()

{

srand(time(0));

int mas1[N][M];

int Max, i, j, indi, indj;

for (i=0; i< N; i++)

{

   for (j=0; j< M; j++)

   {

       mas1[i][j] = 15+rand()%30; //заполнение массива значениями от 15 до 44

   }

}

for (i=0; i< N; i++)

{

    for (j=0; j< M; j++)

    {

       printf(" %3d", mas1[i][j]); //вывод элементов массива

    }

    printf(" \n" );

}

Max=mas1[0][0];               //задание переменной Max начального значения

indi=0;         //задание переменной indi начального значения

indj=0;         //задание переменной indj начального значения

//поиск максимального элемента

for (i=1; i< N; i++) //перебор по строкам

 {

   for (j=0; j< M; j++) //перебор по столбцам

   {

       if (mas1[i][j]> Max) //если встретившийся элемент массива больше

//текущего значения переменной Max

       {

           Max=mas1[i][j]; //занесение в переменную Max значения элемента массива

           indi=i; //запоминание номера строки, содержащей максимальный элемент

           indj=j; //запоминание номера столбца, содержащего максимальный элемент

       }

   }

}

printf(" Max = mas[%d][%d] = %d\n", indi, indj, Max); //вывод значения максимального

//элемента и индексов этого элемента

}

 

Пример. Поиск минимальных элементов в столбцах двумерного массива

#include < stdio. h>

#include < stdlib. h>

#include < time. h>

#define N 8

#define M 10

 

void main()

{

srand(time(0));

int mas1[N][M];

int Min, i, j;

for (i=0; i< N; i++)

{

   for (j=0; j< M; j++)

   {

       mas1[i][j] = 15+rand()%30; //заполнение массива значениями от 15 до 44

   }

}

for (i=0; i< N; i++) //перебор по строкам

{

    for (j=0; j< M; j++) //перебор по столбцам

    {

       printf(" %3d", mas1[i][j]); //вывод элементов массива

    }

    printf(" \n" );

}

//поиск минимальных элементов в столбцах

for (j=0; j< M; j++) //перебор по столбцам

{

   Min=mas1[0][j];            //задание переменной Min начального значения

   for (i=1; i< N; i++) //перебор по строкам

   {

       if (mas1[i][j]< Min)

       {

           Min=mas1[i][j];

       }

   }

   printf(" V stolbce %d Min = %d\n", j, Min); //вывод значений минимальных

//элементов в столбцах

}

}

 

Пример. Блок-схема алгоритма подсчета минимальных элементов в столбцах

Код:

    //поиск минимальных элементов в столбцах

for (j=0; j< M; j++) //перебор по столбцам

{

   Min=mas1[0][j];            //задание переменной Min начального значения

   for (i=1; i< N; i++) //перебор по строкам

   {

       if (mas1[i][j]< Min)

       {

           Min=mas1[i][j];

       }

   }

   printf(" V stolbce %d Min = %d\n", j, Min); //вывод значений минимальных

//элементов в столбцах

}

Блок-схема:

 

 


Работа со строками

 

Строки в Си представляют собой одномерные массивы, заканчивающиеся символом конца строки ‘\0’.

 

Пример инициализации строки:

char s[41];  //40 элементов для значений и один для завершающего нуля

char a[] = " string";

char b[] = { 's', 't', 'r', 'i', 'n', 'g', '\0'};

 

Для ввода строки с клавиатуры используют функции scanf() и gets():

char s[50];

char str[50];

scanf(" %s", s);

gets(str);

 

Для вывода значения строки на экран используют функции printf() и puts().

printf (" %s", s);

puts(str);

 

Для работы со строками в Си предусмотрена библиотека string. h

 

http: //www. chitay. org/c/main. htm#08



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.