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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2015, 15:17   #1
Zulll
Новичок
Джуниор
 
Регистрация: 24.12.2014
Сообщений: 1
Сообщение Обработка строки С++

Уважаемые программисты, помогите исправить программу.
В каждом слове заменить первую букву на длину этого слова.
Пример: asd U vsghh
3sd U 5sghh

Вот программа, но она работает неправильно.
Код:
#include <iostream>	
using namespace std;
const int size = 80;
int main()
{
	char tmp[size];
	char exit[] = "exit";
	char space = ' ',x;
	int i, n, a, q;
	bool e(true);
	while (e)
	{
		cout << " \nEntar the string : \n";
		cin.getline(tmp, size);
		char *ptmp = new char[strlen(tmp) + 1];
		strcpy_s(ptmp, (strlen(tmp) + 1), tmp);
		if (strcmp(ptmp, exit) == 0)
		{
			e = !e;
		}
		n = strlen(ptmp);
		a = strlen(tmp);
		char *pTop = &ptmp[0], *pNext = &ptmp[1];
		
		{
			char *pEnd = pTop;
			while (*pEnd && *pEnd != '/0'&& *pEnd!=space)
			{
				pEnd++;
			}
				q = pEnd - pTop;
				*pTop = q;
				cout << ptmp << endl;
		}
		cout << q << endl;
		cout << "Result:\n" <<ptmp<< endl;
		delete[]ptmp;
	}
	return 0;
}

Последний раз редактировалось Stilet; 21.01.2015 в 16:47.
Zulll вне форума Ответить с цитированием
Старый 05.02.2015, 09:08   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Если вдруг кому пригодится правильный вариант:

Код:
#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;
const int size = 80;

int main()
{
    char tmp[size];
    char exit[] = "exit";
    char space = ' ',x;
    int i, n, a, q;
    bool e(true);
    while (e)
    {
        cout << " \nEntar the string : \n";
        cin.getline(tmp, size);
        char *ptmp = new char[strlen(tmp) + 1];
        strcpy_s(ptmp, (strlen(tmp) + 1), tmp);

        // если ввели exit то на выход
        if (!strncmp(ptmp, exit,4)) return 0;

        char* ptr = &ptmp[0];

       // пока не обработали всю строку
        while(strlen(ptr)>0)
        {
            int wl = 0;
            // ищем начало строки
            while(!strncmp(ptr,(const char*)&space,1) && strlen(ptr)>0) ptr++;

            // сохраним указатель на слово
            char* wordptr = ptr;

            if(ptr!='\0') // если не конец строки то считаем длину слова
            {
                while(strncmp(ptr,(const char*)&space,1) && strlen(ptr)>0)
                {
                    wl++;
                    ptr++;
                }
                // печатаем длину
                cout << wl;

                // выводим посимвольно одно слово
                while(wl-->0) cout << (++wordptr)[0];

            }
        }
        delete[]ptmp;
    }
    return 0;
}
Изображения
Тип файла: jpg forum.jpg (32.2 Кб, 67 просмотров)
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

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

Код:
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;

const int n = 100;

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_CTYPE, "Rus");
	char s[n] = "asd U vsghh", *p, res[n];
	int k = 0, j = 0;
	cout << "Строка имеет вид: " << s;
	p = strtok(s, " ");
	
	while(p)
	{
		k = 0;
		for(int i = 0; i < strlen(p); i++)
			k++;
		if(strlen(p) != 1)
		{
			res[j++] = k + '0';
			for(int i = 1; i < strlen(p); i++)
				res[j++] = p[i];
			res[j++] = ' ';
		}
		else
		{
			for(int i = 0; i < strlen(p); i++)
				res[j++] = p[i];
			res[j++] = ' ';
		}
		p = strtok(NULL, " ");
	}
	res[j] = NULL;
	cout << "\n\nПосле форматирования имеем: " << res;
	getch();
	return 0;
}
помог - жми на весы

Последний раз редактировалось Chainik!; 15.03.2016 в 22:09.
Chainik! вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка строки DiM@n Общие вопросы C/C++ 1 16.02.2010 20:15
Обработка командной строки Dasharnb777 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 07.02.2010 18:24
Обработка строки в С#/C++ HDMI Помощь студентам 6 25.09.2009 13:27
обработка строки Bek Помощь студентам 1 27.02.2009 12:46
Обработка строки Staxxx Общие вопросы C/C++ 2 03.01.2009 12:30