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

Строки, работа с файлами и массивами строк - C++

Восстановить пароль Регистрация
 
AHTuBuPyC
0 / 0 / 0
Регистрация: 16.01.2010
Сообщений: 4
16.01.2010, 06:08     Строки, работа с файлами и массивами строк #1
Требуются срочная помощь зачет через 2 часа...

Не хватает 2х лаб... помогите люди добрые кто чем может

Лаба 1(строки):
Дан текст, найти наибольшее количество идущих подряд букв.

Нашел в инете аналог который считает кол-во пробелов, а нужно количество идущих подряд букв чтобы выводило (английских или русских не важно...)

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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
        setlocale(LC_ALL,"RUSSIAN");
                string word;
                int max_kol=0; 
                int j=0;
        cout << "Введите предложение: "<<endl;
        getline(cin,word);
                for(int i=0; i<word.size(); i++)
                {
                        if (word[i]==' ')
                        {
                                j++;
                        }
                        else j=0;
                        if(max_kol<j)
                        {
                                max_kol=j;
                        }
                }
                cout<<"Максимальное количество пробелов:   "<<max_kol<<endl;
        return 0;
}
Лаба2(работа с файлами и массивами строк):

Написать программу, которая считывает текст из файла и заменяет первую букву каждого слова длиной более 3-х символов на заглавную.
Вывести на экран: а) получившийся текст, б) список слов в алфавитном порядке.

Также добрые люди уже помогли немного здесь... есть готовая прога которая выводит слова в алфавитном порядке... осталось тока сделать как-то замену букв...

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
 
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 20
#define G 26
// ПРЕДВАРИТЕЛЬНОЕ ОБЪЯВЛЕНИЕ ФУНКЦИЙ
// Заголовок программы
void Title();
// Ввод предложения
void InpPredl (char predl[]);
// Выделение из предложения
void Select(const char &predl, const char &r);
// Вывод результата
void OutPredl(char *s1, char *s2);
// сортирует слова по алфавиту и тут же выводит
void SortWord(char Str[]);
// из ФАКа киберфорума
void bubbleSortWord(char* a[], long size);
 
 
// ОСНОВНАЯ ФУНКЦИЯ
int main ()
{
        // ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
        char predl[80]; // Введенное предложение
 
        // Заголовок программы
        //Title ();
        // Ввод предложения
        InpPredl (predl);
 
        SortWord(predl);
  getch();
        
}
// ОПИСАНИЕ ИСПЛЬЗУЕМЫХ ФУНКЦИЙ
// Заголовок программы
void Title()
{
        //clrscr ();
        puts (" Laboratornoe zadanie №8");
        puts (" vo vvedennom predlogenii raspologite slova");
        puts (" v obratnoi posledovatelnosti.");
        puts (" porjadok sledovanija znakov prepinanija ne menjat.");
        puts (" v predlogenii ispolguutcja russkie bukvbl i znaki. \n");
}
// Ввод предложения
void InpPredl(char *s)
{
        puts(" Vvedite predlogenie \n");
        //strcpy (s," Verite li bl, 4to zada4a reshena?");
        strcpy (s,"test abc cba!");
        printf("sourse: %s",s);
        // gets (s);
}
void SortWord(char Str[])
{
        char word[N][N]; // Массив слов в предложении
        char *ptr[N], *token;
        int  counter=0;
 
        token = strtok (Str, "`!;:,.?- ");
        while  (token  !=NULL)
        {       /* вставляет код для обработки символа в цикле */
        //      printf("\n%s", token);
                strcpy (word[counter++],token);
                token = strtok(NULL,"`!;:,.?- ");
                /* берет следующий символ */
        }
        for (int i=0; i<counter; i++)
                ptr[i]=word[i];
 
        bubbleSortWord(ptr,counter);
                // Вывод результата
                printf("\nResult: ");
        for (int i=0; i<counter; i++)
                printf("%s ",ptr[i]);
}
 
// из ФАКа киберфорума
void bubbleSortWord(char* a[], long size) {
        long i, j;
        char* x;
 
        for( i=0; i < size; i++) {            // i - номер прохода
                for( j = size-1; j > i; j-- ) {     // внутренний цикл прохода
                //      Возвращает < 0, если str1 меньше str2; > 0,
                // если str1 больше str2, и 0, если они равны
                        if ( strcmp(a[j-1],a[j]) > 0) {
                                x=a[j-1]; a[j-1]=a[j]; a[j]=x;
                        }
                }
        }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2010, 06:08     Строки, работа с файлами и массивами строк
Посмотрите здесь:

C++ Работа с файлами и массивами
работа с файлами и массивами символов C++
C++ Работа с файлами и массивами строк
Обработка строк и работа с массивами C++
Обработка строк и работа с файлами... C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vet
 Аватар для vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
16.01.2010, 06:31     Строки, работа с файлами и массивами строк #2
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
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#define N 20
#define G 26
// ÏÐÅÄÂÀÐÈÒÅËÜÍÎÅ ÎÁÚßÂËÅÍÈÅ ÔÓÍÊÖÈÉ
// Г‡Г*ãîëîâîê ïðîãðГ*ììû
void Title();
// Ââîä ïðåäëîæåГ*ГЁГї
void InpPredl (char predl[]);
// ÂûäåëåГ*ГЁГҐ ГЁГ§ ïðåäëîæåГ*ГЁГї
void Select(const char &predl, const char &r);
// Âûâîä ðåçóëüòГ*ГІГ*
void OutPredl(char *s1, char *s2);
// ñîðòèðóåò ñëîâГ* ГЇГ® Г*ëôГ*ГўГЁГІГі ГЁ ГІГіГІ æå âûâîäèò
void SortWord(char Str[]);
// ГЁГ§ ÔÀÊГ* êèáåðôîðóìГ*
void bubbleSortWord(char* a[], long size);
 
 
// ÎÑÍÎÂÍÀß ÔÓÍÊÖÈß
int main ()
{
        // ÎÁÚßÂËÅÍÈÅ ÏÅÐÅÌÅÍÍÛÕ
        char predl[80]; // ÂâåäåГ*Г*îå ïðåäëîæåГ*ГЁГҐ
 
        // Г‡Г*ãîëîâîê ïðîãðГ*ììû
        // Ââîä ïðåäëîæåГ*ГЁГї
        InpPredl (predl);
 
        SortWord(predl);
  getch();
        
}
 
// Ââîä ïðåäëîæåГ*ГЁГї
void InpPredl(char *s)
{
        puts(" Vvedite predlogenie \n");
        //strcpy (s," Verite li bl, 4to zada4a reshena?");
        strcpy (s,"test abc cba!");
       printf("sourse: %s",s);
        //ГЊГҐГ*ГїГҐГІ Г*Г*Г·Г*ëüГ*ГіГѕ ГЎГіГЄГўГі ñëîâГ* Г*Г* Г§Г*ГЈГ«Г*ГўГ*ГіГѕ
        for(int i=0;i<strlen(s);i++)
                       {
  while(s[i]==' ' && i<strlen(s)) i++;
  s[i] = toupper(s[i]);
  while(s[i]!=' ' && i<strlen(s)) i++;
 }
 
// printf("S: %s",s);
 
        // gets (s);
}
void SortWord(char Str[])
{
        char word[N][N]; // ГЊГ*Г±Г±ГЁГў ñëîâ Гў ïðåäëîæåГ*ГЁГЁ
        char *ptr[N], *token;
        int  counter=0;
 
        token = strtok (Str, "`!;:,.?- ");
        while  (token  !=NULL)
        {       /* ГўГ±ГІГ*âëÿåò êîä äëÿ îáðГ*áîòêè ñèìâîëГ* Гў öèêëå */
        //      printf("\n%s", token);
                strcpy (word[counter++],token);
                token = strtok(NULL,"`!;:,.?- ");
                /* áåðåò ñëåäóþùèé ñèìâîë */
        }
        for (int i=0; i<counter; i++)
                ptr[i]=word[i];
 
        bubbleSortWord(ptr,counter);
                // Âûâîä ðåçóëüòГ*ГІГ*
                printf("\nResult: ");
        for (int i=0; i<counter; i++)
                printf("%s ",ptr[i]);
}
 
// ГЁГ§ ÔÀÊГ* êèáåðôîðóìГ*
void bubbleSortWord(char* a[], long size) {
        long i, j;
        char* x;
 
        for( i=0; i < size; i++) {            // i - Г*îìåð ïðîõîäГ*
                for( j = size-1; j > i; j-- ) {     // ГўГ*óòðåГ*Г*ГЁГ© öèêë ïðîõîäГ*
                //      Г‚îçâðГ*Г№Г*ГҐГІ < 0, åñëè str1 ìåГ*ГјГёГҐ str2; > 0,
                // åñëè str1 áîëüøå str2, ГЁ 0, åñëè Г®Г*ГЁ Г°Г*ГўГ*Г»
                        if ( strcmp(a[j-1],a[j]) > 0) {
                                x=a[j-1]; a[j-1]=a[j]; a[j]=x;
                        }
                }
        }
}
Теперь меняет на заглавную в каждом слове, а чтоб только для тех у которых больше 3-х букв, надо подсчитывать отдельно длину каждого слова,а не всей строки
AHTuBuPyC
0 / 0 / 0
Регистрация: 16.01.2010
Сообщений: 4
16.01.2010, 06:43  [ТС]     Строки, работа с файлами и массивами строк #3
Скора будет разрыв мозга (с вечера 15 числа сижу лабы делаю ...)
СПАСИБО ТЕБЕ ОГРОМНОЕ!
щаз попытаюсь пошаманить может сделаю то что требуют от меня...
Если не сложно глянь плиз со строками, первая лаба в этой теме...
vet
 Аватар для vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
16.01.2010, 07:00     Строки, работа с файлами и массивами строк #4
Цитата Сообщение от AHTuBuPyC Посмотреть сообщение
Лаба 1(строки):
Дан текст, найти наибольшее количество идущих подряд букв.
У меня не совсем так.
Прога подсчитывает ВСЕ символы включая и пробелы вплоть до уникального символа, у меня эт # из текстового файла file.txt и выводит результат в out.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
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cmath>
using namespace std;
 
 
long m=410000;
double d=0.1;
 
ifstream ifs("file.txt");
ofstream out("out.txt"); 
//ofstream am_inf("Amount_of_the_information.txt");   
void Am_inf()
{
     
    char a[m];
    int b[m];
 
    int i = 0;
    bool flag;
    for(int n = 0; n < m; n++)
    b[n] = 0;
    char ch;
    int count = 0;
  
    while(ifs)
    { 
        ifs >> ch;
        for(int j = 0; j < i; j++)
        {
            if(ch == a[j])
            {
               // cout << a[j];      
                b[j]++;
                flag = true;
                break;
            }
        }
       if(!flag)
        {
            a[i] = ch;
           // cout << a[i];
            b[i++]++;
        }
        flag = false;
        count++; 
    }
      cout << count-2 << "\n";
    if(i<m)
        a[i] = '#';
        i = 0;
        int count1 = 0;
      while(a[i]!='#'&& a[i]<m)
    {          
        out << a[i] << " - " << b[i] << endl;
       
        //am_inf << a[i]  << " - " << P << " - " << H << endl;
 
        i++;
        count1++;
 
       // A++;
    }
  //  HH = H/(count-2);
  //  am_inf << "êîë-ГўГ® ГЁГ*Гґ ГЁ ñðåäГ*ГҐГҐ êîë-ГўГ® ГЁГ*Гґ äëÿ ГЎГіГЄГў: " 
  //  << H << " - " << HH << "\n" <<  endl;
     cout << "\n" << count1;
 
}
 
 
main()
{
      Am_inf();
      
      cin.get();
}
Yandex
Объявления
16.01.2010, 07:00     Строки, работа с файлами и массивами строк
Ответ Создать тему
Опции темы

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