М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
DmdmdmA
DmdmdmA
30.09.2021 17:31 •  Информатика

На языке Си. 1) Написать программу, реализующие алгоритмы сортировки массивов чисел по возрастанию и по убыванию. Входными параметрами для функций должно быть число элементов в массиве и указатель на сам массив.

2) Разработать программу, содержащую функцию для решения суммы членов математического ряда( на скриншоте)


На языке Си. 1) Написать программу, реализующие алгоритмы сортировки массивов чисел по возрастанию и

👇
Ответ:
Ckorpid
Ckorpid
30.09.2021

Відповідь:

#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;

}

4,8(68 оценок)
Открыть все ответы
Ответ:
almiradkzbd
almiradkzbd
30.09.2021
Решение №1 (без массивов)

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
4,7(95 оценок)
Ответ:
aimuratsergei1234
aimuratsergei1234
30.09.2021
Для того, чтобы эта программа заработала надо добавить перед описанием процедуры 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

Ниже записаны две рекурсивные функции (процедуры): f и g.сколько символов «звёздочка» будет напечата
4,5(46 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ