Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Написать программу, которая выводит на экран простые числа в диапазоне от 2 ⇐ ПредыдущаяСтр 3 из 3
//до 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"); }
|