powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Поиск слов содержащих одну цифру
7 сообщений из 7, страница 1 из 1
Поиск слов содержащих одну цифру
    #39099866
andrew_ pavlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,помогите пожалуйста с программой ,а то у меня она не совсем правильно работает
Код: plaintext
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.
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <stdio.h>
#include <locale>
#include <string.h>
 
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char string[255];
    cout << "Исходная строка: " << endl;
    gets_s(string);
    cout << endl << "Итоговая строка:  " << endl;
    int ind_begin, ind_end, kol_num, kol_all;
    ind_begin = -1;
    int i = 0;
    kol_all = 0;
    do
    {
        if (isspace(string[i])) ind_begin = i;
        i++;
    }
    while (!isspace(string[i]));
    do
    {
        do
        {
            if (isspace(string[i])) ind_end = i;
            else if (i == strlen(string) - 1) ind_end = strlen(string);
            i++;
        } while ((!isspace(string[i])) && (i != strlen(string)));
        kol_num = 0;
        for (int j = ind_begin + 1; j < ind_end; j++)
        {
            if ((string[j] >= '0') && (string[j] <= '9')) kol_num++;
        }
        if (kol_num == 1)
        {
            for (int j = ind_begin + 1; j <  ind_end; j++)
                cout << string[j];
            kol_all++;
        }
        ind_begin = ind_end;
    }
    while (i != strlen(string));
    if (kol_all == 0) cout << "Отсутствует!";
    _getch();
    return 0;
}


Если вводим только вводим одно слово,то срабатывает обработчик ошибки студии
...
Рейтинг: 0 / 0
Поиск слов содержащих одну цифру
    #39099873
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrew_ pavlovсрабатывает обработчик ошибки студии
При этом обычно правое нижнее окошечко этой самой студии показывает полный стэк, по
которому можно легко найти где и почему произошла ошибка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поиск слов содержащих одну цифру
    #39100016
andrew_ pavlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,дело не только в этом,она не совсем правильно работает,можете посмотреть код?
...
Рейтинг: 0 / 0
Поиск слов содержащих одну цифру
    #39100023
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrew_ pavlovможете посмотреть код?
Могу. Но он такой кривой, что даже комментировать все места где он не работает - лень.
Нарисуй на листе бумаги в клетку свою строку, запускай пошаговую отладку и смотри где твоя
(?) программа начинает работать не так как ты ожидаешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поиск слов содержащих одну цифру
    #39100050
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на строке без пробелов первый цикл выйдет за конец строки, а может и за границу массива string. нужна проверка, что строка не кончилась.
...
Рейтинг: 0 / 0
Поиск слов содержащих одну цифру
    #39100062
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabнужна проверка, что строка не кончилась.
Нет, нужно выкинуть этот цикл целиком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поиск слов содержащих одну цифру
    #39103683
nworm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrew_ pavlov,

Начните с изучения цикла do while , наверное. Там первые проблемы.

А так не понятно, что можно использовать. Но раз std уже подключен. Можно так.

Код: plaintext
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.
#include <iostream>
#include <Windows.h>
#include <string>
#include <iostream>
#include <sstream>
#include <conio.h>

using namespace std;

int numbers(std::string string)
{
	int kol_num=0;

	for (int j = 0; j < string.length(); j++)
	  {
			if ((string[j] >= '0') && (string[j] <= '9')) kol_num++;
	  }
	return kol_num;
}
int main()
{
	std::string        s;

	std::getline( std::cin, s );

	std::istringstream        is;
	is.str( s );

	std::cout << std::endl;

	while( is >> s )
	{
		if (numbers(s)==1)
			std::cout << s << std::endl;
	}

getch();
  return 0;
}



Но можно и по-другому. Нужно разбить строку на слова и посчитать количество букв.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Поиск слов содержащих одну цифру
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]