Основы алгоритмизации и программирования. 3
Министерство образования и науки РФ |
| Северный (Арктический) федеральный университет |
Институт информационных
(наименование кафедры)
(фамилия,
имя, отчества студента)
Факультет курс
группа
КОНТРОЛЬНАЯ
РАБОТА
По дисциплине
На тему:
Контрольная работа
№2, Основы алгоритмизации
и программирования,
Задание №6 «Табулирование
функций», Задание №7
«Подпрограммы», Задание
№8 «Одномерные массивы»,
Задание №9 «Формирование
массивов», Задание
№10 «Операции с элементами
массивов», Задание
№11 «Работа со строками»
Отметка о зачете
Руководитель ст. преподаватель
Архангельск
2011
ЛИСТ
ЗАМЕЧАНИЙ
Контрольная работа №2
Основы алгоритмизации
и программирования
Задание №6 «Табулирование функций»
Составить программу для вычисления значения функции F(x)на отрезке [a,b] c шагом h.Результат представить в виде таблицы, первый столбец которой- значение аргумента, второй - соответствующие значения функции. Построенную таблицу вывести в текстовый файл. Задание 27. F(x)=x^2*sinx
система тестов при:
начале вычисления a=0,
конце вычисления b=6,
шаге
h=1
Таблица 1.1 Система тестов
| номер теста | x | F(x) |
| 1 | 0 | 0,0000 |
| 2 | 1 | 0,8415 |
| 3 | 2 | 3,6372 |
| 4 | 3 | 1,2701 |
| 5 | 4 | -12,1088 |
| 6 | 5 | -23,9731 |
| 7 | 6 | -10,0590 |
при начале вычисления a=0,
при конце вычисления b=6,
при шаге
h=1
Таблица 1.2 Исполнение алгоритма
| № | a, a+=h | x | F(x) | b<x, при b=6 |
| 1 | 0 | 0 | 0,0000 | false |
| 2 | 1 | 1 | 0,8415 | false |
| 3 | 2 | 2 | 3,6372 | false |
| 4 | 3 | 3 | 1,2701 | false |
| 5 | 4 | 4 | -12,1088 | false |
| 6 | 5 | 5 | -23,9731 | false |
| 7 | 6 | 6 | -10,0590 | false |
| 8 | 7 | 7 | 32,1923 | true |
false (продолжение расчета)
true (конец расчета, сохранение в файл вывод
на экран)
Листинг 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; // для создания файлов указание пути на ПК
namespace Labaratornay №6
«Табулирование функций»
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("введите
// вывод надписи на экран
double a = double.Parse(Console.ReadLine(
Console.WriteLine("введите конец отрезка вычислений");
// вывод надписи на экран
double b = double.Parse(Console.ReadLine(
Console.WriteLine("введите шаг вычислений");
// вывод надписи на экран
double h = double.Parse(Console.ReadLine(
Console.WriteLine("x | f(x)"); // вывод надписи на экран
Console.WriteLine("-----------
using (StreamWriter e = new StreamWriter("otvet.txt")) // объявляем файловую переменную и связываем её с файлом на диске
{
for (double x = a; x <= b; x += h)//цикл a-начало цикла, b-конец цикла при х>b, h-шаг цикла
{
double F=Math.Pow(x,2)* Math.Sin(x);
Console.WriteLine("{0:F1}"+ " | " + "{1:F4}",х, F);// вывод на экран
e.WriteLine("{0:F1}"+ " | " + "{1:F4}", х, F); // сохранение в файл
}
}
System.Diagnostics.Process.
Console.ReadLine();
}
}
}
Задание №7 «Подпрограммы» Написать подпрограмму реализующую решение задачи в соответствии с вариантом.
Задача
27. Написать процедуру вывода на экран
всех положительных элементов
Таблица 2.1 Система тестов
| номер теста | массив | положительные элементы |
| 1 | 26 89 -54 -30 -86 -58 9 -8 -159 101 | 0-й 26, 1-й 89, 6-й 9, 9-й 101 |
| 2 | 167 205 237 -25 252 -75 93 108 98 124 | 0-й 167, 1-й 205, 2-й 237, 4-й 252, 6-й 93, 7-й 108, 8-й 98, 9-й 124 |
Описание: С помощью генератора случайных чисел создается массив и выводится на экран, далее выводится на экран порядковые номера и сами положительные элементы этого сгенерированного массива, начиная с нулевого элемента.
Листинг 2
namespace Labaratornay №7 «Подпрограммы»
{
class Program
{
static public bool IsSimpleNumber(int num) //ввод метода с условием что num>0
{
return (num > -1); //возвращает число если оно больше -1
}
static void Main(string[] args)
{
Random rnd = new Random(); // генератор случайных чисел
int N = 10; //ограничим размер массива 10 случайными символами
List<int> Mas = new List<int>();
Console.WriteLine("Данный массив"); //вывод надписи на экран
for (int i = 0; i < N; i++) // создается массив из случайных чисел
{
Mas.Add(rnd.Next(-256, 256)); // диапозон чисел массива
Console.Write("{0} ", Mas[i]); //вывод массива на экран
}
Console.WriteLine("
//вывод надписи на экран
for (int i = 0; i < N; i++) // цикл, перебор всех чисел масива с 1-го до N
if (IsSimpleNumber(Mas[i])) //вызов метода static public bool
IsSimpleNumber для определения всех положительных вкл 0
Console.WriteLine("{0}-й элемент {1}", i, Mas[i]); //выводятся порядковые номера и положительные числа массива и 0
Console.ReadKey(); //выход по реакции с клавиатуры
}
}
Задание
№8 «Одномерные массивы»
Задание
№27. Задана последовательность N целых
чисел. Вычислить сумму элементов массива,
порядковые номера которых совпадают
со значением этого элемента.
Таблица 3.1 Система тестов
| номер теста | mas | Sum элементов массива, порядковые номера которых совпадают со значением этого элемента. |
| 1 | { 3, 12, 2, -9, 4, -4 } | 6 |
| 2 | {12,17, 2, 64, 4, 5} | 11 |
| 3 | {9,2,13,3,19,5} | 8 |
| № | Инициализаторы | a[i] == i | Вывод | |
| 1 | 3 | false | ||
| 2 | 12 | false | ||
| 3 | 2 | true | 2 | |
| 4 | -9 | false | ||
| 5 | 4 | true | 4 | |
| 6 | -4 | false | ||
6 | ||||
Таблица 3.2 - Исполнение алгоритма
Листинг 3
namespace Labaratornay №8 «Одномерные массивы»
{
class Program
{
static void Main(string[] args)
{
int n = 6; // размерность массива
int[] a = new int[] { 3, 12, 2, -9, 4, -4 };// список инициализаторов
Console.WriteLine("Исходный массив: "); // вывод на экран перед массивом
for (int i = 0; i < n; ++i)
Console.Write("{0}\t", a[i]);
int num = 0; // задаем переменную с значение
0
for (int i = 0; i < n; i++) // циклический перебор значений
if (a[i] == i) // сценарий при совпадении номера элемента
{
num += a[i]; //сумма элементов массива номера которых совпадают со значением этого элемента
}
Console.WriteLine("Сумма
Console.ReadLine();
}
}
}
Задание №9 «Формирование массивов»
Задание №27. Получть матрицу:
000...000
010...010
010...010
::: :::
010...010
000...000
| Задание | Получено программой |
000...000010...010010...010::: :::010...010000...000 |
000...000010...010010...010::: :::010...010000...000 |
Листинг 4
namespace Labaratornay №9
«Формирование массивов»
{
class Program
{
static void Main(string[] args)
{
const int m = 5, n = 6; // Зададим колличество строк и столбцов
int[,] a = new int[m, n]; // зададим матрицу по размеру
[m,n]
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
a[i, j] = Convert.ToInt32((j == 1 || j == n - 2) && i > 0 && i < m - 1);
// преобразуем к нужной нам матрице
}
}
Console.WriteLine("matrix: ");
for (int i = 0; i < m; ++i)
{
for (int j = 0; j < n; ++j)
Console.Write("\t" + a[i, j]); //выведм исходный массив
Console.WriteLine();
}
Console.ReadKey();
}
}
}
Задание №10 «Операции с элементами
массивов»
Задание №27. Определить
наименьший элемент каждой четной строки
матрицы.
Таблица 4.1 Система тестов
| сгенерированная матрица | строка | минимальный элемент четной строки |
| 13
8 17
12 16 3 9 1 7 5 5 16 11 7 20 |
1
2 3 4 5 |
3 5 |
| 4 12
19
5 5 9 2 4 19 14 2 11 7 19 6 |
1
2 3 4 5 |
5 2 |
Листинг 5
namespace Labaratornay10
{
class Program
{
static void Main(string[] args)
{
int[,] a = new int[6,3]; // создаётся массив 6x3
Random rnd = new Random(); // переменная для генерации случайных чисел
for (int i = 0; i < a.GetLength(0); i++)
{
for (int j = 0; j < a.GetLength(1); j++)
{
a[i, j] = rnd.Next(1, 21); //заполнения случ. числами массива от 1 до 21
Console.Write("{0}\t", a[i, j]);// вывод массива на экран
}
Console.WriteLine();
}
Console.WriteLine("-----------
int min; // ввод переменной min
for (int i = 2; i < a.GetLength(0); i+=2)
{
min = int.MaxValue;
for (int j = 0; j < a.GetLength(1); j++)
{
if (min > a[i, j])
min = a[i, j];
}
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("stroka #{0}: min велечина - {1}", i, min);
//вывод минимального
элемента четной строки
}
Console.ReadLine();
}
}
}
Задание №11 «Работа со строками»
Задание №27. Проверить
одинаковое ли число открывающихся
и закрывающихся скобок в данной
строке.
Таблица 4.1 Система тестов
| введенные данные | кол-во открывающихся скобок | кол-во закрывающихся скобок | одинаковое ли кол-во скобок |
| Введем
строку
“комитета по внешним связям (КВС)” |
1 | 1 | Количество скобок одинаковое! |
| Введем
строку
“Утверждено директором (Баронов В.С. (бывший зам.ОВ)” |
2 | 1 | Количество скобок разное! |
Листинг №6
namespace Labaratornay11
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите строку");
int otk = 0, zak = 0; //вводим переменные otk и zak изначально они равны 0
string s; // вводим переменную последовательных знаков Юникода
s = Console.ReadLine(); //вводим строку
char[] a = s.ToCharArray(); //переводит строку в простые символы
for (int i = 0; i < a.Length; i++) // перебор заданной строки (массива)
// Length возвращает число элементов в строке
{
if (a[i] == '(')
{
otk++; // подсчет открытывающих скобок
}
}
for (int i = 0; i < a.Length; i++) // перебор заданной строки
{
if (a[i] == ')')
{
zak++; // подсчет закрывающих скобок
}
}
bool f = otk == zak;
//логический тип true или false если otk=zak то true если нет то false
if (f == true)
{
Console.Write("Количество скобок одинаковое!");
}
else if (f == false)
{
Console.Write("Количество
}
Console.ReadKey();
}
}
}