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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2009, 02:16   #11
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Цитата:
Сообщение от Bl@st Посмотреть сообщение
netrino
спасибо большое!
Alex_FF
спасибо, только выдает на -1 меньше, если не поставить пробел в конце, как и у меня было пока
Код:
if(flag==1&&s[i]=='\0')
			count++;
не было
тогда так
Код:
void main()
{
	char s[80];
	int i = 0, count = 0;
	bool flag = false;

	printf("введите строку:");
	gets(s);

	do
	{
		if(s[i]=='а') flag = true;
		if((s[i]==' ' && flag) || (s[i] == '\0' && flag))
		{
			count++;
			flag = false;
		}
		
		i++;
	} while (s[i + 1] != '\0');

	printf("число слов с буквой 'а':%d\n",count);
}
Alex_FF вне форума Ответить с цитированием
Старый 21.12.2009, 11:21   #12
Bl@st
Пользователь
 
Регистрация: 25.10.2009
Сообщений: 47
По умолчанию

вот так тогда, цикл продолжается пока s[i-1] не равен концу строки, и тогда он s[i] еще подсчитает
Код:
while (s[i -1] != '\0');
Bl@st вне форума Ответить с цитированием
Старый 21.12.2009, 16:58   #13
Bl@st
Пользователь
 
Регистрация: 25.10.2009
Сообщений: 47
По умолчанию

Подскажите пожалуйста еще с этой задачкой.
в символьной строке сосчитать сисло слов, у которых первые две буквы совпадают.

Код:
#include<stdio.h>
#include<windows.h>

void main()
{
	char s[80];
	int i=0,count=0;

	printf("введите строку:");
	gets(s);
	
	for(i=0;s[i]!='\0';i++)
	{
		if(s[i]==s[0]&&s[i+1]==s[1])
		{
			count++;
			while(s[i]!=' '&&s[i]!='\0')
				i++;
		}
	}

	printf("число совпадений:%d\n",count);
}
так получается, что у меня все проверяется относительно первого слова, как мне задать условие, чтобы проверка происходила по всем словам? через цикл задать?
Bl@st вне форума Ответить с цитированием
Старый 21.12.2009, 18:38   #14
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Код:
#include <iostream>

using namespace std;

void main()
{
	char s[80];
	int i, count;

	printf("введите строку:");
	gets(s);

	count = 0;
	i = 0;
	while (i < strlen(s))
	{
		if (tolower(s[i]) >= 'a' && tolower(s[i]) <= 'z')
		{
			if (s[i] == s[i + 1]) count++;
			while (tolower(s[i]) >= 'a' && tolower(s[i]) <= 'z')
				i++;
		}
		i++;
	}
	printf("число совпадений:%d\n",count);
	system("pause");
}
Alex_FF вне форума Ответить с цитированием
Старый 21.12.2009, 19:09   #15
Bl@st
Пользователь
 
Регистрация: 25.10.2009
Сообщений: 47
По умолчанию

Alex_FF
что то вообще не понял ничего :-( iostream разве не библиотека с++? и что за tolower??(
Bl@st вне форума Ответить с цитированием
Старый 21.12.2009, 19:18   #16
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Цитата:
Сообщение от Bl@st Посмотреть сообщение
Alex_FF
что то вообще не понял ничего :-( iostream разве не библиотека с++? и что за tolower??(
ну так библиотеку нужно же подключить к проекту...
не знаю, что вы там за среды и компиляторы используете, что у вас не надо ни iostream, ни using namespace std... Я на RAD Studio 2009 пишу...

tolower - функция, которая переводит букву в нижний регистр...
есть еще toupper - в верхний переводит...

Последний раз редактировалось Alex_FF; 21.12.2009 в 19:21.
Alex_FF вне форума Ответить с цитированием
Старый 21.12.2009, 19:41   #17
Bl@st
Пользователь
 
Регистрация: 25.10.2009
Сообщений: 47
По умолчанию

Alex_FF Microsoft VS++6.0 язык Си нужен, не Си++
stdio.h библиотеку использую, желательно попреще прогу без использования функции
Bl@st вне форума Ответить с цитированием
Старый 21.12.2009, 21:38   #18
Bl@st
Пользователь
 
Регистрация: 25.10.2009
Сообщений: 47
По умолчанию

подскажите мб какую-нибудь литературу все перерыл(( пытаюсь написать без привязки в англ. алфавиту, как у Alex_FF
Bl@st вне форума Ответить с цитированием
Старый 21.12.2009, 23:45   #19
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

ну вместо if (tolower(s[i]) >= 'a' && tolower(s[i]) <= 'z') напиши
if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))
+ выкинь system("pause")
и будет тебе Си без плюсов
Alex_FF вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчет символов и слов в тексте(паскаль) Noven'kii Помощь студентам 4 16.05.2009 10:10
Подсчет количества слов предложении Милашка000 Общие вопросы C/C++ 2 24.04.2009 20:02
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19
Pascal. На подсчет слов и на массив Lot Помощь студентам 2 24.12.2008 18:35
Подсчет слов Stanislav Общие вопросы Delphi 11 28.08.2008 10:37