Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 19.02.2020
Сообщений: 14

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

24.02.2020, 12:12. Показов 3327. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста решить.

Дан одномерный массив размера N, заполненный двузначными числами. Написать функцию, которая в каждом значении массива меняет первую и вторую цифры местами. Массивы должен быть статическим и вводиться с клавиатуры.
Заранее благодарна!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.02.2020, 12:12
Ответы с готовыми решениями:

Clojure Написать программу, которая в каждом слове предложения меняет местами первую и последнюю букву
Написать программу, которая в каждом слове предложения меняет местами первую и последнюю букву. Не имею малейшего представления как ее...

Программа, которая меняет местами первую и последнюю цифры числа
Программа которая меняет местами первую и последнюю цифры числа

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

12
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
24.02.2020, 18:33
Лучший ответ Сообщение было отмечено Alfiia как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;        //Использовать пространство имён std::
    
int main()
 {
     setlocale(LC_ALL, "Rus");  //Устанавливаем русский шрифт
//Объявляем переменную для хранения размера массива
//Т.к. длина не может быть отрицательной или дробной
//выбираем целый беззнаковый тип
  unsigned int N = 0;
//Выводим приглашение
     cout << "Введите размер массива = ";
//Вводим по заданию размер массива, равный N
     cin >> N;
//Т.к. по условию числа двузначные и, подозреваю, целые
//создаём массив из N элементов целого беззнакового типа
   unsigned int m;              //Объявляем перемнную для заполнения массива
     int *dai = new int[N];     // динамическое выделение памяти для массива на введённое количество элементов
    *dai = N;                   //Инициализируем массив на "N" целых чисел
    for (unsigned int i = 0; i <N; i++)
    {
        cout << "Введите число" << endl;
        cin >> m;               //Вводим числа в массив
        dai[i] = m;
    }
        cout << endl;
        for (unsigned int i = 0; i <N; i++)
    {
        cout << dai[i] << endl; //Выводим массив
        }
        cout << endl;           //Переводим строку для читаемости
//Меняем цифры элементов массива местами
....................................................
//Выводим полученный массив
system ("pause");
    return 0;
 }
В приведённом коде не писал проверку вводимых чисел на двузначность.
Сможете самостоятельно сменить местами цифры чисел массива?

Добавлено через 1 час 3 минуты
Довёл почти до ума.
Я вывожу массив дважды: после его создания и после преобразования. В условии о выводе результатов не сказано. Надо уточнить. Если вывод массива всё-таки нужен, его можно организовать в виде отдельной функции для экономии строк кода.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
using namespace std;        //Использовать пространство имён std::
 
//Функция, меняющая цифры элементов массива местами
//Функция не возвращает параметров поэтому return не обязателен
//Функция принимает указатель на массив и его длину
void change (unsigned int * massiv, unsigned int lenght)
{
    //Меняем цифры элементов массива местами
    //Объявляем промежуточные переменные и инициализируем их
        //т.е. присваиваем им значения. В данном случае - ноли
    unsigned int a = 0, b = 0;
//Цикл смены цифр
        for (unsigned int i = 0; i <lenght; i++)
    {
        b = massiv[i] % 10; //b = младшая цифра
        a = massiv[i] / 10; //a = старшая цифра
        massiv[i] = b * 10 + a; //меняем их местами и записываем в массив
        }
//Выводим изменённый массив в цикле
        for (unsigned int i = 0; i <lenght; i++)
    {
        cout << massiv[i] << endl;  
        }
        cout << endl;           //Переводим строку для читаемости
}
int main()
 {
     setlocale(LC_ALL, "Rus");  //Устанавливаем русский шрифт
//Объявляем переменную для хранения размера массива
//Т.к. длина не может быть отрицательной или дробной
//выбираем целый беззнаковый тип
  unsigned int N = 0;
//Выводим приглашение
     cout << "Введите размер массива = ";
//Вводим по заданию размер массива, равный N
     cin >> N;
//Т.к. по условию числа двузначные и, подозреваю, целые
//создаём массив из N элементов целого беззнакового типа
   unsigned int m;              //Объявляем перемнную для заполнения массива
     unsigned int *dai = new unsigned int[N];       // динамическое выделение памяти для массива на введённое количество элементов
    *dai = N;                   //Инициализируем массив на "N" целых чисел
//Цикл ввода чисел в массив
    for (unsigned int i = 0; i <N; i++)
    {
  rep:                          //Метка
        cout << "Введите число - ";
        cin >> m;               //Вводим число в массив
         if (m > 99 || m <10)   //Если введённое число больше 99 и меньше 10
         {
             cout << "Число не двухзначное!" << endl;
             goto rep;          //повторяем ввод
         }
        dai[i] = m;
    }
        cout << endl;
//Выводим массив в цикле
        for (unsigned int i = 0; i <N; i++)
    {
        cout << dai[i] << endl; 
        }
        cout << endl;           //Переводим строку для читаемости
    change (dai, N);        //Вызываем функцию смены цифр местами
system ("pause");
    return 0;
 }
1
1 / 1 / 0
Регистрация: 19.02.2020
Сообщений: 14
24.02.2020, 18:47  [ТС]
Спасибо большое за помощь! Смогу самостоятельно сменить местами цифры чисел массива? Скорее нет, чем да, т.к только начинаю осваивать данную тему. Но буду пробовать!
0
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
24.02.2020, 18:53
Цитата Сообщение от Alfiia Посмотреть сообщение
Но буду пробовать!
Я уже всё сделал, включая проверку на двузначность вводимого числа. Запустите и посмотрите.
Если массив небольшой, то можно организовать его вывод в строку. Сейчас выводится в столбец.
Как запустить знаете?
1
1 / 1 / 0
Регистрация: 19.02.2020
Сообщений: 14
24.02.2020, 18:58  [ТС]
Огромное спасибо! Все работает!
0
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
24.02.2020, 19:05
Alfiia, вывод введённого массива нужен? Вас устраивает вывод в столбик или изменить на строку?
Обратите внимание. Функция принимает параметры:
C++
1
void change (unsigned int * massiv, unsigned int lenght)
А вызывается:
C++
1
change (dai, N);
Параметры отличаются.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.02.2020, 19:16
Цитата Сообщение от Alfiia Посмотреть сообщение
Все работает
1) читаем условие:
Цитата Сообщение от Alfiia Посмотреть сообщение
Массивы должен быть статическим
2) что это за обмен цифр местами ?
20
2
3) goto применять не стоит
4) проверки не нужны - логичнее заполнить массив случайными двузначными числами
5) рекомендую Вам самостоятельно написать код
0
1 / 1 / 0
Регистрация: 19.02.2020
Сообщений: 14
24.02.2020, 19:21  [ТС]
Вывод введенного массива не требуется (дважды)! Программа чем проще тем лучше, а так я даже запуталась немного

Добавлено через 4 минуты
Согласна с вами! Но есть от чего отталкиваться уже не плохо!
0
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
24.02.2020, 20:48
С учётом рекомендаций Yetty:
двузначные числа помещаются в формат char: - 128 - +126;
можно учесть перестановку цифр с учётом "0";
В интернете много тем про заполнение массива случайными числами с использованием
C++
1
2
3
srand (time(NULL));
и 
rand()
Цитата Сообщение от Alfiia Посмотреть сообщение
Вывод введенного массива не требуется (дважды)!
Потребуется при заполнении массива случайными числами чтобы видеть его содержимое.
Я сам пока учусь. Поколдую. Если не получится, пишите, будем вместе разбираться.

Добавлено через 11 минут
Статический массив должен объявляться явно и потом его размер не должен изменяться.
Т.е. значение N надо определить до написания кода.

Добавлено через 44 минуты
Я уже всё придумал
С типом char много возни. Сделал как и раньше unsigned int
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <cstdlib>          //Для функции rand()
#include <time.h>
#include <iostream>
using namespace std;        //Использовать пространство имён std::
 
//Функция, меняющая цифры элементов массива местами
//Функция не возвращает параметров поэтому return не обязателен
//Функция принимает указатель на массив и его длину
void change (unsigned int * massiv, unsigned int lenght)
{
    //Меняем цифры элементов массива местами
    //Объявляем промежуточные переменные и инициализируем их
        //т.е. присваиваем им значения. В данном случае - ноли
    unsigned int a = 0, b = 0;
//Цикл смены цифр
        for (unsigned int i = 0; i <lenght; i++)
    {
        b = massiv[i] % 10; //b = младшая цифра
        a = massiv[i] / 10; //a = старшая цифра
        massiv[i] = b * 10 + a; //меняем их местами и записываем в массив
        }
}
 
 
void tape(unsigned int *mas, unsigned int N)
{
    //Выводим массив в цикле
        for (unsigned int i = 0; i <N; i++)
    {
    if (mas[i] < 10)
        cout << '0' << mas[i] << " ";
    else
        cout << mas[i] << " ";  
        }
 
        cout << endl;           //Переводим строку для читаемости
}
int main()
 {
     setlocale(LC_ALL, "Rus");  //Устанавливаем русский шрифт
//Объявляем переменную для хранения размера массива
//Т.к. длина не может быть отрицательной или дробной
//выбираем константу целого беззнакового типа
    const unsigned int N = 10;
//Объявляем статический массив на 10 элементов типа unsigned int
    unsigned int mas[N];
    unsigned int *ptr = mas;    //Указатель на массив
    srand (time(NULL));
    int num;
    for(int i = 0; i < 10; i++)
{
   num = rand() % 80 + 9; // случайные числа от 9 до 80. Тут можно поиграть
   mas[i] = num;
}
    tape (ptr, N);          //Вызываем функцию печати массива
    change (ptr, N);        //Вызываем функцию смены цифр местами
    tape (ptr, N);          //Вызываем функцию печати изменённого массива
system ("pause");
    return 0;
 }
Проверьте.
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.02.2020, 20:57
можно не заполнять массив числами, у которых правая цифра ноль:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;  
 
void ChangeDidits (int *a, const int n)
{        
    for (int i = 0; i < n; i++)    
        a[i]=a[i]%10*10+a[i]/10; 
}
 
void Print (int *a, const int n)
{
    for (int i = 0; i < n; i++)             
        cout << a[i] << " ";        
    cout << "\n";    
}
 
int main()
{
    srand((unsigned)time(0));
    const int n=10;
    int a[n];    
       
    for (int i = 0; i < n; i++) 
    {
        a[i]=rand()%89 + 11;
        if (a[i]%10==0) a[i]++;    
    }
    
    Print(a,n);
    ChangeDidits(a,n);
    Print(a,n);
    
system ("pause");
return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от Alfiia Посмотреть сообщение
заполненный двузначными числами
Цитата Сообщение от Argus19 Посмотреть сообщение
num = rand() % 80 + 9; // случайные числа от 9 до 80
во-первых это числа от 9 до 88. во-вторых число 9 не является двузначным
2
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
24.02.2020, 21:11
Цитата Сообщение от Yetty Посмотреть сообщение
во-первых это числа от 9 до 88. во-вторых число 9 не является двузначным
Спасибо за уточнение. Делал первый раз.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.02.2020, 21:16
Argus19, держи:
диапазон от A включительно до B включительно:
C++
1
rand()%(B-A+1) + A;
чтобы при каждом запуске программы значения массива были разные srand((unsigned)time(0));
1
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
24.02.2020, 21:20
Цитата Сообщение от Yetty Посмотреть сообщение
держи:
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.02.2020, 21:20
Помогаю со студенческими работами здесь

Создать подпрограмму, которая во введенном числе меняет местами первую и последнюю цифры. Например 4619 -> 9614 или 37,56 -> 67,53.
Очень нужна помощь. Помогите, пожалуйста с бедулькой Создать подпрограмму, которая во введенном числе меняет местами первую и...

Написать программу, которая меняет з записи числа первую и последнюю цифру местами
Задача на функцию.Написать программу, которая меняет з записи числа первую и последнюю цифру местами. Полученное число вывести на экран. ...

Написать процедуру, которая меняет цифры в числе местами
Необходимо написать процедуру, которая меняет цифры в числе местами. Т.е. Я ввожу 12345 она изменяет его в 54321. Я хотел бы сам написать...

Как написать программу, которая меняет местами первую строку и последний столбец квадратной матрицы?
Здравствуйте, мне дали задание сгенерировать квадратную матрицу, на промежутке от а до b, и поменять местами первую строку и последний...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru