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

Найти строки в которых содержится не более трёх нечетных цифр

20.11.2022, 11:19. Показов 511. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие: Написать программу, в которой с клавиатуры вводится n (где n<=15) строк, каждая из которых содержит не более 50 символов. Вывести на экран стоки, в которых содержится: не более трёх нечетных цифр;
Все ли правильно реализовано и можно ли упростить код?
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
#include <iostream>
#include<windows.h>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);//Для ввода русских символов
    int rows;
    int s[15];
    char arr[15][50];
    // Цикл для ввода корректного значения 
    do {
        cout << "Введите количество строк массива(<=15): ";
        cin >> rows;
        if (rows < 1 || rows>15)
            cout << "Количество введено НЕВЕРНО!!!" << endl;
    } while (!(rows > 0 && rows <= 15));
    
    cout << "\n";
 
    cout << endl;
 
    for (int i = 0; i < rows; i++)
    {
        cout << "Введите " << i << " строку:";
        cin >> arr[i];
        cout << endl;
    }
    int k = 0;
    //Нахождение и подсчёт нечётных цифр в каждой строке 
    for (int i = 0; i < rows; i++)
    {
 
        for (int j = 0; j <50; j++)
        {
            if ( (arr[i][j]=='1') || (arr[i][j] == '3') || (arr[i][j] == '5') || (arr[i][j] == '7') || (arr[i][j] == '9')) { k++; }
            if (arr[i][j] == '/0')
                break;
        }
        s[i] = k;
        k = 0;
        cout << "Цифр в " << i << " строке: " << s[i] << endl;
    }
    cout << endl;
    for (int i = 0; i<rows;i++)
    {
        if(s[i]<=3)
        cout << i << " строка:" << arr[i] << endl;
    }
    cout << endl << endl;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.11.2022, 11:19
Ответы с готовыми решениями:

Найти в двумерном массиве все строки, в которых содержится не более одного положительного элемента
Задача состоит в том, чтобы найти в двумерном массиве все строки, в которых содержится не более одного положительного элемента. Нельзя...

Определить номера слов, в которых содержится более трех символов «А»
Помогите решить следующие задачи =)) 1. Строки . Дана строка текста длиной не более 80 символов, состоящая из слов, разделенных...

А3 содержится строка, состоящая из букв и цифр. Найти произведение нечетных цифр. Результат вывести в ячейку С
В ячейке А3 содержится строка, состоящая из букв и цифр. Найти произведение нечетных цифр. Результат вывести в ячейку С3. Макрос назначить...

4
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.11.2022, 11:33
Constal, для хранения 50-ти символов в с-строке нужно 51 позиция (последний - 0). исправьте. Лучше всего размеры (столбцы/строки) задать именованными константами).
Проходя посимвольно вычисляйте условие if(ch%2). Это лучше читается и быстрее работает, чем перебор всех нечётных в лоб.
1
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
20.11.2022, 12:40
Лучший ответ Сообщение было отмечено Constal как решение

Решение

Цитата Сообщение от Constal Посмотреть сообщение
cin >> arr[i];
Так целую строку не ввести, а только одно слово до пробельного символа
C++
1
2
3
4
5
6
7
    cin.get(); // нужно из потока ввода забрать '\n', который Вы оставили после ввода rows
    for (int i = 0; i < rows; i++)
    {
        cout << "Введите " << i << " строку:";
        cin.getline(arr,50);
//     cout << endl;
    }
Цитата Сообщение от Constal Посмотреть сообщение
C++
1
2
3
4
5
6
for (int j = 0; j <50; j++)
 {
       if ( (arr[i][j]=='1') || .....) { k++; }
       if (arr[i][j] == '/0')
          break;
 }
C++
1
2
3
4
5
int k=0;
for (int j = 0; arr[i][j]!=0; j++)
   if ( isdigit(arr[i][j]) && (arr[i][j]-'0')%2==1)
       k++; 
s[i]=k;
2
0 / 0 / 0
Регистрация: 11.10.2022
Сообщений: 24
21.11.2022, 02:14  [ТС]
Цитата Сообщение от zss Посмотреть сообщение
for (int i = 0; i < rows; i++)
    {
        cout << "Введите " << i << " строку:";
        cin.getline(arr,50);
не работает cin.getline, так как char arr[][], а надо arr[](если сделать так то потом для индекса j требуется массив или указатель)
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
21.11.2022, 08:48
Constal, так, ведь, понятно, что опечатка
C++
1
cin.getline(arr[i],50);
Ведь, до этого было
Цитата Сообщение от Constal Посмотреть сообщение
cin >> arr[i];
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2022, 08:48
Помогаю со студенческими работами здесь

Ввести строку,состоящую только из цифр и букв.Распечатать те группы цифр, в которых цифра 0 встречается не более трех раз
Ввести строку,состоящую только из цифр и букв.Распечатать те группы цифр, в которых цифра 0 встречается не более трех раз.(Группы цифр-это...

Дана строка символов; определить, есть ли в ней слова в которых содержится более трех заданных символов
Дана строка символов. Определить, есть ли в ней слова в которых содержится более трех заданных символов. При написании программы нельзя...

Поменять местами строки в которых содержится максимум и минимум нечётных элементов
Поменять местами строки в которых содержится максимум и минимум нечётных элементов . подскажите как проверять строки отдельно на...

Из текстового файла вывести на экран строки, в которых содержится не более одного пробела
Из текстового файла вывести на экран строки, в которых содержится не более одного пробела (1 или 0).

Найти числа, в которых каждая цифра содержится 2 и более раз
Даны числа от 1111111 до 9999999 Нужно найти числа в которых каждая цифра содержится 2 и более раз. Определить количество этих чисел ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru