Суббота, 2025-08-30, 1:00 AM
Приветствую Вас Гость | RSS
Главная | Массивы в СИ | Регистрация | Вход
Меню сайта
Вход на сайт
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Программирование

    Массивы в Си. Элементы массива. Инициализация массива. объявление массива. Динамические и статические массивы в C++. Многомерные массивы. Строковые

     

     

    Массивы

    Массивы представляют собой последовательность данных одного типа, размещённых друг за другом в памяти компьютера. Каждая единица данных называется элементом массива.

    Описание массива:

    Доступ к элементам массива осуществляется по адресации, относительно первого элемента, то есть, если необходимо обратиться к 10 элементу, надо написать intArrey[9] или intArrey+9; (Первый элемент имеет номер 0 или смещение 0 от начала.)

    Возможна инициализация массива

    int Arrey[5]={10,20,30,40,50};

    Существуют много мерные массивы, в этом случае указывается размерность по всем размерностям: int Arrey2[5][3]; Инициализация такого массива представляется в виде:

    int Arrey[5][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12},{0,1,0}};
    int Arrey[5][3]={1,2,3,4,5,6,7,8,9,10,11,12,0,1,0};

    При этом описании Существует массив Arrey[5] , который содержит адреса начала каждой строки, Если мы хотим использовать указатель на этот массив необходимо обращение **Arrey;

    Для объявления массивов можно использовать область динамической памяти, в этом случае описание массива будет иметь вид:

    int *Arrey;
    Arrey=(int*)malloc(n*sizeof(int));

    Пример программы, работающей с массивами.

    #include<iostream.h>
    #include <alloc.h>
    #include <stdlib.h>
    #include <time.h>
    #include <math.h>
    int vvodArrey(int n,int m,int *Arrey,int zz);
    int exitArrey(int n,int m,int *Arrey);
    int* sunArrey(int n,int m,int *Arrey1,int*Arrey2);
    int vvodArrey(int n,int m, int *Arrey,int zz)
    { int i,j;
    randomize();
    for(i=0;i<n;i++)
       { for(j=0;j<m;j++)
                   *(Arrey+i*m+j)=random(zz);
       }
       return 0;
    }
    int exitArrey(int n,int m, int *Arrey)
    { int i;
    for(i=0;i<n*m;i++)
                   (((i+1)%m)==0)? cout<<*(Arrey+i)<<"\n" : cout<<*(Arrey+i)<<"\t";
    return 0;
    }
    int* sunArrey(int n,int m,int *Arrey1,int*Arrey2)
    {
    int*Arrey;
    int i,j;
    Arrey=(int*)malloc(sizeof(int)*n*m);
    for(i=0;i<n;i++)
       for(j=0;j<m;j++)
        *(Arrey+i*m+j)=*(Arrey1+i*m+j)+(*(Arrey2+i*m+j));
    return Arrey;
    }
    int main(void)
    {
    int *ArreyF,*ArreyS,*ArreyRez,n,m,size=100;
    cout <<"Введите размерность массива\n по строкам:";
    cin >>n;
    cout <<"по столбцам : ";
    cin >>m;
    if ((ArreyF=(int*)malloc(sizeof(int)*n*m))==0)
    { cout <<" нет памяти\n";return -1;}
    if ((ArreyS=(int*)malloc(sizeof(int)*n*m))==0)
    { cout <<" нет памяти\n";return -1;}
    vvodArrey(n,m,ArreyF,size);
    vvodArrey(n,m,ArreyS,size/2.);
    ArreyRez=sunArrey(n,m,ArreyF,ArreyS);
    cout <<"******--1--********\n";
    exitArrey(n,m,ArreyF);
    cout <<"******--2--*********\n";
    exitArrey(n,m,ArreyS);
    cout <<"******--3--*********\n";
    exitArrey(n,m,ArreyRez);
    return 0;
    }

     

    Результат работы программы:

    Введите размерность массива
     по строкам:    2
    по столбцам : 3
    ******--1--********
    64      47      73
    8       85      53
    ******--2--*********
    32      23      36
    4       42      26
    ******--3--*********
    96      70      109
    12      127     79
    Введите размерность массива
     по строкам:   1
    по столбцам : 5
    ******--1--********
    70      44      39      57      46
    ******--2--*********
    35      22      19      28      23
    ******--3--*********
    105     66      58      85      69

    uCozCopyright MyCorp © 2025