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

Строки и файлы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дан двухмерный массив. Поменять местами первую и третью строки. http://www.cyberforum.ru/cpp-beginners/thread43630.html
Дан двухмерный массив. Поменять местами первую и третью строки. Turbo C
C++ Как найти размерность в массиве С Знаю что в одномерном массиве: sezeof(a)/sizeof(a) А как для двухмерного? http://www.cyberforum.ru/cpp-beginners/thread43622.html
C++ Quiсk sort
Пытаюсь освоить метод быстрой сортировки, в оригинале quick sort. Очень новенький в c++. Учил не много c++ builder, но решил написать в "консоли". Вот простой код: //--------------------------------------------------------------------------- #include <vcl.h> #include <iostream.h> #pragma argsused #pragma hdrstop
Даны два двухмерных массива одинаковых размеров. Создать третий массив такого же размера, каждый элемент которого равен 100 C++
Даны два двухмерных массива одинаковых размеров. Создать третий массив такого же размера, каждый элемент которого равен 100, если соответствующие элементы двух первых массивов имеют одинаковый знак, и равен нулю в противном случае...
C++ Дан двухмерный массив.Найти сумму элементов побочной диагонали и сумму элементов главной диагонали http://www.cyberforum.ru/cpp-beginners/thread43613.html
Дан двухмерный массив.Найти сумму элементов побочной диагонали и сумму элементов главной диагонали... Программу надо в С.
C++ НОД для трех чисел. Здорова народ! Как найти найболшый общий делитель для трьох чисел? подробнее

Показать сообщение отдельно
YurA_280784
Заблокирован
11.07.2009, 14:50     Строки и файлы
Вот мои соображение по поводу решения))))
Как бонус оснастил консоль возможностью выбора файла через SHL_DIALOG
Рисунки думаю сами за себя говорят, а исходный текст у меня был в файлике sentences.txt, который прилагаю
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
#include <windows.h>
#include <shlobj.h>
#include <stdio.h>
 
//http://www.cyberforum.ru/cpp-beginners/thread43661/post213777.html
FILE *f;
char * chBuf = (char *)malloc(sizeof(char));
LPTSTR SelectFile();
LPTSTR GetSentence(LPTSTR str);
LPTSTR MoveShifts(LPTSTR str);
void PrintSentece(LPTSTR str, int nWords);
 
void main()
{
    printf("Vvedite chislo slov v predlozhenii\r\n");
    int nCount,fLen;scanf("%d",&nCount);
    char sPath[MAX_PATH];sPath[0] = '\0';
    if(sprintf(sPath,SelectFile()))
    {
        if((f = fopen(sPath,"rb+")))
        {
            fseek(f,0,SEEK_END);
            fLen = ftell(f);
            fseek(f,0,SEEK_SET);
            chBuf = (char *)realloc((void *)chBuf,fLen);
            fread(chBuf,1,fLen,f);
            fclose(f);
            while(strlen(chBuf))
                PrintSentece(GetSentence(chBuf),nCount);
            chBuf = (char *)realloc((void *)chBuf,sizeof(char));
        }
        else
            printf("oshibka otkritia %s\r\n%s",sPath,strerror(ferror(f)));
    }
    else
        printf("Oshibka vibore fila\r\n");
    printf("1 - Vibrat' drygoi file\r\n");
    scanf("%d",&nCount);
    if(nCount == 1)
        main();
}
 
LPTSTR SelectFile()
{
    char sPath[MAX_PATH];sPath[0] = '\0';
    LPCITEMIDLIST lpItemDList;
    BROWSEINFO bi = {NULL, NULL, sPath,
       "Выберите файл для чтения",
        BIF_DONTGOBELOWDOMAIN|BIF_BROWSEINCLUDEFILES,
        NULL,
        NULL,
        0
    };
    if((lpItemDList=SHBrowseForFolder(&bi)))
    {
        if(SHGetPathFromIDList(lpItemDList, sPath))
            GetShortPathName((LPCTSTR)sPath,sPath,strlen(sPath));
    }
    return &sPath[0];
}
 
LPTSTR GetSentence(LPTSTR str)
{
    char * chBuf = strrchr(str,'.');
    if(chBuf)
        str[strlen(str) - strlen(chBuf)] = '\0';
    else
        str[0] = '\0';
 
    if(str)
        chBuf = strrchr(str,'.');
    if(!chBuf)
        chBuf = str;
    else
        chBuf++;
    return chBuf;
}
 
LPTSTR MoveShifts(LPTSTR str)
{
    int sLen = strlen(str);
    char * chBuf = (char *)malloc(sLen*sizeof(char));
    for(int i = 0,j = 0; i < sLen; i++, j++)
    {
        while(str[i] == ' '&&i < sLen)
        {
            if(i < sLen)
            if(str[i + 1] != ' ')
                break;
            i++;
        }
        chBuf[j] = str[i];
    }
    chBuf[j] = '\0';
    while(chBuf[0] == ' ')
        chBuf++;
    return chBuf;
}
 
void PrintSentece(LPTSTR str, int nWords)
{
    char * chBuf = MoveShifts(str);
    while(chBuf)
    {
        chBuf = strchr(chBuf + 1,' ');
        nWords--;
    }
    if(0 == nWords)
        printf("%s.\r\n",str);
}
Миниатюры
Строки и файлы   Строки и файлы  
Вложения
Тип файла: txt sentences.txt (109 байт, 26 просмотров)
 
Текущее время: 17:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru