Рейтинг@Mail.ru
Menu
Скачать картинки на телефон бесплатно.
Заставки для телефона, аватарки.
(Вырезать из фотографии)

Роза `Гренд Могул` Яхта `Алиса` Лесное озеро Музей `Пирогово` Белочка
Выберите рубрику (тему)

Массивы и указатели, доступ к элементам массива через индексные указатели и динамическим выделением памяти

Программирование на C и C++
Программа 5

Цель работы
Массивы и указатели, доступ к элементам массива через индексные указатели и динамическим выделением памяти Овладение навыками использования индексных выражений и указателей при работе с многомерными массивами и вывод на экран элементов псевдографики в текстовом режиме. Дана последовательность чисел b 1,...,b n. Получить квадратную матрицу порядка n, элементами которой являются числа b 1,...,b n n, расположенные по схеме:

Овладение навыками использования индексных выражений и указателей при работе с многомерными массивами и вывод на экран элементов псевдографики в текстовом режиме.

Дана последовательность чисел b1,...,bn. Получить квадратную матрицу порядка n, элементами которой являются числа b1,...,bnn, расположенные по схеме:


Описание переменных


**a

int

Указатель на матрицу

*b

int

Указатель на первый элемент последовательности чисел

n

int

Размерность a и b


Описание функций


Имя функции Тип значения, которое возвращается Назначение Параметры
Имя Тип Назначение
main void Главная функция программы - - -
inputvector void Ввод одномерного массива *m int Указатель на первый элемент массива
n int Длина массива
outputmatrix void Вывод двумерного массива *k int Указатель на первый элемент массива
n int Размерность массива
zmeyka void Заполнение матрицы элементами одномерного массива по заданной схеме *b int Указатель на первый элемент одномерного массива
*a int Указатель на первый элемент исходной матрицы
n int Размерность массива


Текст программы


#include <stdio.h>


#include <conio.h>


#include <alloc.h>


#include <stdlib.h>


#include <math.h>


void inputvector(int *, int n);


void outputmatrix(int *, int n);


void zmeyka(int *, int *, int n);


void main()


{
    /* http://nataliya.kiev.ua/?id=124 */
    clrscr();
    int **a, *b;
    int n;
    puts("Enter n:");
    scanf("%d", & n);
    a = (int**) calloc(n, sizeof(int*));
    b = (int*) calloc(n, sizeof(int));
    if (a == NULL || b == NULL)
    {
        puts("no memory");
        exit(1);
    }
    inputvector(b, n);
    zmeyka(b, *a, n);
    outputmatrix(*a, n);
    free(a);
    free(b);
    getch();
}

void inputvector(int *m, int n)


{
    for (int i = 0; i < n; i++)
    {
        printf("b%d=", i + 1);
        scanf("%d", m + i);
    }
}

void outputmatrix(int *k, int n)


{
    int i, j;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
            printf("%6.d", *(k + n*i + j));
        printf("\n");
    }
}

void zmeyka(int *b, int *a, int n)


{
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if (i % 2 != 0)
                *(a + i*n + j) = int(pow(*(b + j), i + 1));
            else
                *(a + i*n + j) = int(pow(*(b + n - j - 1), i + 1));
}

Print

Печатать текст программы!



Source code: «Массивы и указатели, доступ к элементам массива через индексные указатели и динамическим выделением памяти».

Редактировать, копировать

(WYSIWYG редактор «NicEdit»)
Загрузить файл с текстом программы: «Массивы и указатели, доступ к элементам массива через индексные указатели и динамическим выделением памяти». Печатать текст программы!

Загрузить файл с текстом программы

(Prg5.c - Windows-1251)

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


1)
Enter n:
5
b1=1
b2=2
b3=3
b4=4
b5=5
      5   4   3   2   1
      1   4   9   16   25
      125   64   27   8   1
      1   16   81   256   625
      3125   1024   243   32   1

2)
Enter n:
4
b1=1
b2=5
b3=3
b4=8
      8   3   5   1
      1   25   9   64
      512   27   125   1
      1   625   81   4096

Теория к программе


 

Массив

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

    тип_данных имя массива [размер_массива]

  Каждый массив имеет имя. Значение индекса должно находиться в диапозоне от нуля до величины, которая на единицу меньше размера массива, указанное во время его описания.

 

Тип_данных

задает тип элементов массива.

 

Размер_массива

- константа или константное выражение, которое задает количество элементов массива.

 

Имя массива

является указателем-константой, которая равняется адресу начала массива (первого байта первого элемента массива).

 

Доступ к отдельным элементам массива

может осуществляться или с помощью имени массива и индекса (порядковому номеру) или за указателем (операция *). Другими словами, следующие ссылки будут полностью эквивалентными:

    array[i]
    *(array+i)

  Каждый раз, когда при выполнении программы в выражении появляется
идентификатор типа массива
, он превращается в
указатель на первый элемент массива
.


Дата: 2008-03-22   Автор: Admin
Случайный анекдот

Познакомился интернетчик с девушкой, погуляли, он и спрашивает:
- Как бы нам еще встретиться?
Она ему на бумажке телефон написала и уехала. Он смотрит на бумажку: "На ICQ не похоже... На IP тоже..." Так и не состоялась любовь...
Дата: 25-12-2004   Автор: Admin   Подрубрика: Интернет