Автор работы: Пользователь скрыл имя, 26 Ноября 2012 в 16:24, доклад
Проектирование алгоритмов и программ - наиболее ответственный этап жизненного цикла программных продуктов, определяющий, насколько создаваемая программа соответствует спецификациям и требованиям со стороны конечных пользователей. Затраты на создание, сопровождение и эксплуатацию программных продуктов, научно-технический уровень разработки, время морального устаревания и многое другое - все это также зависит от проектных решений.
В рассмотренном
примере определен массив B, состоящий
из четырех целочисленных элементов. С
элементами массива можно манипулировать
как с обыкновенными переменными.
Существуют многомерные массивы, например:
int A[3][2]; -двумерный массив
(четыре строки и три столбца):
char A[3][3][3][3]; - четырехмерный
массив.
Рассмотрим пример работы с двумерным
массивом.
#include “stdio.h”
main()
{
float B[4][3];
B[0][0] = 0;
B[1][1] = 1.1; B[2][1] = 1.2; B[3][1] = 1.3;
B[1][2] =2.1; B[2][2] = 2.2; B[3][2] =2.3;
printf("B[1,1]= %4.2f B[2,1]= %4.2f B[3,1]= %4.2f\\n", B[1][1],B[2][1],B[3][1]);
printf("B[1,2]= %4.2f B[2,2]= %4.2f B[3,2]= %4.2f\\n", B[1][2],B[2][2],B[3][2]);
}
Записи
В отличие от массивов запись позволяет
хранить данные различных типов. Запись
начинается после ключевого слова struct.
Пример, где в записи хранится информация
о студентах: фамилия, год рождения, номер
группы:
#include “stdio.h”
#include “string.h”
typedef struct A {
char Fio[31];
int
int
};
main()
{
struct A B;
strcpy(B.Fio,"Ivanow G.I."); B.God = 1977;
B.Gruppa = 384;
printf("Fio = %s\\n",B.Fio);
printf("God = %d\\n",B.God);
printf("Gruppa = %d\\n",B.Gruppa);
}
В рассмотренном примере запись имеет
следующую структуру:
char Fio[31]; /* 1 поле записи */
int
int
Далее можем ввести структуру B аналогичную
A по команде
struct A B;
Далее можем в поля помещать конкретные
данные, но мы должны уточнить, что поля
принадлежат переменной B нотацией с точкой
(B.Fio:=”Ivanow G.I.”; и т.д.).
С помощью ключа typedef
структурам дается имя.
Пример можно переписать следующим образом.
#include “stdio.h”
#include “string.h”
typedef struct {
char Fio[31];
int
int
} A;
main()
{
A B;
strcpy(B.Fio,"Ivanow G.I.");
B.God = 1977;
B.Gruppa = 384;
printf("Fio = %s\\n",B.Fio);
printf("God = %d\\n",B.God);
printf("Gruppa = %d\\n",B.Gruppa);
}
В примере мы рассмотрели одну запись, но в реальной жизни в группе не может быть одного студента, поэтому мы можем совместить массив и запись и создать массив записей. Рассмотрим пример.
#include
“stdio.h”
#include “string.h”
typedef struct A {
char Fio[31];
int God;
int Gruppa;
};
main()
{
A WGruppa[12];
strcpy(WGruppa[1].Fio,"Ivanow G.I.");
WGruppa[1].God = 1977;
WGruppa[1].Gruppa = 384;
strcpy(WGruppa[2].Fio,"Petrow R.G.");
WGruppa[2].God = 1978;
WGruppa[2].Gruppa = 384;
printf("Fio1 = %s\\n",WGruppa[1].Fio);
printf("God1 = %d\\n",WGruppa[1].God);
printf("Gruppa1 = %d\\n",WGruppa[1].Gruppa);
printf("Fio2 = %s\\n",WGruppa[2].Fio);
printf("God2 = %d\\n",WGruppa[2].God);
printf("Gruppa2 = %d\\n",WGruppa[2].Gruppa);
}
Первоначально мы определили
структуру A, а затем использовали ее при
объявлении структуры WGruppa, как массива
состоящего из 12 записей структуры B.
Теперь для адресации мы должны указать
номер элемента массива и имя поля.
Существуют варианты, когда одна запись
содержит другую запись, например, добавляется
адрес, к рассмотренной выше записи студент.
Пример.
#include “stdio.h”
#include “string.h”
typedef struct Adress {
char City[31];
char Street_Nd_Kw[61]; };
typedef struct A {
char Fio[31];
int God;
int Gruppa;
Adress D_addr; };
main()
{
A WGruppa[12];
strcpy(WGruppa[1].Fio,"Ivanow G.I.");
WGruppa[1].God = 1977;
WGruppa[1].Gruppa = 384;
strcpy(WGruppa[1].D_addr.City,
strcpy(WGruppa[2].Fio,"Petrow R.G.");
WGruppa[2].God = 1978;
WGruppa[2].Gruppa = 384;
strcpy(WGruppa[2].D_addr.City,
printf("Fio1 = %s\\n",WGruppa[1].Fio);
printf("God1 = %d\\n",WGruppa[1].God);
printf("Gruppa1 = %d\\n",WGruppa[1].Gruppa);
printf("City= %s\\n",WGruppa[1].D_addr.City)
printf("Street= %s\\n",WGruppa[1].D_addr.
printf("Fio2 = %s\\n",WGruppa[2].Fio);
printf("God2 = %d\\n",WGruppa[2].God);
printf("Gruppa2 = %d\\n",WGruppa[2].Gruppa);
printf("City= %s\\n",WGruppa[2].D_addr.City)
printf("Street= %s\\n",WGruppa[2].D_addr.
}