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

Форум программистов: 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 сообщение ] 


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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