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

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

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

Программа 5

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

Дана последовательность чисел b1,...,bn. Получить квадратную матрицу порядка n, элементами которой являются числа b1,...,bnn, расположенные по схеме:Массивы и указатели, доступ к элементам массива через индексные указатели и динамическим выделением памяти, С, С++.
Овладение навыками использования индексных выражений и указателей при работе с многомерными массивами и вывод на экран элементов псевдографики в текстовом режиме..
Дана последовательность чисел 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 */
   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));
}

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

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)

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

В зоопарке ребёнок, возбужденно тыча пальцем на клетку с пpиматами (обезьянами :), кричит:
- Мама ! Мама ! Смотри - программисты !
- Почему ты так решил ?
- Они как папа ! - не мытые, лохматые и мозоль на попе !!!
Дата: 20-10-2004   Автор: Admin   Подрубрика: Компьютеры и дети