Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255

Ввод строки, содержащей несколько слов.

20.12.2011, 00:09. Показов 3478. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, необходимо ввести строку, содержащую несколько слов из файла. Вот мой вариант:
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
#include "stdafx.h"
#include "conio.h"
#include "string"
#include "iostream"
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    struct slovo
    {
        string sl;
    };
    slovo mas[20];
    int i=0;
    string a,b,c;
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    do 
    {
        cin>>mas[i].sl;
        i++;
    } while(cin>>mas[i].sl);
    a="";
    for(int k=0;k<i;k++) a=a+mas[k].sl;
    cout<<a;
    return 0;
}
Исходный файл содержит строку: Hello, world! Let it snow!
Выходной файл: Hello,Letsnow!

Как видно, слова "world!" и "it" исчезли. Что не так?

Добавлено через 12 минут
Строки я склеиваю специально: a=a+mas[k].sl
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.12.2011, 00:09
Ответы с готовыми решениями:

В строке, содержащей несколько слов, разделенных пробелом, переставить слова в обратной последовательности
Задание 1 В строке, содержащей несколько слов, разделенных пробелом, переставить слова в обратной последовательности. Входные...

В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово
В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово. Входные данные: abcde fghik lmnop Выходные...

В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово
Нужно написать программу Задание: В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово. Входные...

9
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.12.2011, 00:12
Цитата Сообщение от BoBaH26 Посмотреть сообщение
Что не так?
все...начиная с того что намешан Си и С++ и заканчивая неправильными настройками опций проекта
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
20.12.2011, 00:13
BoBaH26, http://www.cplusplus.com/reference/string/getline/
1
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
20.12.2011, 00:23  [ТС]
easybudda, спасибо, посмотрю, но хотелось бы мой способ понять, как сделать условие, в зависимости от выполнения которого будет выполняться или не выполняться мой цикл.
Jupiter, а что собственно намешано? Просто я недавно С++ изучать начал. Можешь написать, что относится к С, а что к С++?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.12.2011, 00:31
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
#include "stdafx.h" //при создании проекта нужно ставить галку "Пустой проект"
#include "conio.h" //эта приблуда и ни Си и не С++, а черт знает что
#include "string" //стандартные хедеры подключают так:  #include <string>
#include "iostream" //аналогично #include <iostream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[]) //здесь эти аргументы main не нужны
{
    struct slovo
        {
                string sl; // string - это С++
        };
        slovo mas[20];
    int i = 0;
    string a,b,c;
//    freopen("input.txt","r",stdin);  - это функция Си
//    freopen("output.txt","w",stdout); - аналогично
        do 
        {
                cin>>mas[i].sl; //а тут уже используешь С++
                i++;
        } while(cin>>mas[i].sl);
        a="";
        for(int k=0;k<i;k++) a=a+mas[k].sl; //цикл в стиле С++
        cout<<a;//тоже С++
        return 0;
}
1
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
20.12.2011, 00:38  [ТС]
Спасибо. Все-таки С++ больше, чем С. А пишу в Microsoft Visual Studio 2010, отсюда и лишние аргументы в main(). #include "stdafx.h" - стандартна, пишется сама при создании нового проекта.
#include "conio.h" - позволяет использовать _getch(), чтобы ждать нажатия клавиши. Согласен, вместо нее лучше использовать endl. Пишу "" вместо <>, т.к. учили так, но знаю, что оба рабочие. Кроме freopen("input.txt","r",stdin); еще не знаю, как по-другому открывать поток для считывания и записи в файл.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.12.2011, 00:45
Цитата Сообщение от BoBaH26 Посмотреть сообщение
#include "stdafx.h" - стандартна, пишется сама при создании нового проекта.
вы не правильно создаете проект, надо ставить галочку пустой проект

Цитата Сообщение от BoBaH26 Посмотреть сообщение
#include "conio.h" - позволяет использовать _getch()
вместо этого используй
C++
1
2
#include <cstdio>
std::getchar();
или
C++
1
2
#include <iostream>
std::cin.get();
или
C++
1
2
#include <cstdlib>
std::system("pause");
Цитата Сообщение от BoBaH26 Посмотреть сообщение
Пишу "" вместо <>, т.к. учили так, но знаю, что оба рабочие.
вас неправильно учили, "" - используют для собственных хедер файлов - которые написали вы/ваш брат, сват.../одногрупник, <> - используют для стандратных хедер файлов, которые вы найдете везде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//построчно читает текст файла, выводит его на экран и записывает в файл
#include <string>
#include <fstream>
#include <iostream>
 
int main()
{
    std::string str;
    std::ifstream in("input.txt");
    std::ofstream out("output.txt");
    
    while (std::getline(in, str))
    {
        out << str;
        std::cout << str;
    }
 
    std::cin.get();
}
1
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
20.12.2011, 01:17  [ТС]
А какая функция есть в С++ для нахождения символа в строке? Строка задается как string, а не как char <name>[<kol-vo>]. Например, надо найти в строке b="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; i-й символ строки a. Делаю так:
Код C++
1
b.find(a.at(i))
Но работает неправильно.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.12.2011, 01:21
Цитата Сообщение от BoBaH26 Посмотреть сообщение
неправильно.
неправильно в вашем понимании это как?
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
20.12.2011, 01:52  [ТС]
Ну вот в этом цикле:
C++
1
2
3
4
5
6
7
for (int k=0;k<a.length();k++) 
    {
        if (b.find(a.at(k)))
            kolb++;
        if (c.find(a.at(k)))
            kolm++;
    }
kolb = 29, kolm = 30 в итоге.

Добавлено через 2 минуты
Строка а: Hello,world!Letitsnow!NewYear!
kolb - кол-во больших, kolm - кол-во маленьких.
b="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
c="abcdefghijklmnopqrstuvwxyz";

Добавлено через 25 минут
Ну так что делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.12.2011, 01:52
Помогаю со студенческими работами здесь

Поиск строки, содержащей наибольшее количество слов, начинающихся с гласной буквы
помогите с алгоритмом. а то я что то никак не въеду как делать

Строки. Ввод слов
Необходимо реализовать ввод последовательности, содержащей слова, в каждом из которых от 2 до 5 прописных (больших) латинских букв,...

Возвести в квадрат строки матрицы между строкой, содержащей min и строкой, содержащей max элементы
Ввести двумерный массив A n*m, вывести его. Возвести в квадрат все строки которые расположены между строкой максимума и минимума этой...

Не вводятся строки содержащие несколько слов
Подскажите вот ввожу текст так &quot;Привет&quot;, всё норм а когда ввожу типа &quot;Привет всё норм&quot; через пробел получается на скрине, как...

Ввод строки из нескольких слов в fscanf
Здравствуйте, Имеется необходимость хранить в одном элементе структуры строки, состоящие из нескольких слов. #include &lt;math.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru