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

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

Войти
Регистрация
Восстановить пароль
 
CatOnSide
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 63
#1

Задача по инфе - C++

22.05.2013, 16:32. Просмотров 258. Ответов 0
Метки нет (Все метки)

Помогите дописать функцию numtrim и функцию обработки фразы(vivod Texta) для решения задачи:

Функция TCHAR* numtrim (TCHAR* str) получает строку str, в которой могут быть цифры в конце, в начале, в середине, удаляет из нее только начальные и конечные цифры. Функция возвращает адрес str, если строку удалось преобразовать, и NULL, если не удалось. Функция должна использовать разработанные функции isNumberPstr и delNsymbl.

Функция обработки фразы обрабатывает строку-фразу, по словам и, используя функцию numtrim, формирует новую строку-фразу, включив в нее только те слова, в которых удалены цифровые символы в начале и в конце. Функция формирует информацию о количестве слов в начальной и конечных фразах. Результирующая информация в функции должна быть объединена в структуру.



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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include "stdafx.h"
#include "laba_2_ind.h"
#include <iostream>
extern VVODTEXT vvodText;
 
int  isNumber (TCHAR s); //определяет, является ли полученный символ цифрой
int  isNumberPstr (int& len); //ищет подстроку содержащую только цифровые символы
void delNsymbl(int N, int, int); //удаляет N символов
int  numtrim(int, int); //получает строку содержащую цифры и удаляет их, если они образуют прогрессию
void GetStud(HWND hDlg)
{ 
    GetDlgItemText(hDlg,IDC_TEXT_VVOD, vvodText.textvvod, 100);
    
}
 
void vivodTexta(HWND hDlg)
{
    setlocale(LC_ALL,"rus");
    int u;
    int N;
    vvodText.by = 0;
    vvodText.lenstr = wcslen(vvodText.textvvod);
    
    vvodText.bybuf = 0;
    vvodText.itogdlin = 0;
 
    for( ;vvodText.bybuf<vvodText.lenstr; ){ //проверяем в каком месте мы находимся. если прошли по всему тексту, то end
    int len = 0; //длина найденных цифр в слове
    vvodText.lenstrbuf=0; //обнуляем длину буфера
    for(u =vvodText.bybuf; vvodText.textvvod[u]!=' ' && vvodText.textvvod[u]!='\0'; u++)
    {
        vvodText.buf[u-vvodText.bybuf]=vvodText.textvvod[u];
        vvodText.lenstrbuf++;
    }
    //записали в буфер первое слово из введенной фразы
 
    int i = isNumberPstr (len); //проверили есть ли в нем цифры
    vvodText.bybuf = u+1;
    if(i>=0 && len!=0)//если есть цифры, то заходим в цикл
    {
        int r = delNsymbl (N, i, len); //если цифры были удалены - return 1; else return 0;
        if(r)//если были удалены цифры заходим в цикл
        {
            for(int i=vvodText.itogdlin, y=0; y<vvodText.lenstrbuf;i++,y++)
            {
                vvodText.itog[i]=vvodText.buf[y];
                vvodText.itogdlin = i+1;
            } //из буфера записали измененное слово в итоговое выражение
            vvodText.itog[vvodText.itogdlin]=' ';
            vvodText.itogdlin++;
        }
        for(int i=0; i<vvodText.lenstrbuf; i++)
            vvodText.buf[i]=0; //очистили буфер
    }
    else{break;}
    }
 
    vvodText.kolslov[0]='0';
    
    for(int i=0; i<vvodText.itogdlin; i++)
        {
            if(vvodText.itog[i]==' ')vvodText.kolslov[0]++;
        } //посчитали кол-во слов в итоговом тексте
 
    SetDlgItemText(hDlg, IDC_VIVOD, vvodText.textvvod); //выводим первоначальный текст
    SetDlgItemText(hDlg, IDC_VIVODITOG, vvodText.itog); //выводим итоговый текст
    SetDlgItemText(hDlg, IDC_KOLSLOV, vvodText.kolslov); //вывели кол-во слов в итоговом тексте
 
    for(int i=0; i<vvodText.lenstr; i++) //убираем все введенные символы
        vvodText.textvvod[i]=0;
    for(int i=0; i<vvodText.lenstrbuf; i++) //убираем все символы в буфере
        vvodText.buf[i]=0;
    for(int i=0; i<vvodText.itogdlin; i++) //убираем все символы в итоге
        vvodText.itog[i]=0;
}
 
int isNumber (TCHAR s)
{
    if(s=='0' || s=='1' || s=='2' || s=='3' || s=='4' || s=='5' || s=='6' || s=='7' || s=='8' || s=='9')return 1; 
    else return 0;
}
 
 
int isNumberPstr (int& len)
{
    TCHAR prov;
    int dlin = 0, i=0, y;
    for(y=0; y<vvodText.lenstrbuf; y++)
    {
        prov = vvodText.buf[y];
        if(isNumber (prov)){if(len==0)i=y;len++;}
        else 
        {
            if(len!=0)
            {vvodText.by = i + len;return i;}
        }
    }
    vvodText.by = i + len;
    return i;
}
 
int delNsymbl(int N, int i, int len)
{
    
    for(int d=i; d<vvodText.lenstrbuf; d++)
    {
        vvodText.buf[d]=vvodText.buf[d+len];
    }
    vvodText.lenstrbuf = vvodText.lenstrbuf - N;
    vvodText.by = vvodText.by - N;
 
}
 
 
int numtrim(int i, int len)
{
 
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 16:32     Задача по инфе
Посмотрите здесь:

не могу сделать лабораторки по инфе на языке C++ - C++
помогите не получаются лабы по инфе!!! Посмотрите кто может помочь я 8 вариант! просто сроки поджимают а надо сдать 7 лабораторок по...

не могу сделать лабу по инфе в маткаде хелп - MathCAD
Задание: Из данного массисва найти массив 1)четных чисел 2)повторяющихся Массив 2 4 7 4 5 4 1 6 2 1 6 3 6 7 3 8 3 5...

нужно создать какую-нибудь простуй игру-программу на зачет по инфе)) - Visual Basic
что-нибудь типа крестиков-ноликов... или какую-нибудь фигню типа слайд-шоу фоток) помогите плиз)

лаба по инфе. зад2: Ежемесячная стипендия студента составляет A руб., а расходы на проживание превышают стипендию и составляют B руб. в месяц. - MS Excel
Рост цен ежемесячно увеличивает расходы на 3%. Составить программу расчета необходимой суммы денег, которую надо единовременно попросить у...

Задача: В некотором государстве ввели компьютерный паспорт гражданина.(задача) - Pascal
Доброго времени суток,форумчане. Хотелось бы попросить помощи в решении одной задачи от умных голов. Задача: В некотором...

Задача на k-тую цифру последовательности, задача на схему Горнера. - Pascal
Ну, собственно опять прошу помощи... Задача 1: Определить k-тую цифру последовательности 1234567891011121314…, в которой выписаны подряд...

Задача о размещении весов по ящикам (задача о рюкзаках) - Delphi
Есть упорядоченный по невозрастанию набор весов предметов w1..wn, которые необходимо распределить по ящикам способным выдержать вес V,...

Задача Дам или задача Восьми - Алгоритмы
помогите найти ошибку в алгоритме. не находит ответ подозреваю ошибку в k, i, j package com.company; import java.util.Arrays;...

Задача на файл и задача на создание очереди - Pascal
1 Дан символьный файл, содержащий, по крайней мере, один символ пробела. Удалить из файла все символы, предшествующие пробелу 2 ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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