Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

16.01.2010, 06:08. Просмотров 978. Ответов 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;
                        }
                }
        }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2010, 06:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки, работа с файлами и массивами строк (C++):

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

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

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

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

Работа с массивами строк - C++
Необходимо создать массив строк на 100 элементов: char* szArray. Можно ли к этой записи добавить параметр размера строк, чтобы не объявлять...

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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