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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с задачкой на C/C++ 
:(
    Опции темы
Ksu
Дата 24.4.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброе время суток!  smile 
Помогите пожалуйста решить следующую задачку:
Написать программу, которая позволяет выполнять заполнение столбцов таблицы либо числовыми последовательностями, либо элементами списков. (Аналогия функции "протаскивания" пакета Excel). В таблице указывается начальный элемент, затем вызывается окно со списками и параметрами прогрессий. Выбирается конечный столбец и параметры. После подтверждения выбора окно с параметрами исчезает и происходит заполнение столбцов таблицы. 
Можно совсем-совсем простенько  smile 
В аттаче описание алгоритма и интерфейс, которые уже зачли..  smile 
Осталось написать саму программку.. ПОМОГИТЕ ПОЖАЛУЙСТА блондинке  smile... Заранее ОГРОМНОЕ СПАСИБО...  

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  ______.rar 14,91 Kb
PM MAIL   Вверх
nostromo
Дата 24.4.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Милый, милый Людоед, смилуйся над нами,
Мы дадим тебе конфет, чаю с сухарями,
Но ответил Людоед
   Неееееееет!

(Настроение сегодня какое-то ...)

Добавлено @ 11:01 
P.S. В задании много скучной рутины, может, спросите что-то поконкретнее? 
--------------------
На пыльных тропинках далеких планет останутся наши следы.
PM MAIL   Вверх
Ksu
Дата 24.4.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да согласна.. )
Тогда первый вопрос: 
В файле записаны дни недели и месяца, как их записать в 2 массива?..  smile 
Т.е. сначала записаны пн,вт,ср,..,вс название каждого дня недели с новой строки, а потом идут названия месяцов.. 
PM MAIL   Вверх
nostromo
Дата 24.4.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Наверное, лучше не мелочиться и сразу сделать один класс для списка и второй --- для управления всеми списками. 
Например, как-то так:

Код

#include <iostream>
#include <fstream>
#include <vector>
#include <string>

typedef std::vector<std::string> vector_s;

// Класс для одного списка
class CircularList
{
public:
    CircularList(){};

    CircularList(vector_s list)
    {
        data = list;
        current_pos = data.begin();
    };

    ~CircularList(){};

    // находит следующий элемент для текущей строки
    // и устанавливает найденный элемент в качестве текущего
    std::string nextFor(const std::string &str)
    {
        vector_s::iterator iter = find(data.begin(), data.end(), str);
        if (iter == data.end())
            return "";

        current_pos = iter;
        return *iter;
    }

    // возвращает следующий элемент списка
    std::string next(void)
    {
        current_pos++;
        if (current_pos == data.end())
            current_pos = data.begin();
        return *current_pos;
    }

protected:
    vector_s data; //собственно, список слов
    vector_s::iterator current_pos; // текущая позиция в списке
};


typedef std::vector<CircularList> Lists;

// Менеджер списков
class ListManager
{
public:
    // инициализируем из файла список списков 
    void readFromFile(const std::string &fname); 

    // находит следующий элемент для текущей строки
    // и устанавливает соответствующий список в качестве текущего
    std::string nextFor(const std::string &str) 
    {
        std::string res = ("");
        Lists::iterator iter = data.begin();
        for (; (res == "") && (iter != data.end()); ++iter)
        {
            res = iter->nextFor(str);
            currentList = iter;
        }
        return res;
    }

    // возвращает следующий элемент текущего списка
    std::string next(void) 
    {
        return currentList->next();
    }

protected:
    Lists data; // список списков
    Lists::iterator currentList; // текущий список
};




  

Это сообщение отредактировал(а) nostromo - 24.4.2006, 12:46
--------------------
На пыльных тропинках далеких планет останутся наши следы.
PM MAIL   Вверх
Ksu
Дата 24.4.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Это всё, конечно, здорово   smile  и БОШОЕ спасибо за труд.
Но мой препод никогда в жизни не поверит, что я до такого додумалась  smile. Поэтому, если не трудно напишите пожалуйста как можно проще всего реализовать копирование строк из файла в 2 массива.  smile  
PM MAIL   Вверх
nostromo
Дата 24.4.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



В каком виде Вы хотите представить массив строк:
1. char **
2. std::vector<char *>
3. std::vector<std::string>
4. Другой <впишите>
?

Использование потоков (ifstream, iostream) допустимо?
Или только FILE *file?
 
--------------------
На пыльных тропинках далеких планет останутся наши следы.
PM MAIL   Вверх
Ksu
Дата 24.4.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Массив строк будет представлен как char ** + FILE *file  smile 
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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