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

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

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

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

16.01.2010, 06:08. Просмотров 958. Ответов 3
Метки нет (Все метки)

Требуются срочная помощь зачет через 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++
Помогите пожалуйста :(:wall: Нужно написать программу, которая считывает текст из файла и записывает каждое слово в отдельный элемент...

Работа с файлами и массивами - C++
Всем привет, помогите сделать 2 програмки: 1) Нужна програмка каторая бы открывала текс( на английском языке, допустим) и все строки...

работа с файлами и массивами символов - C++
Написать прогу, что читает слова из файла и составляет рейтинг наиболее употребляемых слов. Пользоваться можно только массивами символов...

Работа с файлами, массивами и т.д.(2 задачи) - C++
Пропустил эту тему, теперь не могу ничего сделать... 4. Фирма имеет N магазинов. Информацию о доходе каждого магазина, за каждый месяц...

Работа со строками и с массивами строк - C++
Решил сделать программу , но не знаю как реализовать очень важную часть. Надо считывать координаты с файла(в текстовом файле есть к...

Обработка строк и работа с массивами - C++
Программисты, очень нужна ваша помощь!В понедельник сдавать работы а я в программировании не сильна...Очень буду благодарна за решение...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 числа сижу лабы делаю ...)
СПАСИБО ТЕБЕ ОГРОМНОЕ!
щаз попытаюсь пошаманить может сделаю то что требуют от меня...
Если не сложно глянь плиз со строками, первая лаба в этой теме...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2010, 07:00     Строки, работа с файлами и массивами строк
Еще ссылки по теме:

Работа с файлами C++. Подсчёт строк. - C++
Здравствуйте. Есть функция для подсчёта строк в файле. Выглядит она следующим образом: int count_string(FILE *file) { char...

Обработка строк и работа с файлами... - C++
Работа с обработкой строк и работу с файлами средствами языка Си. Исходный текст должен содержаться в одном файле, результат — во втором...

Работа с файлами. Запись и чтение строк - C++
Добавляю строку в файл &quot;text.txt&quot; а потом пытаюсь получить количество строк в этом файле.. Проблема заключается в том что добавляю...

Работа с двумерными массивами ( Определить: количество столбцов, номер строки) - C++
Дана целочисленная прямоугольная матрица. Определить: 1. Количество столбцов, содержащих хотя бы один отрицательный элемент. 2. Номер...

Работа с файлами(не строки) - C++
Не подскажите операторы для работы с файлами. То есть мне нужно вводить в файл элементы(int например) (я знаю что через ifstream), и ЧЕРЕЗ...

Строки и работа с файлами - C++
Дан текст в файле input.txt. Проверяет чтобы после каждой точки предложение начиналось с большой буквы.Корректный текст записывает в файл...


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

Или воспользуйтесь поиском по форуму:
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     Строки, работа с файлами и массивами строк
Ответ Создать тему
Опции темы

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