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

Разбивка на лексемы и состовление из лексем строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Visual Studio - ошибка в функции scanf http://www.cyberforum.ru/cpp-beginners/thread560203.html
Задумал решить задачку.Вася не любит английский язык, но каждый раз старается получить хотя бы четверку за четверть, чтобы оставаться ударником. В текущей четверти Вася заметил следующую закономерность: по нечетным дням месяца он получал тройки, а по четным – четверки. Так же он помнит, в какие дни он получал эти оценки. Поэтому он выписал на бумажке все эти дни для того, чтобы оценить, сколько у...
C++ Перевести символ верхнего регистра в нижний и наоборот Подскажите, что не так: нужно введенную строку преобразовать так: символы верхнего регистра в символы нижнего регистра, и наоборот, а цифры(десятичные знаки) не печатать, строка читается до символа @. #include "stdafx.h" #include <iostream> #include <cctype> using namespace std; int main() { setlocale(LC_ALL, "Russian"); http://www.cyberforum.ru/cpp-beginners/thread560202.html
Матрицы: найти максимальную сумму элементов строк матрицы C++
Лабораторная работа № 7 Функции Цель работы: изучение правил составления и использования функций в программах на С++. Пример Задание. Найти максимальную сумму элементов строк матрицы 3×5 с использованием функций. Пример программы: #include <stdio.h> const int m=3, n=5;
C++ прошу помощи, не могу найти ошибку
#include<iostream> #include<conio.h> #include<stdlib.h> #include<stdio.h> #include<time.h> using namespace std; void draw_line(int n,char ch); void board(); void gamescore(char name1,char name2,int p1, int p2); void play_dice(int &score);
C++ Рекурсивные деревья http://www.cyberforum.ru/cpp-beginners/thread560172.html
День добрый. Очень нужна помощь в решении задачи: Найти все поддеревья, структура которых совпадает с заданной. Ввод/Создание/Вывод/...дерева написать труда не составило. С рекурсией и прочим тоже никаких вопросов. А вот с основным заданием возникла проблема. Как я понимаю, нужно сравнивать количество сыновей введённой структуры и исходного дерева, перемещаясь сверху-вниз по...
C++ Нужна программа которая считает угол между двумя заданными векторами (по координатам) Помогите. Нужна программа которая считает угол между двумя заданными векторами (по координатам) подробнее

Показать сообщение отдельно
Corvette
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
28.04.2012, 12:15     Разбивка на лексемы и состовление из лексем строк
Мне уже пользователи форума уже помогли. Ну есть еще маленькая проблема. Стоит задача считать текстовый файл с учетом пробелов между словами. Потом записать этот фрагмент в файл который состоит из 7 строк и содержит в каждой строке по 40 символов.
Вот к примеру исходный файл:
Си (англ. C) — стандартизированный процедурный язык программирования. Си был создан для использования в операционной системе UNIX.
С тех пор он был портирован на многие ОС.

Код
#include <iostream>
#include <fstream>
#include <clocale>
using namespace std;
 
const int size1 = 7;
const int size2 = 40;
 
int main ()
{
    setlocale (LC_ALL, "Russian");
    ifstream in ("file.txt");
    
    char A [size1][size2] = {{0}};
    char token [size1][size2] = {{0}};
    
    for (int y = 0; y < size1; y++)
        for (int i = 0; i < size2; i++)
            in.get(A [y][i]);
    
    for (int y = 0; y < size1; y++)
    {
        for (int i=0; A[y][i] = '\n' && i<size2; i++) 
        {
        token [y][i] = A [y][i];
        cout << token [y][i];    
        cout << endl;
        }
        } 
   
    in.close();
    system("pause");
    return 0;
}
В результате я получаю:
Си (англ. C) — стандартизированн
ый процедурный язык программиров
ания. Си был создан для использо
вания в операционной системе UNI
X.
С тех пор он был портирован н
а многие ОС.

Как можно сделать так чтобы если слово не помещаться в строчку, то оно переноситься на следующею. То есть чтобы слово стандартизированный не было разорвано и не встречались переносы в тексте.

Добавлено через 2 часа 39 минут
Что у ни кого нету ни каких соображений по этому поводу?

Добавлено через 17 часов 28 минут
На лексемы вроде разбил. Теперь осталось эти лексемы записать в строки длинной 50. С условием что если слово не помещаться в данную строчку то перенести его целиком на следующею. Переносы и разрывы слов не допускаются. Помогите пожалуйста, заранее спасибо.
Код
#include <iostream>
#include <fstream>
#include <clocale>
using namespace std;
 
const int size2 = 1000;
 
int main ()
{
    setlocale (LC_ALL, "Russian");
    ifstream in ("file.txt");
    
    char str [size2] = {0};
    char token [size2]= {0};
    int i,j;
        for (int r = 0; r < size2; r++)
            in.get(str [r]);
    
        for (int r=0; r<size2; r++)  cout << str [r];
        cout << endl;
    
   for (i=0;;i++){
       for (j=0; str[i]!=' ' && str[i]; j++, i++)
       token [j] = str [i];
       token [j] = ' \0';
       cout << token << endl;
       if (!str[i]) break;
       }
       
    in.close();
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru