С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 09.12.2020
Сообщений: 5
1

Дана строка состоящая из групп нулей и единиц найти и вывести на экран самую короткую группу

07.01.2021, 17:09. Показов 3184. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите с кодом на С++. Есть код, но в нем нужно добавить вывод самой короткой группы.
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
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
using namespace std;
int main(int argc, char* argv[])
{
    char str[256] = "0000 11111 0000 111 00000 1111111 00000 11111111 000000 1111111\0";
 
    int max = 256, max_pos = 0;
    for (int i = 0; str[i] != '\0'; i++)
    {
        if (isspace(str[i]) || str[i+1] == '\0')
        {
            int k = i-1;
            while (k >= 0 && !isspace(str[k])) k--;
            if (abs((k+1)-i) < max) { max = abs((k+1)-i); max_pos = k+1; }
        }
    }
 
 
 
    _getch();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2021, 17:09
Ответы с готовыми решениями:

Дана строка, состоящая из групп нулей и единиц. Найдите и выведите на экран группу с 5 символами
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;string&gt; using namespace...

Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран группы с четным количеством символов
Помогите с решение задачи на Macrosoft Visual C++ Дана строка, состоящая из групп нулей и...

В строке из групп нулей и единиц найти самую короткую группу
Здравствуйте, помогите пожалуйста с заданием. Желательно максимально просто. При выполнении...

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

4
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
07.01.2021, 18:06 2
Цитата Сообщение от Pavelunit Посмотреть сообщение
Помогите с кодом на С++. Есть код, но в нем нужно добавить вывод самой короткой группы.
Вряд ли в строке, состоящей из нулей и единиц, будут присутствовать пробелы.
0
0 / 0 / 0
Регистрация: 09.12.2020
Сообщений: 5
07.01.2021, 18:36  [ТС] 3
Дело как раз и в том, что между группами присутствует пробел
0
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
07.01.2021, 19:08 4
Похоже, что тут надо что-то подобное:
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
#include <iostream>
#include <cstring>
#include <tuple>
#include <iterator>
 
std::tuple<unsigned, const char*, const char*> get_shortest_group(const char* first)
{
    auto trailing_length = strlen(first);
    auto transition_pos = std::adjacent_find(first, first + trailing_length, [](char c1, char c2) { return c1 != c2; });
    if (first + trailing_length == transition_pos)
    {
        return std::make_tuple(trailing_length, first, transition_pos);
    }
    auto trailing_result = get_shortest_group(transition_pos + 1);
    if (std::get<0>(trailing_result) < transition_pos - first + 1) return trailing_result;
    return std::make_tuple(transition_pos - first + 1, first, transition_pos);
}
 
int main()
{
    const char* str = "00000001111111100011111100001111";
    auto result = get_shortest_group(str);
 
    std::cout << "Самая короткая группа нулей (единиц): \"";
    std::copy(std::get<1>(result), std::get<2>(result) + 1, std::ostream_iterator<char>(std::cout, ""));
    std::cout << "\", ее длина: " << std::get<0>(result);
    std::cout << ", нач. позиция: " << std::get<1>(result) - str << std::endl;
 
    return 0;
}
Добавлено через 33 секунды
Цитата Сообщение от Pavelunit Посмотреть сообщение
Дело как раз и в том, что между группами присутствует пробел
В этом случае задача решается в 3 строчки, используя строковый поток.
1
844 / 647 / 323
Регистрация: 24.02.2017
Сообщений: 2,288
07.01.2021, 22:28 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main() {
char str[256] = "0000 11111 0000 111 00000 1111111 00000 11111111 000000 1111111\0";
char s[256]="",*p;
int L=strlen(str);
 
 p=strtok(str," ");
 while(p){
  if(p)
   if(strlen(p)<L){
       L=strlen(p);
       strcpy(s,p);
   }
   p=strtok(NULL," ");
  }
  cout<<s;
  return 0;
}
Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <sstream>
using namespace std;
 
int main() {
  char str[256] = "0000 11111 0000 111 00000 1111111 00000 11111111 000000 1111111\0";
  stringstream ss;
  string s,t;
  int L=strlen(str);
  ss<<str;
  while(ss>>s)
      if(s.length()<L){
          L=s.length();
          t=s;
       }
  cout<<t;
  return 0;
}
1
07.01.2021, 22:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2021, 22:28
Помогаю со студенческими работами здесь

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

В строке из групп нулей и единиц найти самую короткую группу
программа для C++ Bilder 6 Составить программу. В строке, состоящей из групп нулей и единиц,...

Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран самую короткую группу.
Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран самую короткую группу.

Дана строка, состоящая из групп нулей и единиц; найти и вывести на экран самую короткую группу
Помогите написать код программы. Дана строка, состоящая из групп нулей и единиц. Каждая группа...

Дана строка, состоящая из групп нулей. Найти и вывести на экран самую длинную и короткую группу.
Дана строка, состоящая из групп нулей. Найти и вывести на экран самую длинную и короткую группу....

В строке, состоящей из групп нулей и единиц, найти и вывести на экран самую короткую группу
Собственно, сама задача: в строке, состоящей из групп нулей и единиц, найти и вывести на экран...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru