Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> добрые люди помогите с лабой пожалуста 
:(
    Опции темы
diden
  Дата 22.5.2008, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 22.5.2008

Репутация: нет
Всего: нет




 ! 
archimed7592
Не забываем пользоваться кнопкой "Код" или тэгами [code=xxx][/code]
Не забываем форматировать код, чтобы читать было не противно!

1.Исходный текст записан на странице с числом символов в строке L.  
Переписать его на страницу с числом символов в строке M.Слова не разрывать.  
Считать, что текст помещается на странице целиком.  
Код


#include <iostream.h>
#include <conio.h>
void main()
{
    int n,l,k,t,L,M,i,j;
     cout<<"pa3Mep:";
     cin>>n;

     cout<<"M";
     cin>>M;
     cout<<"L";
     cin>>L;

     char **A,**B;
     A=new char*[n];
     for(i=0;i<L;i++)
     A[i]=new char[L];
     for(i=0;i<L;i++)
     for(j=0;j<L;j++)
     cin>>A[i][j];// это я массив ввожу 
    
     t=0;
     for(i=0;A[i]!='0';i++)
     for(j=0;A[j]!='0';j++)
     t++;//вот тут у меня большие вопросы,так как этим циклом я хотел посчитать количество введенных символов в массив А

     B=new char*[n];
     for(i=0;i<n;i++)
     B[i]=new char[M];
     k=M%t;
     l=t-k*M;
     A[i][j]=B[k][l];
     for(i=0;i<n;i++)
     for(j=0;j<n;j++)
     cout<<B[k][l];
     }



я кое че сам написал но не знаю правильно ли,основное чего там нету это функции чтоб копировать слова без разрыва,помогите будьте добры smile 

Это сообщение отредактировал(а) diden - 22.5.2008, 19:59
PM MAIL   Вверх
rrrFer
Дата 22.5.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



diden
используешь i,j без обьявления,
и еще вот:
Цитата
Код

cin>>M;
//...
A[i]=new char[m];

то бишь регистр...
------------------------------------------
и еще подпиши коммент к переменным, непонятно какая для чего
------------------------------------------
а это что?:
Код

    for(i=0;i<L;i++)
        A[i]=new char[M];
    for(i=0;i<L;i++)
        for(j=0;j<L;j++)
            cout<<A[i][j]<<"";
            cin>>A[i][j];

т.е. ну ладно пусть ты выделил в первом цикле память под массив, а во втором ты его уже выводишь?, а еще удивительно когда ты пишешь
Цитата
cin>>A[i][j];
, еслибы ты отформатировал код, такие опечатки сразу бы всплыли. Или я задание не понял?

Это сообщение отредактировал(а) rrrFer - 22.5.2008, 19:39
PM MAIL WWW ICQ   Вверх
diden
  Дата 22.5.2008, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



Цитата(rrrFer @ 22.5.2008,  19:28)
еслибы ты отформатировал код



немного подправил

Это сообщение отредактировал(а) diden - 22.5.2008, 20:05
PM MAIL   Вверх
mrbrooks
Дата 22.5.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



честно говоря я вообще ничерта не понял что нужно сделать  smile 
PM MAIL   Вверх
diden
Дата 22.5.2008, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



Прикольно да?так это у меня одна из двух задач входящих в лабу.А я не на программиста учусь,а на инженера по системам управления,первый курс,а мне вот не смешно smile 
PM MAIL   Вверх
jonie
Дата 22.5.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



а что системы управления управляются всегда людьми? о_О
Цитата

Код

     A=new char*[n];
     for(i=0;i<L;i++)
         A[i]=new char[L];
     for(i=0;i<L;i++)
         for(j=0;j<L;j++)
             cin>>A[i][j];// это я массив ввожу 

(ширина и высота могут не соотвествовать тому что ты введешь (например если введешь разные числа).

Цитата

так это у меня одна из двух задач входящих в лабу.
типа "написать код который 100% приведет к ошибкам, использовать анти-паттерн таинственный код (также стараться использовать анти-паттерн спагетти код)" ?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
diden
  Дата 22.5.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



Цитата(jonie @  22.5.2008,  22:54 Найти цитируемый пост)
(ширина и высота могут не соотвествовать тому что ты введешь (например если введешь разные числа).

так я сразу ввожу одно для двух массивов n-тоесть высоту или количество строк,а количество столбцов разное

Цитата(jonie @  22.5.2008,  22:54 Найти цитируемый пост)
типа "написать код который 100% приведет к ошибкам, использовать анти-паттерн таинственный код (также стараться использовать анти-паттерн спагетти код)" ? 

чавой? smile 
нет 2я задача у меня уже можно сказать готова,а с этой долблюсь уже 3 недели,еще и преподша молодая нихрена не шарит блин,уже раза вводила меня в заблуждение иза своих скромных знаний наверное
PM MAIL   Вверх
rrrFer
Дата 23.5.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



diden
что сделать то надо напиши нормально?
Цитата

немного подправил

где ты подправил?

Это сообщение отредактировал(а) rrrFer - 23.5.2008, 16:09
PM MAIL WWW ICQ   Вверх
diden
Дата 23.5.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



кароче,нужно с одного массива скопировать текст в другой массив,причем массивы разной длины.
Поэтому мы вместо копирования A[i][j]=B[i][j];приминяем копирование   A[i][j]=B[k][l];
где k=M%t  а l=t-k*M;t-количество введеных символов,хотя я сомниваюсь что счетчик правильный

и все,но я не знаю должно ли оно работать,есть идея копировать по словам,но как это сделать?например ввел слово в один массив,скопировал в другой и т.д.
И исчо слова не разрывать...
PM MAIL   Вверх
rrrFer
Дата 23.5.2008, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



diden
Цитата
слова не разрывать...

всмысле без пробелов?
Цитата

k=M%t

эту формулу тебе по заданию дали? и что такое t? у тебя такой переменной даже в программе нету

Это сообщение отредактировал(а) rrrFer - 23.5.2008, 19:15
PM MAIL WWW ICQ   Вверх
bronislav
Дата 23.5.2008, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



Делать было нечего - написал. Будут вопросы пиши.

Код

#include <iostream>
#include <fstream>
#include <list>

int main()
{
    std::list<std::string> words;
    
    unsigned int l = 0, m = 0;
    std::cout << "m: ";
    std::cin >> m;
    
    // чтение производим из файла
    
    std::ifstream data;
    data.open( "test.txt" );
    
    // временная переменная для чтения слов по отдельности
    char* temp = new char [l];
    
    int numW = 0;
    
    while( !data.eof() )
    {
     //data.getline(temp,l);
     data >> temp;
     words.push_back( temp );
     numW++;
     std::cout << "numW = " << numW << " " << temp << std::endl;
    }
    
    data.close();
    
    // теперь пишем файл по m символов в строке
    std::ofstream result;
    result.open( "res.txt" );
    // количество свободных символов в текущей строке
    unsigned int currentLength = m;
    int numStr = 0;
    for(std::list< std::string >::iterator _I = words.begin();
    _I != words.end(); _I++)
    {
     if( _I->size() > currentLength )
     {
         if( currentLength == m )
         {
             std::cout << "Error!" << std::endl;
             return 0;
         }
         result << "\n";
         numStr++;
         std::cout << "num str: " << numStr << std::endl;
         // что бы на следующем витке использовать то же слово
         _I--;
         currentLength = m;
         continue;
     }
     else
     {
         result << _I->c_str();
         currentLength -= _I->size();
         if( currentLength >= 1 )
         {
             result << " ";
             currentLength--;
         }
     }
    }
    
    result.close();
    
    return 0;
}




--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
diden
  Дата 23.5.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



спасибо!ну ты даешь,правда я там фиг что понимаю почти но разберусь,еще раз спасибо земляк,я тоже с донецка.
PM MAIL   Вверх
bronislav
Дата 24.5.2008, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



Цитата(diden @  23.5.2008,  19:41 Найти цитируемый пост)
правда я там фиг что понимаю почти


Ну тогда пошагово.
Только пожалуйста, напиши понятно ли тебе мое объяснение и если не понятно, то что конкретно. Для меня это важно.

Подключаем заголовояные файлы для потокового вводы/вывода, файлового ввода/вывода, работы сосписками.
Код

#include <iostream>
#include <fstream>
#include <list>


Объявляем переменные:
words - список из строк (каждая строка - отдельное слово)
l - максимальное количество символов в строке исходного файла
m - максимальное количество символов в строке результирующего файла

Код

int main()
{
    std::list<std::string> words;
    
    unsigned int m = 0, l = 0;

Вводим l и m:
Код

    std::cout << "l: ";
    std::cin >> l;
    std::cout << "m: ";
    std::cin >> m;

Чтение данных, будем производить из файла. Для этого объявляем файловый поток ввода и производим открытие файла.
Код

    std::ifstream data;
    data.open( "test.txt" );

Временная переменная для чтения по одному слову. Максимальная длина слова - длина строки исходного файла.
Код

    // временная переменная для чтения слов по отдельности
    char* temp = new char [];

С помощью цикла, читаем файл пока не дстигнут конец файла. Читаем по одному слову и помещаем их в конец списка.
Код

    while( !data.eof() )
    {
       data >> temp;
       words.push_back( temp );
    }
    
    data.close();

Теперь открываем файловый поток вывода, для вывода результатов.
Код

    // теперь пишем файл по m символов в строке
    std::ofstream result;
    result.open( "res.txt" );

Собственно сам вывод.
Просматриваем список по елементно и проверяем: если можно поместить слово в текущую строку, то помещаем, если нет, то проверяем не длинее оно всей строки, если длиннене - генерируем ощибку.
Код

    // количество свободных символов в текущей строке
    unsigned int currentLength = m;

    for(std::list< std::string >::iterator _I = words.begin();
    _I != words.end(); _I++)
    {
     if( _I->size() > currentLength )
     {
         if( currentLength == m )
         {
             std::cout << "Error!" << std::endl;
             return 0;
         }
         result << "\n";
         numStr++;
         std::cout << "num str: " << numStr << std::endl;
         // что бы на следующем витке использовать то же слово
         _I--;
         currentLength = m;
         continue;
     }
     else
     {
         result << _I->c_str();
         currentLength -= _I->size();
         if( currentLength >= 1 )
         {
             result << " ";
             currentLength--;
         }
     }
    }
    
    result.close();
    
    return 0;
}
 

P.S. Вот и все.
std:: - указвает на то, что элемент из пространства имен std.


Это сообщение отредактировал(а) bronislav - 24.5.2008, 10:12


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
diden
Дата 24.5.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



пока все понятно,кстати для какой среды это пога?для вижуал 2005?
PM MAIL   Вверх
jonie
Дата 24.5.2008, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



прога для языка С++ редакции 2003года. компилятор пофиг какой. это проблемы компилятора)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0926 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.