[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика









Программирование под ОС / C - C++ /

Массивы и указатели

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

Дана последовательность чисел 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()
{
   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(" ");}
}
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)

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


Комментарии

ttnsvkn
28-07-2011   
xQZGkW , [url=http://dxazygkbiptp.com/]dxazygkbiptp[/url], [link=http://byrsekrfwvdb.com/]byrsekrfwvdb[/link], http://eeaxjtlfcyvp.com/

trqmjqw
26-07-2011   
JFenje , [url=http://fxcnbctgkyej.com/]fxcnbctgkyej[/url], [link=http://olgbmewjddcv.com/]olgbmewjddcv[/link], http://ddojldgwfrzx.com/

hormiuugg
25-07-2011   
9qYb0F <a href="http://xrepnrrbvlfv.com/">xrepnrrbvlfv</a>

Daveigh
25-07-2011   
Great post with lots of imporantt stuff.

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Программирование под ОС / C - C++ /

Пишем CD проигрыватель 2
28-05-2010   

Сейчас я покажу как можно написать простой проигрыватель CD дисков. Для начала разместим все нужные компоненты на форме (см. рисунок)... подробнее

Кол. просмотров: общее - 2481 сегодня - 0

Пишем браузер
28-05-2010   

Продолжаю тему клонирования программ darkamstera на Delphi в С++Builder. В этой статье я покажу, как с помощью стандартных компонентов, можно создать свой браузер. Браузер будет на движке всеми-любимого InternetExplorer. Наш зверь сможет ходить по URL... подробнее

Кол. просмотров: общее - 2303 сегодня - 1

Информация о системе
28-05-2010   

Выводим информацию о нашей родненькой системе. Для получения большей части информации мы будем использовать обширные функции, это не так сложно, как может показатся с первого взгляда и вообще код довольно простой и примитивный, так что покапавшись в нем пару минут - можно в легкостью разобраться что к чему, зачем и как... подробнее

Кол. просмотров: общее - 1238 сегодня - 0

FTP клиент своими руками
28-05-2010   

Здраствуй, сечас я покажу, как в CBuilder можно создать свой простой FTP-клиент, похожий пример можно найти в документации C++Builder Developnets Guilde... подробнее

Кол. просмотров: общее - 1814 сегодня - 0

Работаем с POP-сервером
28-05-2010   

Здраствуй, в этой статье я расскажу про способы получения e-mail писем и их прочтения. Для начала давайте составим интерфейс будущей программы Вот, что у меня вышло... подробнее

Кол. просмотров: общее - 1022 сегодня - 1



  пїЅ WWW.COMPROG.RU пїЅ пїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ - 2009 | Designed and Powered by Zaipov Renat | пїЅпїЅпїЅпїЅпїЅпїЅ