Министерство образования и науки Российской Федерации
Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования
"Национальный исследовательский университет "МЭИ"
в г. Смоленске
Кафедра вычислительной техники
Лабораторная работа №1
по курсу: «Технология программирования»
Группа: ВМ-09
Студент: Полячков.А.А.
Преподаватель: Панкратова Е.А.
Федулов Я.А
Вариант: 18
Смоленск 2012 г.
Оценка характеристик программ на основе лексического анализа Задача :
1)Напишите программу расчета по двум формулам.
2) В одномерном массиве, состоящем из п вещественных элементов, вычислить:
-
количество элементов массива, меньших С;
-
сумму целых частей элементов массива, расположенных после последнего отрицательного элемента.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 20%, а потом — все остальные.
Определить значения метрик Холстеда, на основе которых дать оценку качества разработанного исходного текста программы.
Реализация программы
Текст программы для реализации возможного решения поставленной задачи, разработанной с использованием языка программирования С#, приведен в таблице 1:
Таблица 1 Текст программы
|
Номер строки |
Строки программы |
|
1 |
using System; |
|
2 |
using System.Collections.Generic; |
|
3 |
using System.Text; |
|
4 |
namespace vjz |
|
5 |
{ |
|
6 |
class Program |
|
7 |
{ |
|
8 |
static void Main(string[] args) |
|
9 |
{ |
|
10 |
int max,I,gg; |
|
11 |
int kol=0,j=0; |
|
12 |
int[] q,z; |
|
13 |
int a = Int32.Parse(Console.ReadLine()); |
|
14 |
double z1, z2; |
|
15 |
//Console.read(a) |
|
16 |
//z1 = (a + 2) / (Math.Sqrt(2 * a)); |
|
17 |
z1 = ((a + 2) / (Math.Sqrt(2 * a)) - a / (Math.Sqrt(2 * a) + 2) + 2 / (a - Math.Sqrt(2 * a))) * (Math.Sqrt(a) - Math.Sqrt(2)) / (a + 2); |
|
18 |
z2 = 1 / (Math.Sqrt(a) + Math.Sqrt(2 )); |
|
19 |
Console.WriteLine(z1); |
|
20 |
Console.WriteLine(z2); |
|
21 |
Console.WriteLine("введите размер массива"); |
|
22 |
int n = Int32.Parse(Console.ReadLine()); |
|
23 |
Console.WriteLine("введите С"); |
|
24 |
int c = Int32.Parse(Console.ReadLine()); |
|
25 |
q = new int[n]; |
|
26 |
z = new int[n]; |
|
27 |
Random b = new Random(); |
|
28 |
for ( i = 0; i < n; ++i) |
|
29 |
{ |
|
30 |
q[i] = b.Next(100)-50; |
|
31 |
Console.WriteLine(Convert.ToString(q[i])); |
|
32 |
} |
|
33 |
max = q[0]; |
|
34 |
for ( i = 0; i < n; ++i) |
|
35 |
{ |
|
36 |
if (q[i]>max) |
|
37 |
max = q[i]; |
|
38 |
if (q[i] < c) |
|
39 |
kol++; |
|
40 |
} |
|
41 |
Console.WriteLine("меньше С"); |
|
42 |
Console.WriteLine(kol); |
|
43 |
kol = 0; |
|
44 |
for ( i = n-1; i>-1; --i) |
|
45 |
{ |
|
46 |
if (q[i] <0 ) |
|
47 |
break; |
|
48 |
kol=kol+q[i]; |
|
49 |
} |
|
50 |
Console.WriteLine("max"); |
|
51 |
Console.WriteLine(max); |
|
52 |
for ( i = 0; i < n; ++i) |
|
53 |
if ((q[i] > 0.8 * max) && (q[i] < 1.2 * max)) |
|
54 |
{ |
|
55 |
z[j]=q[i]; |
|
56 |
j++; |
|
57 |
q[i] = 999; |
|
58 |
} |
|
59 |
for ( i = 0; i < n; ++i) |
|
60 |
if (q[i]!=999) |
|
61 |
{ |
|
62 |
z[j] = q[i]; |
|
63 |
j++; |
|
64 |
} |
|
65 |
Console.WriteLine("новый массив"); |
|
66 |
for ( j = 0; j < n; ++j) |
|
67 |
Console.WriteLine(Convert.ToString(z[j])); |
|
68 |
Console.WriteLine("сумма"); |
|
69 |
Console.WriteLine(kol); |
|
70 |
gg = Int32.Parse(Console.ReadLine()); |
|
71 |
} |
|
72 |
} |
|
73 |
} |
|
74 |
|
|
75 |
|
|
76 |
|
|
77 |
|
