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

7 и 4 поочередно - C++

Восстановить пароль Регистрация
 
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
27.05.2013, 08:14     7 и 4 поочередно #1
Столкнулась с такой проблемой. Есть файл с данными. В нем например 11 строчек. Из них нужно прочитать только 7 но желательно чтобы строки не были соседними.
Код
1 2 3 4 5 6 7 8 9 10
// например так:
1 2 3 _ 5 _ 7 8 9 _
// или так:
1 2 _ 4 5 _ 7 8 _ 10
подскажите алгоритм такой сортировки.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 08:14     7 и 4 поочередно
Посмотрите здесь:

C++ просматривая поочередно элементы диагоналей двумерного массива
C++ Переписать поочередно элементы главной и побочной диагоналей матрицы в массив
Дано 2 тестовых файла . Получить 3-й который содержит поочередно строки из 2-х файлов C++
C++ Требуется прочитать поочередно цифры из файла
C++ Дано два файла. Получить третий, содержащий поочередно строки исходных двух файлов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
27.05.2013, 08:30     7 и 4 поочередно #2
А в чем проблема?
Читайте строки в промежуточную переменную,
а потом проверяйте, нужна ли текущая строчка.
Если нужна - копируйте в массив результата.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
27.05.2013, 08:54  [ТС]     7 и 4 поочередно #3
Цитата Сообщение от zss Посмотреть сообщение
А в чем проблема?
Читайте строки в промежуточную переменную,
а потом проверяйте, нужна ли текущая строчка.
Если нужна - копируйте в массив результата.
нет, так не годится, потому что нельзя поверить нужна ли строка или нет (строки одинаковые) и может быть, что в файле не 11 строк, а например 30000, и читать нужно блоками например по 23 строки, из которых например нужны только например 15...

То есть нужно из N строк выбрать любые M строк, так чтобы соседних строк было минимум.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
27.05.2013, 09:06     7 и 4 поочередно #4
Уточните критерий, по которому нужно отбрасывать строки.
Что Вы подразумеваете под соседними?
LiquidSnake
55 / 55 / 1
Регистрация: 06.02.2013
Сообщений: 315
27.05.2013, 09:06     7 и 4 поочередно #5
zss я так понял как раз и имеет в виду - берёте очередную строку а потом случайным образом определяете нужна она или нет
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
27.05.2013, 09:18  [ТС]     7 и 4 поочередно #6
Цитата Сообщение от zss Посмотреть сообщение
Уточните критерий, по которому нужно отбрасывать строки.
Что Вы подразумеваете под соседними?
хорошо, рассмотрим на примере массива целых чисел

C++
int Z[10000] = {0};
 
int N = 23;
 
for(int i=0; i<10000; i+=N)
{
    for(int k=0; k<N; k++)
    {
        // выбрать M элементов.
        // так чтобы соседних было как можно меньше
    }
}
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
27.05.2013, 09:47     7 и 4 поочередно #7
Цитата Сообщение от programina Посмотреть сообщение
// так чтобы соседних было как можно меньше
И все-таки, что подразумеваете под соседними?
Их равенство (z[i]==z[i+1])?
Или почему не подходит выбор
Z[i+k],Z[i+k+2],Z[i+k+4],Z[i+k+6],....
(Пропущено N-M элементов через один)
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
27.05.2013, 09:50  [ТС]     7 и 4 поочередно #8
Цитата Сообщение от zss Посмотреть сообщение
И все-таки, что подразумеваете под соседними?
Их равенство (z[i]==z[i+1])?
(i+1) - i == 1
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
27.05.2013, 09:55     7 и 4 поочередно #9
Цитата Сообщение от programina Посмотреть сообщение
(i+1) - i == 1
Это тождество (i сокращается)
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
27.05.2013, 10:10  [ТС]     7 и 4 поочередно #10
Цитата Сообщение от zss Посмотреть сообщение
И все-таки, что подразумеваете под соседними?
Их равенство (z[i]==z[i+1])?
Или почему не подходит выбор
Z[i+k],Z[i+k+2],Z[i+k+4],Z[i+k+6],....
(Пропущено N-M элементов через один)
потому что в случае с N=23, а M=15 такое не прокатит.
Код
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

// получится только 12 элементов:

0 2 4 6 8 10 12 14 16 18 20 22

// эти 3 элемента надо равномерно распределить 
// между 12-ю элементами, например так, что бы 
//их стало 15 штук:

0 2 4 (5) 6 8 10 (11) 12 14 16 (17) 18 20 22
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
27.05.2013, 10:35     7 и 4 поочередно #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от programina Посмотреть сообщение
но желательно чтобы строки не были соседними
Берем общее кол-во (N) , делим на число, которое должно быть в итоге (M). Получаем шаг, с которым нужно выбирать элементы. И всё.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>
 
int main()
{
    const int N = 23;
    const int M = 15;
    int a[N];
 
    for( int i=0; i<N; ++i ) a[i] = i;
 
    double step = N/static_cast<double>(M);
 
    for( double i=0; i<N; i+=step ) std::cout << a[static_cast<int>(i)] << " ";
    std::cout << std::endl;
 
    std::system( "pause" );
}
Если я правильно понял задание.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2013, 10:46     7 и 4 поочередно
Еще ссылки по теме:

C++ Visual Studio: поочередно выделить каждое слово текста, начинающееся на согласную букву
C++ Виртуальная функция, принимающая объекты поочередно
C++/CLI WinForms Вывод PictureBox поочередно

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

Или воспользуйтесь поиском по форуму:
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
27.05.2013, 10:46  [ТС]     7 и 4 поочередно #12
Tulosba, только надо 15 элементов, а не 22

Добавлено через 1 минуту
Tulosba, ой, вру-вру, все правильно, спасибо
Yandex
Объявления
27.05.2013, 10:46     7 и 4 поочередно
Ответ Создать тему
Опции темы

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