Программирование на C/C++
Рассмотрений особенностей программирования на C/C++. Знакомство с функциями Main. Этапы расчета суммы и произведения арифметических переменных. Анализ основных способов составления программы вычисления суммы. Сущность понятия "модифицированный массив".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 14.03.2013 |
Размер файла | 468,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
"Программирование на С/С++"
программирование модифицированный массив
Задание 1
Изучить теоретический материал, ответить на контрольные вопросы. Самостоятельно создать новое консольное приложение.
В функции Main() объявить 2 переменные типа string, 1 - типа int, 1 - типа double.
Ввести их значения с клавиатуры и рассчитать сумму и произведение арифметических переменных, сумму строк.
Решение
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// это предыдущее задание, я его закомментировал но на всякий случай оставил
//double myDouble;
// string myString;
// myDouble = Convert.ToDouble(Console.ReadLine());
// myString = "\" myDouble \"is";
// Console.WriteLine("{0} {1}", myString, myDouble);
string aaa;
string bbb;
int ccc;
double ddd;
int x;
int z;
Console.WriteLine("Задание: объявить 2 переменные типа string, 1 - типа int, 1 - типа double. Ввести их значения с клавиатуры и рассчитать сумму и произведение арифметических переменных, сумму строк.");
Console.WriteLine("Введите строку");
aaa = Console.ReadLine();
Console.WriteLine("Введите еще одну строку");
bbb = Console.ReadLine();
Console.WriteLine("Введите число");
ccc = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите еще одно число");
ddd = Convert.ToDouble(Console.ReadLine());
x = ccc + Convert.ToInt32(ddd);
z = ccc * Convert.ToInt32(ddd);
Console.WriteLine("сумма арифметических переменных = "+x);
Console.WriteLine("произведение арифметических переменных = " + z);
Console.WriteLine("сумма строковых переменных = " + aaa+bbb);
}
}
}
Результат работы программы
Рис.
Задание 2
1. Ввести с клавиатуры границы диапазона n и N натуральных чисел (n<N). Из чисел, входящих в этот диапазон, необходимо напечатать только те, цифры которых являются соседними в натуральном ряду. Подсчитать количество этих чисел и определить, сколько среди них четных и нечетных.
Решение
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int x1, x2, a, b, s, w, v, z, x, size, step, count, count2, count3;
Console.WriteLine("Введите границу начала ряда");
x1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите границу конца ряда");
x2 = Convert.ToInt32(Console.ReadLine());
count = 0;
count2 = 0;
int i = x1;
for ( ; i < x2 + 1; i++)
{
ewq:
// определяем разрядность числа size
size = 0;
w = i;
for (; w > 0; size++)
{
w = w / 10;
}
// оределяем степернь делителя
v = size;
step = 10;
while (v > 2)
{
v = v - 1;
step = step * 10;
}
// объявляем массив размером size
int y = 0;
int[] A1 = new int[size];
// раскладываем число на фиры в массив
for (int j = 0; j < size - 1; j++)
{
s = i;
qwe:
a = s / step;
A1[j + y] = a;
b = s % step;
if (b < 1)
{
i = i + (step/10);
goto ewq;
}
if (b < 10)
{
y++;
A1[j + y] = b;
}
else
{
j++;
s = b;
step = step / 10;
goto qwe;
}
}
// проверяем отвечает ли массив заявленным требованиям
z = 0;
x = 0;
for (int d = 0; d < size; d++)
{
v = 1;
if (d == size-1)
{
v = 0;
}
if ((A1[d] + 1) == A1[d+v])
{
z++;
}
if ((A1[d] - 1) == A1[d + v])
{
x++;
}
}
// выводим на экран и ведм посчет количества count и четности count2
if (z == size - 1)
{
count++;
for (int n = 0; n < size; n++)
{
Console.Write(A1[n]);
}
if (A1[size-1] % 2 == 0)
{
count2++;
}
Console.WriteLine();
}
if (x == size - 1)
{
count++;
for (int n = 0; n < size; n++)
{
Console.Write(A1[n]);
}
if (A1[size-1] % 2 == 0)
{
count2++;
}
Console.WriteLine();
}
}
// выводим на экран данные о количестве и четности
Console.WriteLine("Количество соседних чисел = {0}", count);
Console.WriteLine("Из них четных = {0}", count2);
count3 = count - count2;
Console.WriteLine("Из них нечетных = {0}", count3);
Console.ReadLine();
}
}
}
Результат работы программы
Рис.
Задание 3
2. Составить программу вычисления:
Действительные числа а, b и натуральное N задаюaтся пользователем программы.
Решение
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _444
{
class Program
{
static void Main(string[] args)
{
int a, b, i;
double N, h, F, s, FF, x;
Console.WriteLine("Введите (a)");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите (b)");
b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите (N)");
N = Convert.ToDouble(Console.ReadLine());
h = (b - a) / N;
FF = 0;
for (i = 1; i <= N; i++)
{
s = 1+(a-(i-0.5));
s = s * s;
F = (a + ((i - 0.5) * h)) / s;
FF = FF + F;
Console.WriteLine("F{1}= ({0})", F, i);
Console.WriteLine();
}
x=FF* h;
Console.WriteLine("(F1+F2+F3+...+FN)h = {0}", x);
Console.ReadLine();
}
}
}
Результат работы программы
Рис.
Задание 4
3. Даны действительные числа . Составить программу вычисления суммы с точностью и ее последнего слагаемого:
Решение
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _333
{
class Program
{
static void Main(string[] args)
{
double x, e, k, a, b, w, v, sw, sx, f, g, i, ii, j, s, z, sum;
Console.WriteLine("Введите X");
x = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Введите Эпсилон");
e = Convert.ToDouble(Console.ReadLine());
sum = 0;
w = -1;
k = 0;
do
{
k++;
i = 0;
sw = w;
for ( ; i < k; i++)
{
sw = sw * w;
}
v = (2 * k) + 1;
j = 0;
sx = x;
for ( ; j < v-1; j++)
{
sx = sx * x;
}
a = sw * sx;
g = k + 2;
f = g;
ii = 1;
for (; ii < g; ii++)
{
f = f * ii;
}
b = f * ((2 * k) + 1);
s = a / b;
z = s;
sum = sum+s;
Console.WriteLine("[слагаемое]-({0})", s);
// Считатаем, что требуемая точность достигнута, если очередное
// слагаемое суммы оказалось по модулю меньше чем эпсилон
z = Math.Abs(z);
}
while (z > e);
Console.WriteLine();
Console.WriteLine("[последнее слагаемое]-({0})", s);
Console.WriteLine("[Сумма]-({0})", sum);
Console.ReadLine();
}
}
}
Результат работы программы
Рис.
Задание 5
1. В одномерный массив размерности N ввести произвольные числа. Ввести число К. Если в исходном массиве чисел больше чем К, то массиве выполнить кольцевой сдвиг массива так, чтобы его первый максимальный элемент оказался на K-м месте (N и K заданы). Кольцевой сдвиг массива выполняется всеми его элементами так, что элементы «выталкиваемые» из массива в одну сторону занимают освободившиеся место с другой стороны. Если К больше или равно числу элементов в исходном массиве, то создать новый массив, добавив в начало исходного массива число К. Напечатать модифицированный массив.
Решение
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _31
{
class Program
{
static void Main(string[] args)
{
int[] A1 = new int[9] {4, 3, 8, 12, 29, 2, 31, 25, 3};
int K, a, b, c, z, f;
Console.WriteLine("Исходный массив");
for (int i = 0; i < A1.Length; i++)
{
Console.Write(A1[i]+"\t");
}
Console.WriteLine();
Console.WriteLine("Введите (К)");
K=Convert.ToInt32(Console.ReadLine());
// если К меньше количества элементов в массиве то...
if (K < A1.Length)
{
// определяем первый максимальный элемент массива
c = 1;
a = A1[0];
b = 0;
f = 0;
for (int i = 0; i < A1.Length; i++)
{
if (i == A1.Length - 1)
{ c = 0; }
b = A1[i + c];
if (a < b)
{
a = b;
f = i + c + 1;
}
}
// выполняем крольцевой сдвиг массива
do
{
z = A1[A1.Length - 1];
for (int j = A1.Length - 1; j >= 1; j--)
{
A1[j] = A1[j - 1];
}
A1[0] = z;
}
while (A1[K - 1] != a);
Console.WriteLine("Модифицированный массив");
for (int i = 0; i < A1.Length; i++)
{
Console.Write(A1[i] + "\t");
}
}
// если К больше или равно количеству элементов в массиве то...
else
{
int[] A2 = new int[10];
// добавляем элемент в начало массива
A2[0] = K;
// копируем элементы исходного массива
for (int i = 1; i < A2.Length; i++)
{
A2[i] = A1[i - 1];
}
Console.WriteLine("Модифицированный массив");
for (int i = 0; i < A2.Length; i++)
{
Console.Write(A2[i] + "\t");
}
}
Console.ReadLine();
}
}
}
Результат работы программы
Рис.
Задание 6
2. Составить программу, которая получает матрицу Х размерностью m*n и и вектор А, размером m. Каждому элементу вектора поставлена в соответствие строка с тем же номером. Программа сортирует вектор А в порядке возрастания и формирует новую матрицу, расположив строки исходной матрицы в том же порядке, что и элементы вектора после сортировки.
Решение
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _32
{
class Program
{
static void Main(string[] args)
{
int[,] matr;
matr = new int[6, 6];
int[,] matr1;
matr1 = new int[6, 6];
int[] vect;
vect = new int[6];
int[] vect1;
vect1 = new int[6];
int a, b, c, f, r, w;
r = (matr.Length / 6)-1;
// заполняем матрицу
for (int i = 0; i < matr.Length / 6; i++)
{
for (int j = 0; j < matr.Length / 6; j++)
{
matr[i, j] = i*j;
}
}
// выводим матрицу на консоль
Console.WriteLine("Исходная матрица");
for (int i = 0; i < matr.Length / 6; i++)
{
for (int j = 0; j < matr.Length / 6; j++)
{
Console.Write(matr[i, j] + "\t");
}
Console.WriteLine();
}
// вводим с клавиатуры элементы вектора
for (int i = 0; i < vect.Length; i++)
{
Console.WriteLine("Введите очередной элемент вектора");
vect[i] = Convert.ToInt32(Console.ReadLine());
}
// выводим на консоль вектор
Console.WriteLine();
Console.WriteLine("Исходный вектор");
for (int i = 0; i < vect.Length; i++)
{
Console.WriteLine(vect[i]);
}
Console.WriteLine();
// сортируем вектор по возростанию
a = 0;
f = 0;
for (int s = 0; s < vect.Length; s++)
{
c = 1;
a = vect[0];
b = 0;
f = 0;
for (int i = 0; i < vect.Length; i++)
{
if (i == vect.Length - 1)
{ c = 0; b = vect[vect.Length-1]; goto wer; }
b = vect[i + c];
if (a < b)
{
a = b;
f = i + c ;
}
}
wer:
vect[f] = 0;
vect1[s] = a;
// сопоставляем строки матрицы с элементами вектора через
// переменную f, хранящую индекс отсортированного значения вектора
for (int i = 0; i < matr1.Length / 6; i++)
{
matr1[r,i]= matr[i,f];
}
r--;
}
Array.Reverse(vect1);
// выводим на экран отсортированный по возростанию вектор
Console.WriteLine();
Console.WriteLine("Отсортированный вектор");
for (int i = 0; i < vect1.Length; i++)
{
Console.WriteLine(vect1[i]);
}
// выводим на экран полученную матрицу
Console.WriteLine("Полученная матрица");
for (int i = 0; i < matr1.Length / 6; i++)
{
for (int j = 0; j < matr1.Length / 6; j++)
{
Console.Write(matr1[i, j] + "\t");
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}
Результат работы программы
Рис.
Задание 7
Описать структуру с именем STUDENT, содержащую следующие поля:
- фамилия и инициалы;
- факультет (тип - перечисление);
- номер группы;
- успеваемость (массив из пяти элементов).
Написать программу, выполняющую следующие действия:
- заполнение данными массива, состоящего из восьми структур типа STUDENT;
- упорядочение записей по возрастанию факультета и номера группы;
- вывод записей в обратном порядке;
- вывод на дисплей фамилий и номеров групп для всех студентов, имеющих оценки 3 и 4. Если таких записей нет, то вывести соответствующее сообщение
Решение
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _4
{
enum ff: byte
{
ФВЗО=1,
РТФ,
АФ,
ФАЭМ
}
struct student
{
public string fio;
public ff fak;
public int n;
public int[] usp;
}
class Program
{
static void Main(string[] args)
{
int a;
student[] st = new student[8];
int[] oc = new int[5];
qwe:
Console.WriteLine("\aВыберите действие \n(1)Заполнение массива\n(2)Упорядочивание записей по группе \n(3)Упорядочивание записей по факультету \n(4)Вывод записей в обратном порядке \n(5)Вывести имена студентов имеющих оценки 3 и 4 \n(6)Выход ");
a = Convert.ToInt32(Console.ReadLine());
if (a == 1)
{
for (int i = 0; i < st.Length; i++)
{
Console.WriteLine("Введите Фамилию студента и инициалы");
st[i].fio = Console.ReadLine();
Console.WriteLine("Выберите факультет \n (1)ФВЗО \n (2)РТФ \n (3)АФ \n (4)ФАЭМ");
st[i].fak = (ff)Convert.ToByte(Console.ReadLine());
Console.WriteLine("Введите номер группы");
st[i].n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите успеваемость (пять оценок)");
st[i].usp = new int[5];
for (int j = 0; j < st[i].usp.Length; j++)
{
st[i].usp[j] = Convert.ToInt32(Console.ReadLine());
}
}
Print(st);
goto qwe;
}
if (a == 2)
{
Console.WriteLine();
Console.WriteLine("Упорядочивание записей по номеру группы");
Sort(ref st);
Print(st);
goto qwe;
}
if (a == 3)
{
Console.WriteLine();
Console.WriteLine("Упорядочивание записей по факультету");
SortF(ref st);
Print(st);
goto qwe;
}
if (a == 4)
{
Console.WriteLine();
Console.WriteLine("Вывод записей в обратном порядке");
Array.Reverse(st);
Print(st);
goto qwe;
}
if (a == 5)
{
Console.WriteLine();
Console.WriteLine("Студенты, имеющие 3 и 4");
Vyvod34(st);
goto qwe;
}
if (a > 5)
{
return;
}
}
static void Sort(ref student[] A)
{
student[] B = A;
for (int i=0; i<B.Length; i++)
{
for (int j=i; j<B.Length; j++)
{
if (A[j].n.CompareTo(B[i].n) < 0)
{
student h;
h=B[i];
B[i]=B[j];
B[j]=h;
}
}
}
foreach (student a in B) ;
}
static void SortF(ref student[] A)
{
student[] B = A;
for (int i = 0; i < B.Length; i++)
{
for (int j = i; j < B.Length; j++)
{
if (A[j].fak.CompareTo(B[i].fak) < 0)
{
student h;
h = B[i];
B[i] = B[j];
B[j] = h;
}
}
}
foreach (student a in B) ;
}
static void Vyvod34(student[] A)
{
int g = 0;
for (int i = 0; i < A.Length; i++)
{
int[]B = A[i].usp;
int s=0;
for (int j=0; j<B.Length; j++)
{
if (B[j] == 3) { s++; g++;}
if (B[j] == 4) { s++; g++;}
}
if (s > 0)
{
Console.WriteLine("\a{0}\t{1}", A[i].fio, A[i].n);
}
}
if (g == 0)
{
Console.WriteLine(" отсутствуют");
}
}
static void Print(student[] A)
{
Console.Write("\tФИО\t\tФакультет\tГруппа\tУспеваемость");
Console.WriteLine();
for (int i = 0; i < A.Length; i++)
{
Console.Write("{0}\t\t{1}\t\t{2}\t{3} {4} {5} {6} {7}", A[i].fio, A[i].fak, A[i].n, A[i].usp[0], A[i].usp[1], A[i].usp[2], A[i].usp[3], A[i].usp[4]);
Console.WriteLine();
}
}
}
}
Вводим данные с клавиатуры
Рис.
Рис.
Упорядочиваем по группе
Рис.
Упорядочиваем по факультету
Рис.
Выводим записи в обратном порядке
Рис.
Выводим имена и группы студентов, имеющих 3 м 4
Рис.
Задание 8
Текст состоит из предложений, разделенных точкой. Текст вводится с клавиатуры, его длина не превышает 1000 символов. Удалить из текста заданное слово. Слова разделены пробелами и знаками препинания.
Решение
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _5
{
class Program
{
static void Main(string[] args)
{
string text, word;
Console.WriteLine("Введите текст");
text = Console.ReadLine();
Console.WriteLine("Введите слово");
word = Console.ReadLine();
// инициализируме массивы с разделителями
char[] sS = new char[] { ' ' };
char[] zp = new char[] { '.', ':', ';', ',', '?', '!', '\n', '\r' };
// Инициализируем массив строк на подстроки по разделителям
string[] result = text.Split(sS);
string[] newtext = new string[result.Length];
for (int i = 0; i < result.Length; i++)
{
string[] elem = result[i].Split(zp);
// сравниваем каждый элемент массива с word и если они не равны,
// то добавляем его в новый массив
if (elem[0] != word)
{
newtext[i] = result[i];
}
}
// выводим на экран результат
for (int i = 0; i < newtext.Length; i++)
{
Console.Write("{0} ",newtext[i]);
}
Console.ReadLine();
}
}
}
Результат работы
Рис.
Задание 9
Проверить, попадает ли заданная точка (x1, y1) в прямоугольник ABCD. Прямоугольник задается с помощью левого верхнего и правого нижнего углов. Спроектировать необходимые классы и составить тестирующую процедуру.
Решение
using System;
using System.Collections.Generic;
using System.Text;
namespace _66
{
// Опишем класс tetr
class tetr
{
public int koordX;
public int koordY;
public int koordA1;
public int koordA2;
public int koordB1;
public int koordB2;
// конструктор
public tetr()
{
koordX = 0;
koordY = 0;
koordA1 = 0;
koordB1 = 0;
koordA2 = 0;
koordB2 = 0;
}
// параметризованный конструктор
public tetr(int koordX, int koordY, int koordA1, int koordA2, int koordB1, int koordB2)
{
this.koordX = koordX;
this.koordY = koordY;
this.koordA1 = koordA1;
this.koordB1 = koordB1;
this.koordA2 = koordA2;
this.koordB2 = koordB2;
}
// метод для определения положения точки
public void rez()
{
if (koordX <= koordA1 && koordY <= koordB2)
{
if (koordY >= koordB1 && koordX >= koordA2)
{
Console.WriteLine("Точка в плоскости прямоугольника");
}
else { Console.WriteLine("Точка НЕ попала в плоскость прямоугольника"); }
}
else { Console.WriteLine("Точка НЕ попала в плоскость прямоугольника"); }
}
static void Main(string[] args)
// тестирующая процедура
{
tetr s=new tetr();
Console.WriteLine("Введите координат прямоугольника ");
Console.WriteLine("Координаты левого верхнего угла");
Console.Write("X - ");
s.koordA1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Y - ");
s.koordB1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Координаты правого нижнего угла");
Console.Write("X - ");
s.koordA2 = Convert.ToInt32(Console.ReadLine());
Console.Write("Y - ");
s.koordB2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите координат точки ");
Console.Write("X - ");
s.koordX = Convert.ToInt32(Console.ReadLine());
Console.Write("Y - ");
s.koordY = Convert.ToInt32(Console.ReadLine());
s.rez();
Console.ReadKey();
}
}
}
Результат работы программы
Рис.
Рис.
Размещено на Allbest.ru
Подобные документы
Составление программы разветвляющейся структуры для вычисления заданной функции. Нахождение произведения чётных и нечётных первых чисел натурального ряда. Приёмы программирования обработки одномерных массивов. Расчет суммы положительных элементов массива.
контрольная работа [1,3 M], добавлен 20.12.2012Описание и сравнение основных современных языков и сред программирования. Анализ назначения и применения одномерных и многомерных массивов. Исследование особенностей выполнения арифметических операций в программах и использования условного оператора.
курсовая работа [969,5 K], добавлен 21.04.2016Программирование как процесс составления и подготовки деятельности программы, которое при выполнении должно привести к определенным результатам. Знакомство с регистрами общего значения. Рассмотрение основных способов передачи параметров через стек.
отчет по практике [2,9 M], добавлен 01.12.2015Перевод числа из десятичной системы счисления в двоичную. Результат выполнения в TURBO PASKAL заданных функций и операций. Программа вычисления значений функции на языке PASKAL, блок-схема. Вычисление суммы и произведения всех элементов массива.
контрольная работа [66,6 K], добавлен 15.02.2013Исходный текст программы и ее экранная форма. Программа вычисления и выдачи на печать суммы/произведения элементов бесконечного числового ряда, вычисления числового ряда для известного числа членов ряда. Значение максимального элемента в матрице.
контрольная работа [29,0 K], добавлен 07.12.2010Представление полиномов в виде кольцевых списков и выполнение базовых арифметических действий над ними. Реализация алгоритмов сложения, умножения и вычитания полиномов класса List на языке программирования Python 2.7. в интегрированной среде Python IDLE.
курсовая работа [228,1 K], добавлен 11.01.2012Табличный метод вычисления контрольной суммы. Реализация на практике вычисления циклического контрольного кода параллельным и последовательным методами. Аппаратная реализация вычисления CRC в параллельном и последовательном коде, математическое описание.
курсовая работа [573,7 K], добавлен 09.08.2015Исследование арифметических выражений и разработка простых программ. Таблица переменных для алгоритма и программы. Алгоритм решения, текст программы на языке С. Разработка программы вычисления значений выражений, сравнение результатов с ручным подсчетом.
лабораторная работа [282,7 K], добавлен 30.01.2015Особенности синтаксиса языка программирования С++. Создание панели меню, для получения информации о программе, сохранения результата и выхода из программы. Работа с файлами, двумерными и одномерными динамическими массивами, функциями, строками и циклами.
курсовая работа [782,3 K], добавлен 06.02.2016Разработка различных программ для вычисления X и Y по формуле, для вычисления интеграла, для вычисления таблицы значений функции и для вычисления элементов вектора. Составление блок-схемы программы. Ввод значений, описание переменных и условия расчета.
контрольная работа [148,1 K], добавлен 08.11.2013