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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2009, 07:11   #1
mspavlyxa
Пользователь
 
Аватар для mspavlyxa
 
Регистрация: 15.09.2009
Сообщений: 13
Печаль взгляните на код в С++

Задача такова надо в строке подсчитать кол-во букв цифр и найти кол-во одинаковых слов.Что-то не работает у мну ничего((((((

взгляните на код
=================================== =====================
Код:
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
int zifra(char *a);
int bukv(char *a);
int poisk(char *a);
int const n=255;
int main(){
int p,q;

	cout<<"vvod stroki  1\n";
	char a[n];
	cin>>a;
	p=zifra(a);
	q=bukv(a);
	cout<<"zifr :"<<p<<"\n"<<"Bukv :"<<q;
	int kol_slov = poisk(a);
		cout<<kol_slov<<"kol-vo slov\n";
	getch();
	return 0;
}
int zifra(char *a)
{
int kol=0,i;
for(i=0;a[i]!='\0';i++)
	if((a[i]>='0')&&(a[i]<='9'))
	{kol++;}
return kol;
}
int bukv(char *a){
int koll=0,i;
for(i=0;a[i]!='\0';i++)
	if((a[i]>='a')&&(a[i]<='z'))koll++;
return koll;
}
bool sv_sl(char *slovo){
int n;
n=strlen(slovo);
if(slovo[1]==slovo[n-1])
return true;
else
return false;
}

int poisk(char *a)
{	char slovo[n];
	int i,kol=0,j=0;
	for(i=0;a[i]!='\0';i++)
		if((a[i]!=' '))
			slovo[j++]=a[i];
		else 
			if(sv_sl(slovo)==true)
			{kol++;}
			j=0;
		return kol;
}
=================================== ===================

Последний раз редактировалось Sazary; 15.09.2009 в 19:12.
mspavlyxa вне форума Ответить с цитированием
Старый 15.09.2009, 07:13   #2
mspavlyxa
Пользователь
 
Аватар для mspavlyxa
 
Регистрация: 15.09.2009
Сообщений: 13
По умолчанию

в шапку не дописал я там заголовок функции ну эт ниче всеравно не считает ничего
mspavlyxa вне форума Ответить с цитированием
Старый 15.09.2009, 08:31   #3
HWork
Пользователь
 
Регистрация: 27.07.2009
Сообщений: 27
По умолчанию

Подсчет цифр и букв я бы сделал так:

Код:
//******************************************************
int dig_count=0; //количество цифр
int lit_count=0; //количество символов

bool Calc(char* string, int lenstring)
/*
Где, "string" - указатель на строку; "lenstring" - количество символов в строке";
*/
{
    for(int i=0;i<lenstring;i++)
    {
         if(string[i]>47 && string[i]<58)
             dig_coung++;
         else if((string[i]>64 && string[i]<91) || (string[i]>96 && string[i]<123))
             lit_count++;
    }
    return true;
}
//******************************************************
Код не проверял, но должен работать.

Ну а для подсчета слов, нужно учесть разделитель слов, 100% это будет пробел, но также слова можно ввести через запятую или другой разделитель.

Последний раз редактировалось Sazary; 15.09.2009 в 19:12.
HWork вне форума Ответить с цитированием
Старый 15.09.2009, 13:30   #4
mspavlyxa
Пользователь
 
Аватар для mspavlyxa
 
Регистрация: 15.09.2009
Сообщений: 13
По умолчанию

if(string[i]>47 && string[i]<58)
dig_coung++;
else if((string[i]>64 && string[i]<91) || (string[i]>96 && string[i]<123))





что есть 47.58.64.91.123?
кодировки чтоли
mspavlyxa вне форума Ответить с цитированием
Старый 15.09.2009, 13:59   #5
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от mspavlyxa Посмотреть сообщение
что есть 47.58.64.91.123?
кодировки чтоли
это ASCII коды символов
counter вне форума Ответить с цитированием
Старый 15.09.2009, 14:16   #6
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

А я бы так написал..
Код:
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <utility>
#include <vector>
#include <string>
#include <map>

void print(std::pair<std::string, int> rhs) {
	std::cout << rhs.first << ": " << rhs.second << std::endl;
}
int main()
{
	std::string text("hello my dear friend 111 222 111 hello friend");
	std::stringstream ss(text);

	std::map<std::string, int> ms;
	std::vector<std::string> vec;

	std::copy(
		std::istream_iterator<std::string>(ss),
		std::istream_iterator<std::string>(),
		std::back_inserter(vec)
		);

	for (std::vector<std::string>::iterator it = vec.begin();
		it != vec.end();
		++it) {
			ms[*it]++;
	}
	std::cout << text << std::endl;
	std::for_each(ms.begin(), ms.end(), print);

	std::cout 
		<< "count digit: " 
		<< std::count_if(text.begin(), text.end(), isdigit)
		<< std::endl 
		<< "count alpha: "
		<< std::count_if(text.begin(), text.end(), isalpha)
		<< std::endl;
	return 0;
}
Результат
Цитата:
hello my dear friend 111 222 111 hello friend
111: 2
222: 1
dear: 1
friend: 2
hello: 2
my: 1
count digit: 9
count alpha: 28
Press any key to continue . . .
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 15.09.2009, 18:50   #7
mspavlyxa
Пользователь
 
Аватар для mspavlyxa
 
Регистрация: 15.09.2009
Сообщений: 13
По умолчанию

спасиба мужики за помощь респект вам и уважуха от бедного студента

наеюсь в следующий раз тоже окажете помощь

Последний раз редактировалось Sazary; 15.09.2009 в 19:12.
mspavlyxa вне форума Ответить с цитированием
Старый 16.09.2009, 08:16   #8
mspavlyxa
Пользователь
 
Аватар для mspavlyxa
 
Регистрация: 15.09.2009
Сообщений: 13
По умолчанию

кстати есть у кого хорошая ссылка на полную таблицу кодировок ASCII а та я подумал что более удобно на мой взгляд.
Поделитесь плиз у кого есть.
mspavlyxa вне форума Ответить с цитированием
Старый 16.09.2009, 08:28   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Поделитесь плиз у кого есть.
Ее сгенерировать самому не сложно:
Код:
//---------------------------------------------------------------------------

#pragma hdrstop

#include <tchar.h>
#include <iostream.h>
//---------------------------------------------------------------------------

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
 for (int i=1; i < 255;cout<<i<<"="<<(char)i++<<"\t");
 cin.get();
	return 0;
}
//---------------------------------------------------------------------------
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.09.2009, 09:05   #10
mspavlyxa
Пользователь
 
Аватар для mspavlyxa
 
Регистрация: 15.09.2009
Сообщений: 13
По умолчанию

вчера буквально препод не приняла прогу (по строкам)
в строке найти слово минимальной длинны и удалить его
писал ей на бумажке,она взглянула и сказала в топку я на машине пропустил там успех показала только функциия поиска,удаление ну никак работать не хочет(((((
mspavlyxa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
Подправте код Paul_AG Общие вопросы C/C++ 7 13.04.2009 18:32
Код на C++ Иллидан Общие вопросы Delphi 1 08.10.2008 14:02
Код в аське Михаил Юрьевич Софт 6 26.07.2008 21:28
программа (не код!) simple Помощь студентам 8 14.01.2008 23:36