Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Поиск слов содержащих одну цифру / 7 сообщений из 7, страница 1 из 1
10.11.2015, 17:14
    #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
10.11.2015, 17:19
    #39099873
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск слов содержащих одну цифру
andrew_ pavlovсрабатывает обработчик ошибки студии
При этом обычно правое нижнее окошечко этой самой студии показывает полный стэк, по
которому можно легко найти где и почему произошла ошибка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.11.2015, 19:59
    #39100016
andrew_ pavlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск слов содержащих одну цифру
Dimitry Sibiryakov,дело не только в этом,она не совсем правильно работает,можете посмотреть код?
...
Рейтинг: 0 / 0
10.11.2015, 20:18
    #39100023
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск слов содержащих одну цифру
andrew_ pavlovможете посмотреть код?
Могу. Но он такой кривой, что даже комментировать все места где он не работает - лень.
Нарисуй на листе бумаги в клетку свою строку, запускай пошаговую отладку и смотри где твоя
(?) программа начинает работать не так как ты ожидаешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.11.2015, 21:26
    #39100050
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск слов содержащих одну цифру
на строке без пробелов первый цикл выйдет за конец строки, а может и за границу массива string. нужна проверка, что строка не кончилась.
...
Рейтинг: 0 / 0
10.11.2015, 21:35
    #39100062
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск слов содержащих одну цифру
mcureenabнужна проверка, что строка не кончилась.
Нет, нужно выкинуть этот цикл целиком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.11.2015, 01:25
    #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
Форумы / C++ [игнор отключен] [закрыт для гостей] / Поиск слов содержащих одну цифру / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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