На языке Си. 1) Написать программу, реализующие алгоритмы сортировки массивов чисел по возрастанию и по убыванию. Входными параметрами для функций должно быть число элементов в массиве и указатель на сам массив.
2) Разработать программу, содержащую функцию для решения суммы членов математического ряда( на скриншоте)
var a,n,i,j,s:integer; begin writeln('Введите количество цифр в числе'); readln(n); for i:=1 to n do begin writeln('Введите ',i,' цифру из ',n); readln(a); for j:=1 to n-i do a:=a*10; s:=s+a; end; writeln('Натуральное число: ',s); end.
Тестовое решение
Введите количество цифр в числе 5 Введите 1 цифру из 5 9 Введите 2 цифру из 5 2 Введите 3 цифру из 5 7 Введите 4 цифру из 5 3 Введите 5 цифру из 5 1 Натуральное число: 92731
Решение №2 Если очень надо использовать массив (хотя на мой взгляд совсем не нужно)
//PascalABC.NET (версия 3.1, сборка 1198) var a,n,i,j,s:integer; mas:array[1..10]of integer; begin writeln('Введите количество цифр в числе'); readln(n); for i:=1 to n do begin writeln('Введите ',i,' цифру из ',n); readln(mas[i]); a:=mas[i]; for j:=1 to n-i do a:=a*10; s:=s+a; end; writeln('Натуральное число: ',s); end.
Тестовое решение
Введите количество цифр в числе 5 Введите 1 цифру из 5 5 Введите 2 цифру из 5 4 Введите 3 цифру из 5 3 Введите 4 цифру из 5 2 Введите 5 цифру из 5 2 Натуральное число: 54322
Для того, чтобы эта программа заработала надо добавить перед описанием процедуры F следующую строчку: procedure G(n: integer);forward; Так как в процедуре F есть вызов процедуры G описанной дальше по тексту программы. После исправления кода и запуска программы с F(12) получим 17 звездочек. По шагам это будет выглядеть так:
Вызов процедуры F и выполнение * n = 12 * n = 12 Вызов процедуры G и выполнение * n = 11 * n = 11 Вызов процедуры F и выполнение * n = 9 * n = 9 Вызов процедуры G и выполнение * n = 8 * n = 8 Вызов процедуры Fи выполнение * n = 6 * n = 6 Вызов процедуры G и выполнение * n = 5 * n = 5 Вызов процедуры F и выполнение * n = 3 * n = 3 Вызов процедуры G и выполнение * n = 2 * n = 2 Вызов процедуры F и выполнение * n = 0
Відповідь:
#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
void randarr(int *arr,int size){
for(int i = 0; i < size; i++){
arr[i] = rand() % 40 + 0;
}
}
void printarr(int *arr,int size){
for(int i = 0; i < size; i++){
printf("%d\t", arr[i]);
}
}
void sortminmax(int *arr,int size){
for(int i = 0; i < size - 1; ++i){
int small = i;
for (int j = i + 1; j < size; ++j){
if (arr[j] < arr[small]){
small = j;
}
}
swap(arr[i], arr[small]);
}
}
void sortmaxmin(int *arr,int size){
for(int i = 0; i < size - 1; ++i){
int big = i;
for (int j = i + 1; j < size; ++j){
if (arr[j] > arr[big]){
big = j;
}
}
swap(arr[i], arr[big]);
}
}
int main(){
srand(time(NULL));
setlocale(LC_ALL, "Rus");
int size;
printf("Введите размер массива: ");
scanf("%d" , &size);
int *arr = new int[size];
printf("Массив: ");
randarr(arr,size);
printarr(arr,size);
printf("\nСортируем массив по возрастанию от наименьшего до наибольшего...");
printf("\nРезультат: ");
sortminmax(arr,size);
printarr(arr,size);
printf("\nСортируем массив по убыванию от наибольшего до наименьшего...");
printf("\nРезультат: ");
sortmaxmin(arr,size);
printarr(arr,size);
delete[] arr;
return 0;
}