Программирование на 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.