Помогите,пожалуйста,написать 2 программки с пояснениями,что и как...в программировании я полнейший ноль,а заданий понадавали выше крыши...и сказали "делайте как хотите"...не сплю уже 3 дня из-за них...
1.Дано натуральное число. Если первая цифра числа - 6,8 или 9,то найти ближайшее к этому числу простое число, в противном случае перевести число в 5-ричную систему счисления.
2.Дана последовательность вещественных чисел {aj}j=1...n (n<=40).Упорядочить элементы последовательности до первого числа, целая
часть которого есть квадрат целого числа, (включительно) по не убыванию, а остальные элементы - по не возрастанию дробной части.
1.Дано натуральное число. Если первая цифра числа - 6,8 или 9,то найти ближайшее к этому числу простое число, в противном случае перевести число в 5-ричную систему счисления.
1. Считіваем число
2. Сохраняем поразрядно число в массив.
3. Обходим массив с "оторванніми" числами на проверку 6, 8, 9
4. Если условие истина - находим простое число(тут уточнение, ближайшее до или после введённого?) В решении выводится оба варианта, оставьте нужный.
5. Иначе переводим в 5-ричную систему. (Я щас не вспомню как это делается, там надо отрывать разряды, остатки потом складывать, умножать, возводить в степень с основанием 5). Попробуйте самостоятельно эту часть решить.
P.S. Решение не претендует на изысканность и профессионализм, но поставленную задачу выполняет.
C++:
// Дано натуральное число. Если первая цифра числа - 6, 8 или 9,
// то найти ближайшее к этому числу простое число,
// в противном случае перевести число в 5-ричную систему счисления...
#include < iostream >
using std::cout;
using std::cin;
using std::endl;
#include < math.h >
// Функция расчитывающая количество чисел во введённом числе...
int Rasriad(int enterNumber) {
int n = enterNumber, x = 0;
while (n != 0) {
n /= 10;
x++;
}
return x;
}
//Функция нахождения простого числа
int PlainNumber(int num) {
int a, count = 1, res;
res = sqrt(num);
for (a = 1; a <= res; a++) {
if (num % a == 0 && count <= 2)
count++;
}
if (count <= 2)
return num;
else
return -1;
}
// Главная функция main
int main() {
int enterNumber,
lenght = 0,
resultat,
z;
cout << "Enter Number: ";
cin >> enterNumber;
// определяет количество цифр в нем и их сумму.
lenght = Rasriad(enterNumber);
int * array = new int[lenght];
// cout << "In Number:" << enterNumber << " Kol-vo chisel = " << lenght << endl << endl; // Вот эту строку
int decimal = 1;
for (int j = 1; j < lenght; j++)
decimal *= 10;
// Сохраняем поразрядно в массив
// Хотя по существу это лишнее, достаточно одной операции
// По выявлению самого высшего разряда на 6, 8, 9
for (int j = 0; j < lenght; j++) {
array[j] = enterNumber / decimal % 10;
decimal /= 10;
}
// Если 1 разряд равен 6, 8, 9 - найти ближайшее к нему простое
if (array[0] == 6 || array[0] == 8 || array[0] == 9) {
for (int i = enterNumber; i > 1; i--) {
resultat = PlainNumber(i);
if (resultat != -1) {
cout << " PROSTOE: " << resultat << endl;
break;
}
}
for (int i = enterNumber; i < INT_MAX; i++) {
resultat = PlainNumber(i);
if (resultat != -1) {
cout << " PROSTOE: " << resultat << endl;
break;
}
}
}
// Иначе переводим число в пятиричную систему счисления.
else {
cout << " Perevod v 5-richnuyu sistemu" << endl;
}
cin >> z;
return 0;
}
//---------------------------------------------------------------------------
2.Дана последовательность вещественных чисел {aj}j=1...n (n<=40).Упорядочить элементы последовательности до первого числа, целая
часть которого есть квадрат целого числа, (включительно) по не убыванию, а остальные элементы - по не возрастанию дробной части.
Мне было бы проще перевести число в строковую переменную и посмотреть первую "букву"
(извините что на Бейсике)
Код:
if left$(CStr(N), 1) Like [6, 8, 9] Then
или так:
Код:
Х=left$(CStr(N), 1)
if X="6" Or X="8" Or X="9" Then
Но работа со строковыми переменными у программы займет больше времени
Про простые числа есть совет:
Если будете искать простое число по принципу перебора последовательности чисел, проверяя их на то, делятся ли они на что то кроме себя и единици, то берите только нечетные числа и проверяйте, делятся ли они на (нечетные, или простые) числа начиная с 3, заканчивая корнем квадратным с числа. То есть, чтобы узнать, является ли число 1000001 простым - достаточно проверить делимость на числа до 1000 (что в тысячу раз меньше, чем миллион) Но ,если позволяют ресурсы, то можно, чтобы таблица простых чисел была у программы уже готовая (в отдельном файле)