→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Обработка символьной информации 
Автор Сообщение
Администратор
Аватара пользователя

Регистрация: 03.11.2007
Сообщения: 559
Откуда: Украина
Специальность:

Репутация: 6 [ ? ]
Сообщение Обработка символьной информации
Цель работы: Овладение навыками использования индексных выражений и указателей при работе с многомерными массивами и вывод на экран элементов псевдографики в текстовом режиме.

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

Текст программы
#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("\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
*(array+i)

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

[i]


11.11.2007 18:41
Профиль ICQ
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 


Кто сейчас на конференции

Зарегистрированные пользователи: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
© 2013 «Форум программистов Украины»