Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2015, 21:29   #1
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию Строки

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

Код:
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
const int n = 100;
int main()
{
	char s[n] = "Hello word my apple dom";
	int i = 0, len = 0, k = 0, count = 0;
	len = strlen(s);
	while(i < len)
	{
		k = 0; count = 0;
		while((s[i] != ' ') && (i < len))
		{
			k = 1;
			count++;
			i++;
		}
		if(k && count == 2)
		{
                        //Тут нужно правильно записать цикл
			for(int j = i; j < len; j++)
				cout << s[j];
		}
		i++;
	}
	getch();
	return 0;
}
помог - жми на весы

Последний раз редактировалось Chainik!; 01.01.2015 в 21:33.
Chainik! вне форума Ответить с цитированием
Старый 01.01.2015, 22:16   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Код:
bool IsAlpha(char c){
	if ((c>='A') && (c<='Z'))
	{
		return true;
	}
	if ((c>='a') && (c<='z'))
	{
		return true;
	}
	return false;
}
Код:
	char s[] = "Hello 67 word my apple dom do it really fast as fury";
	int j = 0, i = 0, len = 0, k = 0, count = 0;
	int wrdLng = 2;
	bool bFound;
	len = strlen(s);
	for (i = 0; i < len ; i++)
	{
		k = 0;
		bFound = false;
		j = i;
		while (IsAlpha(s[j]))
		{
			k++;
			if (k == wrdLng)
			{
				bFound = true;
			}
			if (k>wrdLng)
			{
				bFound = false;
			}
			j++;
			i++;
		}
		if (bFound)
		{
			count++;
		}
	}
	cout << count;

Последний раз редактировалось Smogg; 01.01.2015 в 22:19.
Smogg вне форума Ответить с цитированием
Старый 01.01.2015, 22:35   #3
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Нужно вывести все слова на экран!! Ваш код только считает их. Я сам могу это сделать. В моей программе нужно добавить переменную, и она тоже будет считать!!

Код:
setlocale(LC_ALL, "Rus");
	char s[n] = "Hello 67 word my apple dom do it really fast as fury";
	int i = 0, len = 0, k = 0, count = 0, x = 0;;
	len = strlen(s);
	while(i < len)
	{
		k = 0; count = 0;
		while((s[i] != ' ' && isalpha(s[i])) && (i < len))
		{
			k = 1;
			count++;
			i++;
		}
		if(k && count == 2)
		{
			x++;
		}
		i++;
	}
	cout << "\n\nКоличество слов, в которых 2 буквы: " << x;
помог - жми на весы
Chainik! вне форума Ответить с цитированием
Старый 01.01.2015, 22:36   #4
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Но за код, всё равно огромное спасибо
помог - жми на весы
Chainik! вне форума Ответить с цитированием
Старый 01.01.2015, 22:48   #5
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от Chainik! Посмотреть сообщение
Нужно вывести все слова на экран!! Ваш код только считает их. Я сам могу это сделать. В моей программе нужно добавить переменную, и она тоже будет считать!!
А, вон как...
Ну, тогда всего лишь надо изменить способ обработки случая нахождения слова:
Код:
	char s[] = "Hello 67 word my apple dom do it really fast as fury";
	int j = 0, i = 0, len = 0, k = 0, count = 0;
	int wrdLng = 2;
	bool bFound;
	int strt;
	len = strlen(s);
	for (i = 0; i < len ; i++)
	{
		k = 0;
		bFound = false;
		strt = j = i;
		
		while (IsAlpha(s[j]))
		{
			k++;
			if (k == wrdLng)
			{
				bFound = true;
			}
			if (k>wrdLng)
			{
				bFound = false;
			}
			j++;
			i++;
		}
		if (bFound)
		{
			while (strt <= j)
			{
				cout << s[strt];
				strt++;
			}
			cout << '\n';
		}
	}

Последний раз редактировалось Smogg; 01.01.2015 в 23:14. Причина: у себя обозвал как IsChar, а обнародовал как IsAlpha. Заменил.
Smogg вне форума Ответить с цитированием
Старый 01.01.2015, 23:00   #6
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Спасибо большое
помог - жми на весы

Последний раз редактировалось Chainik!; 01.01.2015 в 23:14.
Chainik! вне форума Ответить с цитированием
Старый 01.01.2015, 23:12   #7
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от Chainik! Посмотреть сообщение
Не компилируется, ругается на IsChar
у вас это будет isalpha
Smogg вне форума Ответить с цитированием
Старый 01.01.2015, 23:15   #8
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Все понял, спасибо
помог - жми на весы

Последний раз редактировалось Chainik!; 01.01.2015 в 23:18.
Chainik! вне форума Ответить с цитированием
Старый 01.01.2015, 23:24   #9
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

мда, когда же научусь внимательности, черт побери???

на строке "Hello 67 word my, apple dom do it! really fast as fury" выдает неправильность.

так что условие при выводе должно быть while (strt < j), иначе захватывает лишний символ...
Smogg вне форума Ответить с цитированием
Старый 02.01.2015, 10:20   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,372
По умолчанию

strlen разве не встроенная функция?
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо каждый элемент строки разделить на сумму элементов строки IgoreKMaN Общие вопросы C/C++ 4 18.12.2014 01:28
C++ Упорядочить строки матрицы D (m. n) Лексикографически по неубыванию первых k элементов строки Анатолий171 Помощь студентам 123 04.07.2014 18:46
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10