Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Написать программу, которая выводит на экран простые числа в диапазоне от 2






//до 1000 (число считается простым, если делится только на себя и на 1).

#include < iostream>

using namespace std;

void main()

{

setlocale(LC_ALL, " rus");

cout < < " Простые числа в диапозоне от 2 до 1000 \n";

int count = 0;

for (int j = 2; j < 1000; j++){

int chislo = j;

bool prostoe = true;

for (int k = 2; k < chislo; k++) {

if (chislo % k == 0){

prostoe = false;

break;

}

}

if (prostoe) {

cout < < chislo < < " ";

count++;

if (count == 10) {

cout < < " \n";

count = 0;

}

}

}

system(" pause");

}

 

#include < iostream>

using namespace std;

void main()

{

setlocale(LC_ALL, " rus");

cout < < " Введите начало и конец диапазона, шаг табуляции: ";

double start;

double end;

double shag;

cin > > start > > end > > shag;

double x = start;

while (x < end + 1e-10)

{

double y;

if (x < = -4)

y = 2;

else if (x > -4 & & x < = 2)

y = -0.5 * x;

else if (x > 2)

y = x - 3;

cout < < " x=" < < x < < " y=" < < y < < " \n";

x += shag;

}

system(" pause");

}

//?????????? while (x < end + 1e-10)

//Необходимо вывести все целые числа, на которые оба введенных числа делятся без остатка.

#include < iostream>

using namespace std;

void main()

{

setlocale(LC_ALL, " rus");

int chislo1;

int chislo2;

cout < < " Введите два числа ";

cin > > chislo1 > > chislo2;

int min;

if (chislo1 > chislo2)

min = chislo2;

else

min = chislo1;

for (int i = 1; i < = min; i++){

if (chislo1 % i == 0 & & chislo2 % i == 0)

cout < < " Делится на " < < i < < " нацело \n ";

}

system(" pause");

}

//Найти максимум из n чисел, которые последовательно вводятся с клавиатуры.

// Программа сначала запрашивает количество чисел(n), а потом сами числа.

#include < iostream>

using namespace std;

void main()

{

setlocale(LC_ALL, " rus");

int k;

int chislo;

int max = 0;

cout < < " Введите количество чисел: ";

cin > > k;

cout < < " Введите числа: ";

 

for (int i = 0; i < k; i++)

{

cin > > chislo;

if (chislo > max)

max = chislo;

}

cout < < " Максимальное число: " < < max < < " \n";

system(" pause");

}

// Задание 1. В функцию приходит целое беззнаковое число (unsigned int).

// Вам необходимо определить минимальную цифру в этом числе и вернуть её из функции.

 

// chislo - исходное число

// функция должна вернуть минимальную цифру, которая есть в этом числе

int Zadanie1(int chislo)

{

int tmp, min=9;

 

if (chislo! = 0)

{

for (; chislo; chislo /= 10)

{

tmp = chislo % 10;

 

if (tmp < min)

min = tmp;

}

}

else

min = 0;

return min;

 

 

задание 2.

// рассчитать сумму элементов, расположенных на главной и второстепенной диагонали.

// mas - указатель на динамический двумерный квадратный массив

// n - и количество строк и количество столбцов

// функция возвращает сумму элементов расположенных на главной и второстепенной диагонали

int Zadanie2(int ** mas, int n)

{

int sum = 0;

 

for (int i = 0, j = 0; i < n; i++, j++)

{

sum += mas[i][j];

}

 

for (int i = 0, j = n-1; i < n; i++, j--)

{

sum += mas[i][j];

}

 

return (n % 2 == 0)? (sum): (sum - mas[n/2][n/2]);

}

#include " VseZadaniya.h"

 

//--------------------------------------------------------------------------------------------------

// Задание 3.

//В функцию поступает строка, состоящая из любого количества слов.

// Все слова разделены пробелами, причём этих пробелов может быть больше чем один.

// Ваша задача: реализовать функцию, которая удаляет все лишние пробелы.

// Лишними пробелами считаются:

// Все пробелы в начале строки

// Все пробелы в конце строки

// Все пробелы, кроме одного между словами.

// Функция ничего не возвращает, это означает, что изменение должны произойти в той же самой памяти,

// в которой у нас находится строка.

// str - исходная строка и в ней же должен измениться текст

void Zadanie3(char * str)

{

int i;

for (i = 0; *(str + i)! = '\0'; i++)

{

if (*(str + i) == ' ' & & *(str + i + 1) == ' '){

for (int j = i; *(str + j)! = '\0'; j++) {

*(str + j) = *(str + j + 1);

}

i--;

}

}

 

if (str[0] == ' ') {

for (int i = 0; *(str + i)! = '\0'; i++){

*(str + i) = *(str + i + 1);

}

}

if (str[i - 2] == ' ') str[i - 2] = '\0';

 

}

задание 4.

// Отсортировать столбцы по возрастанию, на основе самого маленького элемента в столбце

// mas - указатель на двумерный массив

// n - количество строк

// m - количество столбцов

// функция возвращает указатель на изменённый массив

int ** Zadanie4(int ** mas, int & n, int & m)

{

int j = -1;

for (int k = 0; k < m; k++, j = -1){

while (++j < m - 1){

int Lmin = mas[0][j], Rmin = mas[0][j + 1];

for (int i = 1; i < n; i++) {

if (mas[i][j] < Lmin)

Lmin = mas[i][j];

 

if (mas[i][j + 1] < Rmin)

Rmin = mas[i][j + 1];

}

if (Lmin > Rmin) {

for (int i = 0; i < n; i++) {

int tmp = mas[i][j];

mas[i][j] = mas[i][j + 1];

mas[i][j + 1] = tmp;

}

}

}

}

return mas; //!!! в вашем коде бы должны вернуть указатель на ваш полученный массив с отсортированными элементами

}

Задание 5. Добавить ученика. Подробности читать в задании (.pdf)

// mas - указатель на массив людей

// n - количество элементов массива

// p - указатель на человека, которого нужно добавить в массив

void Zadanie5(People*** mas, int & n, People * p)

{

People **mas2 = new People*[n + 1];

bool flag = 1;

 

for (int i = 0, j = 0; i < n;)

{

if (flag & & (*mas)[i]-> Name[0] > p-> Name[0]){

mas2[j] = p;

++j; flag = 0;

}

else if (flag & & (*mas)[i]-> Name[0] == p-> Name[0]){

for (int i1 = 1, i2 = 1;;) {

if ((*mas)[i]-> Name[i1]! = p-> Name[i2]) {

if ((*mas)[i]-> Name[i1] > p-> Name[i2]) {

mas2[j] = p; ++j; flag = 0; break;

}

else{

mas2[j] = (*mas)[i]; ++i; ++j; break;

}

}

else {

i1++; i2++;

}

}

}

else{

mas2[j] = (*mas)[i]; ++i; ++j;

}

}

n++;

if (flag) mas2[n - 1] = p;

 

delete[](*mas);

(*mas) = mas2;

 

/*People ** mas2 = new People*[n+1];

 

for (int i = 0; i < n; ++i) {

mas2[i] = (*mas)[i];

}

 

mas2[n++] = p;

 

delete[] (*mas);

(*mas) = mas2;

 

for(int k=0; k < n; ++k)

{

for(int i=0; i < n-1; ++i){

if((*mas)[i]-> Name[0] > (*mas)[i+1]-> Name[0]) {

People *tmp = (*mas)[i];

(*mas)[i] = (*mas)[i+1];

(*mas)[i+1] = tmp;

}

}

}

 

People ***mas2 = new People**[n + 1];

 

for (int i = 0; i < n; ++i)

{

(mas2)[i] = (mas)[i];

}

 

(*mas2)[n] = p;

++n;

 

mas = mas2; */

 

}

 

Создать треугольный динамический массив, в котором количество столбцов увеличивается

на 1 от 1 до m (где m – количество строк). Заполнить массив случайными числами и вывести

на экран. Пример:

m=4:

34 17

67 3 8

11 89 26 1

 

#include< iostream>

#include < time.h>

using namespace std;

void main()

{

setlocale(LC_ALL, " rus");

srand(time(0));

int m, koll = 0, *ptrInt;

cout < < " Введите размер масива: ";

cin > > m;

for (int i = 1; i < = m; i++)

{

koll += i;

}

ptrInt = (int*) malloc(koll * sizeof(int));

int *tempPtr;

tempPtr = ptrInt;

for (int i = 1; i < = koll; i++, tempPtr++)

{

*tempPtr = rand() % 21 + 10;

}

cout < < " Полученый массив: \n";

tempPtr = ptrInt;

for (int i = 1; i < m + 1; i++)

{

for (int j = 1; j < i + 1; j++, tempPtr++)

{

cout < < *tempPtr < < " \t";

}

cout < < " \n";

}

cout < < endl;

free(ptrInt);

 

system(" pause");

}

Написать программу, которая проверяет, является ли введенная с клавиатуры квадратная

матрица " магическим" квадратом. " Магическим" квадратом называется матрица, у которой

сумма чисел в каждом горизонтальном ряду, в каждом вертикальном и по каждой из

диагоналей одна и та же (см. приведенный ниже рисунок). Размер матрицы вводит

пользователь.

2 9 4

7 5 3

6 1 8

#include< iostream>

using namespace std;

 

void proverka(int sum, int istina)

{

if (sum! = istina)

{

cout < < " не магический квадрат";

system(" pause");

exit(0);

}

}

 

int calcSum(int* nachalo, int shag, int m)

{

int sum = 0;

int* tempPtr = nachalo;

for (int j = 0; j < m; j++, tempPtr = tempPtr + shag)

{

sum += *tempPtr;

}

return sum;

}

void main()

{

setlocale(LC_ALL, " rus");

int m;

int *ptrInt;

cout < < " Введите размер магического квадрата: ";

cin > > m;

int kvadrat = m * m;

ptrInt = (int*) malloc(kvadrat * sizeof(int));

int *tempPtr;

tempPtr = ptrInt;

cout < < " Введите строки матрицы \n";

for (int i = 1; i < = m; i++)

{

for (int j = 1; j < = m; j++, tempPtr++)

{

cin > > *tempPtr;

}

}

 

int sumStroka = calcSum(ptrInt, 1, m);

int sumMagKvad = sumStroka;

 

tempPtr = ptrInt;

 

for (int i = 0; i < m; i++)

{

int sumStolb = calcSum(ptrInt + i, m, m);

proverka(sumStolb, sumMagKvad);

}

 

int sumDiag1 = calcSum(ptrInt, m + 1, m);

proverka(sumDiag1, sumMagKvad);

 

int sumDiag2 = calcSum(ptrInt + m - 1, m - 1, m);

proverka(sumDiag2, sumMagKvad);

 

cout < < " \n Полученый массив: \n";

tempPtr = ptrInt;

for (int i = 0; i < m; i++)

{

for (int j = 0; j < m; j++, tempPtr++)

{

cout < < *tempPtr < < " \t";

}

cout < < " \n";

}

 

cout < < endl;

free(ptrInt);

 

system(" pause");

}

// второй вариант без ф-ций

#include< iostream>

using namespace std;

 

void proverka(int sum, int istina)

{

if (sum! = istina)

{

cout < < " не магический квадрат";

system(" pause");

exit(0);

}

}

 

int calcSum(int* nachalo, int shag)

{

 

}

void main()

{

setlocale(LC_ALL, " rus");

int m;

int *ptrInt;

cout < < " Введите размер магического квадрата: ";

cin > > m;

int kvadrat = m * m;

ptrInt = (int*)malloc(kvadrat * sizeof(int));

int *tempPtr;

tempPtr = ptrInt;

cout < < " Введите строки матрицы \n";

for (int i = 1; i < = m; i++)

{

for (int j = 1; j < = m; j++, tempPtr++)

{

cin > > *tempPtr;

}

}

tempPtr = ptrInt;

int sumStroka = 0;

for (int j = 0; j < m; j++, tempPtr++)

{

sumStroka += *tempPtr;

}

int sumMagKvad = sumStroka;

 

tempPtr = ptrInt;

 

for (int i = 0; i < m; i++)

{

tempPtr = ptrInt + i;

int sumStolb = 0;

for (int j = 0; j < m; j++, tempPtr = tempPtr + m)

{

sumStolb += *tempPtr;

}

proverka(sumStolb, sumMagKvad);

}

 

int sumDiag1 = 0;

tempPtr = ptrInt;

for (int j = 0; j < m; j++, tempPtr = tempPtr + m + 1)

{

sumDiag1 += *tempPtr;

}

proverka(sumDiag1, sumMagKvad);

 

int sumDiag2 = 0;

tempPtr = ptrInt + m - 1;

for (int j = 0; j < m; j++, tempPtr = tempPtr + m - 1)

{

sumDiag2 += *tempPtr;

}

proverka(sumDiag2, sumMagKvad);

 

cout < < " \n Полученый массив: \n";

tempPtr = ptrInt;

for (int i = 0; i < m; i++)

{

for (int j = 0; j < m; j++, tempPtr++)

{

cout < < *tempPtr < < " \t";

}

cout < < " \n";

}

 

cout < < endl;

free(ptrInt);

 

system(" pause");

}

 

 

Предположим что, характеристикой строки целочисленной квадратной матрицы является

сумма ее положительных элементов. Переставляя указатели на строки заданной матрицы,

расположить их в соответствии с ростом характеристик.

Размерность матрицы вводится пользователем, а значения являются случайными

числами в диапазоне (-50: 50).

#include < iostream>

#include < time.h>

using namespace std;

 

int sumPolElem(int M, int mas[])

{

int sum = 0;

for (int i = 0; i < M; i++)

{

if (mas[i] > 0)

sum = sum + mas[i];

}

return sum;

}

 

 

void main()

{

setlocale(LC_ALL, " rus");

int mas;

cout < < " Введите размер массива ";

cin > > mas;

int **pArr = new int *[mas];

for (int i = 0; i < mas; i++)

{

pArr[i] = new int[mas];

}

for (int i = 0; i < mas; i++)

{

for (int j = 0; j < mas; j++)

{

pArr[i][j] = rand() % 101 - 50;

}

}

 

int k = mas - 1;

int posl;

while (k > 0)

{

posl = -1;

for (int i = 0; i < k; i++)

if (sumPolElem(mas, pArr[i]) > sumPolElem(mas, pArr[i + 1]))

{

int* tmp = pArr[i];

pArr[i] = pArr[i + 1];

pArr[i + 1] = tmp;

posl = i;

}

k = posl;

}

cout < < " Полученый массив: \n";

for (int i = 0; i < mas; i++)

{

for (int j = 0; j < mas; j++)

{

cout < < pArr[i][j] < < " \t";

}

cout < < " \n";

}

 

for (int i = 0; i < mas; i++)

{

delete[] pArr[i];

}

delete[] pArr;

system(" pause");

}

Написать функцию, которая увеличивает размер двумерной матрицы, добавляя в нее

строку. Проиллюстрировать работу этой функции:

1) Заполнить динамический двумерный массив случайными числами (размерность

матрицы запросить у пользователя).

2) Запросить номер строки, которая будет вставлена.

3) Вставить строку с помощью созданной функции

4) Заполнить эту строку нулями.

5) Распечатать преобразованную матрицу.

#include < iostream>

#include < time.h>

using namespace std;

int** dopStrok(int strok, int stolb, int newStrok, int** pArr)

{

int strok2 = strok + 1;

int** mas = new int *[strok2];

for (int i = 0; i < newStrok; i++)

{

mas[i] = pArr[i];

}

for (int i = newStrok; i < strok; i++)

{

mas[i+1] = pArr[i];

}

 

mas[newStrok] = new int[stolb];

return mas;

}

 

void main()

{

setlocale(LC_ALL, " rus");

int strok;

cout < < " Введите количество строк ";

cin > > strok;

int stolb;

cout < < " Введите количество столбцов ";

cin > > stolb;

int** pArr = new int *[strok];

for (int i = 0; i < strok; i++)

{

pArr[i] = new int[stolb];

}

for (int i = 0; i < strok; i++)

{

for (int j = 0; j < stolb; j++)

{

pArr[i][j] = rand() % 21 - 10;

}

}

cout < < " ВВедите номер строки ";

int newStrok;

cin > > newStrok;

pArr = dopStrok(strok, stolb, newStrok, pArr);

 

for (int i = 0; i < strok; i++)

{

for (int j = 0; j < stolb; j++)

{

pArr[newStrok][j] = 0;

}

}

for (int i = 0; i < strok + 1; i++)

{

for (int j = 0; j < stolb; j++)

{

cout < < pArr[i][j] < < " ";

}

cout < < " \n";

}

 

for (int i = 0; i < strok; i++)

{

delete[] pArr[i];

}

delete[] pArr;

system(" pause");

}

// Сформировать массив из 10 элементов, заполнить случайными числами от -3 до 3.

// Посчитайте количество нулевых элементов в массиве.Найти сумму элементов,

// расположених между первым и последним элементом

//

// заполнить массив случайными числами; =

// вывод массива на консоль; =

// Подcчет количества нулевых элементов; =

// Определение местоположения первого и последнего нуля;

// Сумма элементом между первым и последним нулями;

// Сортировка произвольным методом;

// Использование функцией;

 

 

#include < iostream>

#include < time.h>

using namespace std;

void main()

{

setlocale(LC_ALL, " rus");

const int SIZE = 10;

int mas[SIZE];

srand(time(0));

for (int i = 0; i < SIZE; i++)

{

mas[i] = rand() % 7 - 3;

}

cout < < " Исходный массив \n";

for (int i = 0; i < SIZE; i++)

{

cout < < mas[i] < < " \t";

}

 

int koll = 0;

for (int i = 0; i < SIZE; i++)

{

if (mas[i] == 0)

koll++;

}

 

cout < < " Количество нулевых элементов = " < < koll < < " \n";

 

int firstNull;

int lastNull;

for (int i = 0; i < SIZE; i++)

{

if (mas[i] == 0)

{

firstNull = i; break;

}

}

 

for (int i = SIZE - 1; i > = 0; i++)

{

if (mas[i] == 0)

{

lastNull = i; break;

}

}

int sum = 0;

for (int i = firstNull + 1; i < lastNull; i++)

{

sum = sum + mas[i];

}

cout < < " Сумма элементом между первым и последним нулями \n" < < sum; // что-то не так

int tmp;

for (int k = SIZE - 1; k > 0; k--)

{

for (int i = 0; i < k; i++)

{

if (mas[i] > mas[i + 1])

{

tmp = mas[i];

mas[i] = mas[i + 1];

mas[i + 1] = tmp;

 

}

}

}

cout < < " Исходный массив \n";

for (int i = 0; i < SIZE; i++)

{

cout < < mas[i] < < " \t";

}

 

system(" pause");

}






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.