Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dem0n
2 / 2 / 0
Регистрация: 04.12.2008
Сообщений: 34
#1

строка символов - C++

28.05.2009, 19:54. Просмотров 611. Ответов 9
Метки нет (Все метки)

Здрасте.Срочно нужна помощь.Задание такое : Дан рядок из символов,символы обьеденяются в слова и разделяются одним или несколькими пробелами, в конце текста стоит точка .текст содержит не более 255 символов.Превратить рядок таким способом чтобы в нём остались только слова которые содержат только буквы и цифры.
Поскольку я токо начал изучение сишки прошу не особо не ржать если я чёта зделал нетак=)
Код
#include "stdafx.h"
#include "iostream.h"
#include "stdio.h"





int main()
{
	char t[255];
gets(t);
int n;
char c[10]={0,1,2,3,4,5,6,7,8,9};
for (n=0;n<=255;n++)
{
	while (t[n]!=' ')
	{
		if (t[n]==c)
		{
			cout<<t[n]<<endl;
		}
	

if (t[n]=='.')
{
	return 0;
}
	}

	return 0;
}
выдаёт 3 ошибки.

Добавлено через 6 часов 1 минуту 5 секунд
народ ну обьясните плиззз...мне до завтра над зделать
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
28.05.2009, 19:57     строка символов #2
Цитата Сообщение от dem0n Посмотреть сообщение
слова которые содержат только буквы и цифры.
вот это уточни или пример приведи.
Haster
инженер-системотехник
109 / 108 / 2
Регистрация: 10.03.2009
Сообщений: 533
28.05.2009, 20:06     строка символов #3
Скобку фигурную потерял, проверяй их...
Да и из цикла while не выберешься, первый символ не точка
dem0n
2 / 2 / 0
Регистрация: 04.12.2008
Сообщений: 34
29.05.2009, 00:38  [ТС]     строка символов #4
Цитата Сообщение от ISergey Посмотреть сообщение
вот это уточни или пример приведи.
например па31рм 32mkfds34 типа набор символов и букв

Добавлено через 39 секунд
Цитата Сообщение от Haster Посмотреть сообщение
Скобку фигурную потерял, проверяй их...
Да и из цикла while не выберешься, первый символ не точка
скобки вроде все.
а вот нащёт while я тоже думал но вот как бы мне написать что слово заканчивается когда встречается пробел а програма завершается когда встречается точка?

Добавлено через 1 минуту 37 секунд
Цитата Сообщение от Haster Посмотреть сообщение
первый символ не точка
чтото типа if (t[n]=='*.')
должно быть?

Добавлено через 3 часа 18 минут 6 секунд
ааааа нид хэлп...ато завтра мне будет ппц

Добавлено через 17 минут 11 секунд
Код
#include "stdafx.h"
#include "iostream.h"
#include "stdio.h"
#include "string.h"



int main()
{
	char t[255];
gets(t);
int n,i;
char c[10]={0,1,2,3,4,5,6,7,8,9};
for (n=0;n<=255;n++)
{
	while (strlen(t)!=' ')
	{
		if (strlen(t)==c[i])   ------ошибка " '==' : signed/unsigned mismatch "
		{
			cout<<t<<endl;
		}
	}

if (strlen(t)=='.')
{
	return 0;
}


	return 0;
}
попробовал еще так выдаёт 1 ошибку

Добавлено через 29 минут 42 секунды
ааа паника
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
29.05.2009, 00:50     строка символов #5
ну то ясно что ошибка. вы пробуете сравнить size_t с char, по ходу задачи ваш замысел мне не понятен.
Цитата Сообщение от dem0n Посмотреть сообщение
ааааа нид хэлп...ато завтра мне будет ппц
не хрен пить всю сессию..

я то в принципе решил вашу задачу при помощи кода Rififi, но он мне не нравится(в смысле мой код) (может кто нить и поправит)
C++
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
#include <vector>
#include <algorithm>
#include <functional>
#include <sstream>
#include <iostream>
#include <iterator>
 
 
//может (скорей всего) есть лучше решение
bool pred(std::string &str){
    return !(
        (std::count_if(str.begin(), str.end(), isdigit) > 0) &&
        (std::count_if(str.begin(), str.end(), isalpha) > 0) );
}
 
template <
typename _E, typename _Tr, typename _Ax,
template <typename, typename, typename> class _S
>
_S<_E, _Tr, _Ax> remove_s(const _S<_E, _Tr, _Ax>& s)
{
    typedef _S<_E, _Tr, _Ax> string_type;
    typedef std::vector<string_type> V;
    V v;
    {
        std::basic_istringstream<_E, _Tr, _Ax> ss(s);
        std::copy(
            std::istream_iterator<string_type, _E>(ss),
            std::istream_iterator<string_type, _E>(), std::back_inserter(v));
    }
 
    V::iterator i = std::remove_if(v.begin(),v.end(),pred);
    v.erase(i,v.end());
//---------здесь точно крывой код-------------------
    string_type res;
    for(i = v.begin(); i != v.end(); ++i)
        res += *i + ' ';
//--------------------------------------------------
    return res;
 
 
}
int main()
{
    std::string str = "test ddd111dddd gdhfgh ddff222fff 333333";
    std::cout << remove_s(str)<< std::endl;
    return 0;
}
Результат
ddd111dddd ddff222fff
Press any key to continue . . .
dem0n
2 / 2 / 0
Регистрация: 04.12.2008
Сообщений: 34
29.05.2009, 01:15  [ТС]     строка символов #6
та не пил я=)єто спонтанное задание=)
конечно спс большое но єто слишком сложно...проще никак нельзя?
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
29.05.2009, 01:27     строка символов #7
Цитата Сообщение от dem0n Посмотреть сообщение
проще никак нельзя?
с "C" строками воевать ка кто не охотно. и наверно не проще.
dem0n
2 / 2 / 0
Регистрация: 04.12.2008
Сообщений: 34
29.05.2009, 01:55  [ТС]     строка символов #8
просто ввести строку символов создать цыкл в котором оно проверяет каждый символ каждого слова слова в строке словом щитается все буквы и цифры подряд пока не встретится пробер цыкл завершается когда встречается точка

Добавлено через 3 минуты 41 секунду
вот я создал цыкл который проверяет каждый символ строки while != ' ' пока не встречается пробел єто будет означать канец слова и начало нового слова и if=='.' -конец строки тоесть програма ретурн 0=)

Добавлено через 22 минуты 17 секунд
народ некто неможет зделать попроще или хотябы советом помочь??
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
29.05.2009, 02:10     строка символов #9
Ну вот так до убожества крыво:
тебе посто осталось проверить свое условие...
C++
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
58
59
#include <iostream>
using namespace std;
 
int count_words(const char *str) // просто считаем сколько слов в строке!
{
    int word_count = 0;
    int in_word = 0;
    for(; *str ; ++str )
    { 
        if( isspace(*str) )
            in_word = 0;
        else
            if( !in_word )
            {
                ++word_count;
                in_word = 1;
            }
    }
    
    return word_count;
}
 
char* word(char out[50][50], const char *str_in)
{
    char buff[256];
    int in_word = 0;
    int j = 0, x = 0;
 
    for(; *str_in ;++str_in)
    {
        if( isspace(*str_in) )
        {
            in_word = 0;
            buff[j] = 0;
            j = 0;
 
            strcpy(out[x++], buff);
        }
        else
            if( !in_word )
            {
                buff[j++] = *str_in;
            }
    }
    buff[j] = 0;
    strcpy(out[x++], buff);
}
 
int main()
{
    char str[] = "test string jkgkjgk sdftyu";
    char buff[50][50];
    cout << count_words(str) << endl;
    word(buff,str);
 
    for(int i = 0; i < count_words(str); ++i)
        cout << buff[i] << endl;
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2009, 03:04     строка символов
Еще ссылки по теме:

Дана строка символов. Изменить строку – во всех словах, имеющих нечетное количество символов, средний символ удалить. C++
C++ Дана строка символов. Подсчитать общее число вхождений символов .,+ в строку
C++ Дана строка символов. Подсчитать общее число вхождений символов
C++ Строка в 10000 символов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dem0n
2 / 2 / 0
Регистрация: 04.12.2008
Сообщений: 34
29.05.2009, 03:04  [ТС]     строка символов #10
а как написать чтобы мне вывело символы из строки с ,например, первого по 4?
чтото типа
gets(s);
cout<<s[1-4]; незнаю как єто делоется написал чтобі ві просто поняли идею
Yandex
Объявления
29.05.2009, 03:04     строка символов
Ответ Создать тему
Опции темы

Текущее время: 13:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru