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

Лаба по С++ - C++

Восстановить пароль Регистрация
 
Jakubovsky
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 22
25.05.2011, 01:08     Лаба по С++ #1
Дана последовательность прописных (больших) латинских букв. После каждой буквы вставить первую букву
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2011, 01:08     Лаба по С++
Посмотрите здесь:

Лаба C++
Лаба C++
C++ Лаба по С++.
C++ лаба по массивам
Матрицы. Лаба C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
25.05.2011, 01:19     Лаба по С++ #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <string>
#include <iostream>
 
int main()
{
    std::string string;
    std::cin >> string;
    for(std::string::iterator iter = string.begin(); iter != string.end(); ++iter)
    {
       iter = string.insert(++iter, *string.begin());
    }
    std::cout << string << '\n';
}
Jakubovsky
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 22
25.05.2011, 01:25  [ТС]     Лаба по С++ #3
вы просо гений
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
25.05.2011, 01:29     Лаба по С++ #4
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <string>
#include <iostream>
 
int main()
{
    std::string string;
    std::cin >> string;
    for(std::string::iterator iter = string.begin(); iter != string.end(); ++iter)
    {
       iter = string.insert(++iter, *string.begin());
    }
    std::cout << string << '\n';
}
Вопрос автору.
1. В процессе цикла изменяется условие окончание цикла - увеличивается размер строки.
2. Как насчет валидности итератора после вставки?
Jakubovsky
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 22
25.05.2011, 01:45  [ТС]     Лаба по С++ #5
Дана последовательность строчных (маленьких) латинских букв.
1. Определить, каких букв в ней больше: гласных или согласных.

Добавлено через 14 минут
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Вопрос автору.
1. В процессе цикла изменяется условие окончание цикла - увеличивается размер строки.
2. Как насчет валидности итератора после вставки?
а как тогда на основе этого кода выполнить следующее?


прочитать строки с текстового файла и реализовать их обработку, как указано в варианте. Исходные данные задать самостоятельно, учитывая специфику конкретного варианта. Количество строк в файле может быть произвольным. Одна строка должно содержать не более 255 символов.
Результат обработки текста вывести в выходной текстовый файл.
В программе должны быть предусмотрены подпрограммы ввода элементов из файла, их обработки и вывода результатов.
Предусмотреть сообщение для пустого файла и обработать ошибку при указании имени несуществующего файла.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
25.05.2011, 01:53     Лаба по С++ #6
ValeryLaptev, Увеличивается.
Валидность? Ну ок как бэ возвращается.
grindaah
20 / 20 / 0
Регистрация: 25.05.2011
Сообщений: 62
25.05.2011, 02:40     Лаба по С++ #7
этот код не будет работать: после первой итерации работает неправильно.
Валидность? Ну ок как бэ возвращается.
ваще не понятный ответ.. какой ok?

тем не менее, данный ответ требует минимальных усилий, чтобы его переправить в рабочий
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <string>
#include <iostream>
#include <conio.h>
 
int main()
{
    std::string string;
    std::cin >> string;
    std::string result;
    for(std::string::iterator iter = string.begin(); iter != string.end(); ++iter)
    {
        result = result + *string.begin() + *iter;
    }
    std::cout << string << '\n';
    std::cout << result << '\n';
    _getch();
    return 0;
}
Jakubovsky
Насчет работы с файлами вообще имхо нескромный вопрос, вы уж сами-то хоть что-то сделайте, а там глядишь и помочь не жалко
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
25.05.2011, 02:44     Лаба по С++ #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
 
int main()
{
    std::cout << "string: ";
    std::string s;
    std::cin >> s;
 
    for(std::string::size_type i = 0; i < s.length(); i+=2)
        s.insert(i, 1, s[i]);
 
    std::cout << s << '\n';
 
    return 0;
}
Jakubovsky
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 22
25.05.2011, 02:48  [ТС]     Лаба по С++ #9
Цитата Сообщение от grindaah Посмотреть сообщение
Jakubovsky
Насчет работы с файлами вообще имхо нескромный вопрос, вы уж сами-то хоть что-то сделайте, а там глядишь и помочь не жалко
Вот сидим колдуем
grindaah
20 / 20 / 0
Регистрация: 25.05.2011
Сообщений: 62
25.05.2011, 03:35     Лаба по С++ #10
Jakubovsky, похвально
там в моем примере строка #include "stdafx.h" вам естественно не пригодится и даже помешает если что
Jakubovsky
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 22
25.05.2011, 07:18  [ТС]     Лаба по С++ #11
Цитата Сообщение от grindaah Посмотреть сообщение
Jakubovsky, похвально
там в моем примере строка #include "stdafx.h" вам естественно не пригодится и даже помешает если что
а как его заставить чтоб он только буквы читал а цифры нет?

Добавлено через 1 час 19 минут
все я сдался...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <string>
#include <iostream>
 
int main()
{
    std::string string;
    std::cin >> string;
    for(std::string::iterator iter = string.begin(); iter != string.end(); ++iter)
        {
       iter = string.insert(++iter, *string.begin());
        }
    std::cout << string << '\n';
system("pause");    
}
как теперь сделать так, чтоб получилось следующие:


прочитать строки с текстового файла и реализовать их обработку, как указано в варианте. Исходные данные задать самостоятельно, учитывая специфику конкретного варианта. Количество строк в файле может быть произвольным. Одна строка должно содержать не более 255 символов.
Результат обработки текста вывести в выходной текстовый файл.

Добавлено через 1 час 26 минут
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
#define MAX_LENGTH 100
#define MAX_STR 255
 
using namespace std;
 
 
bool res_file(const char *,const char *);
 
int main ()
{
 char filename_IN[MAX_LENGTH],filename_OUT[MAX_LENGTH];
 cout<<"Input IN_file name-->";
 cin.getline(filename_IN,MAX_LENGTH);
 cout<<"Input OUT_file name-->";
 cin.getline(filename_OUT,MAX_LENGTH);
 res_file(filename_IN,filename_OUT);
}
 
bool res_file(const char *in_f,const char *out_f)
{
 ifstream fin(in_f);
 ofstream fout(out_f);
 if((!fin)||(!fout))
  return 0;
 char str[MAX_STR];
 while(!fin.eof())
 
 {
        fin>>str;
                
        
//что сюда вписать?
 
    }
    fin.close();
    fout.close();
    return 0;
    system("pause");
}
Добавлено через 50 минут
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
#define MAX_LENGTH 100
#define MAX_STR 255
 
using namespace std;
std::string pervaja;
 
bool res_file(const char *,const char *);
 
int main ()
{
 char filename_IN[MAX_LENGTH],filename_OUT[MAX_LENGTH];
 cout<<"Input IN_file name-->";
 cin.getline(filename_IN,MAX_LENGTH);
 cout<<"Input OUT_file name-->";
 cin.getline(filename_OUT,MAX_LENGTH);
 res_file(filename_IN,filename_OUT);
 system("pause");
}
 
 
bool res_file(const char *in_f,const char *out_f)
{
 ifstream fin(in_f);
 ofstream fout(out_f);
 if((!fin)||(!fout))
  return 0;
 char str[MAX_STR];
 
 while(!fin.eof())
 {
    fin>>str;
        int i=strlen(str);
        
 
 
        for(std::string::size_type i = 0; i < pervaja.length(); i+=2)
        pervaja.insert(i, 1, pervaja[i]);
    cout << pervaja << '\n';
    fout << pervaja << '\n';
 
        {
        for(std::string::iterator iter = pervaja.begin(); iter != pervaja.end(); ++iter)
    {
        pervaja = pervaja + *pervaja.begin() + *iter;
    }
    cout << pervaja << '\n'<< endl;
    fout << pervaja << '\n' << endl;
    
        return 0;
}
        
        
        
    }
    fin.close();
    fout.close();
    
    return 0;
    
    system("pause");
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
25.05.2011, 08:50     Лаба по С++ #12
grindaah,
этот код не будет работать: после первой итерации работает неправильно.
А конкретнее? У меня все сработало.

Добавлено через 2 минуты
grindaah, Кстати. Твой код работает не по заданию.
Дана последовательность прописных (больших) латинских букв.
12. После каждой буквы вставить первую букву
А твой вставляет перед)

Добавлено через 57 секунд
rangerx, Ну а у тебя просто буквы удваивает...

Добавлено через 13 минут
Вот так будет норм.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <string>
#include <iostream>
#include <conio.h>
 
int main()
{
    std::string string;
    std::cin >> string;
    std::string result;
    for(std::string::iterator iter = string.begin(); iter != string.end(); ++iter)
    {
        result = result + *iter + *string.begin();
    }
    std::cout << string << '\n';
    std::cout << result << '\n';
    _getch();
        return 0;
}
или так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
 
int main()
{
    std::cout << "string: ";
    std::string s;
    std::cin >> s;
 
    for(std::string::size_type i = 0; i < s.length(); i+=2)
        s.insert(i + 1, 1, s[0]);
 
    std::cout << s << '\n';
 
    return 0;
}
Jakubovsky
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 22
25.05.2011, 10:12  [ТС]     Лаба по С++ #13
кто поможет разобраться с файлами?
grindaah
20 / 20 / 0
Регистрация: 25.05.2011
Сообщений: 62
25.05.2011, 10:30     Лаба по С++ #14
ForEveR, согласен, задание невнимательно дочитал, потому и твое решение неправильным назвал
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2011, 11:39     Лаба по С++
Еще ссылки по теме:

C++ Лаба
C++ Лаба
Лаба C++

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

Или воспользуйтесь поиском по форуму:
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
25.05.2011, 11:39     Лаба по С++ #15
Цитата Сообщение от ForEveR Посмотреть сообщение
rangerx, Ну а у тебя просто буквы удваивает...
Ну, это я так задание внимательно прочитал Но смысл в том, что выкрутасы с итераторами здесь совершенно ни к чему. Зачем усложнять то, что можно сделать намного проще и нагляднее?
Yandex
Объявления
25.05.2011, 11:39     Лаба по С++
Ответ Создать тему
Опции темы

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