С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
#1

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

27.05.2013, 08:14. Просмотров 372. Ответов 11
Метки нет (Все метки)

Столкнулась с такой проблемой. Есть файл с данными. В нем например 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
подскажите алгоритм такой сортировки.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 08:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 7 и 4 поочередно (C++):

Виртуальная функция, принимающая объекты поочередно - C++
есть класс у него 2 дочерних, есть статическая функция вызывающая ф-ю вывода на экран все объетты класса+дочерние, нужно написать такую же...

Вывод элементов массива поочередно на Borland C - C++
Подскажите пожалуйста, как вывести элементы массива с разницей в 1 секунду поочередно? (На версии Borland C 3.1)

Переписать в файл c слова из файлов a и b поочередно - C++
Доброе время суток коллеги)))Не могу решить задачу. Задача:Даны текстовые файлы a и b.Переписать в файл c слова из файлов a и b...

Требуется прочитать поочередно цифры из файла - C++
Задача такова. Имеется файл, в котором 3 цифры. Например, 90 90 15. Нужно прочитать эти цифры, присвоить их к a,b и с соответственно, чтобы...

просматривая поочередно элементы диагоналей двумерного массива - C++
Здравствуйте уважаемые посетители портала CyberForum.ru, хотелось бы обратится к вам с просьбой, написать небольшую программу на С++ ...

По одному слову поочередно из каждой строки записать в третью - C++
Доброе время суток. Помогите плиз, ибо я начинающий программист. Даны два предложения char st1,st2, любого содержания, мне надо составить...

11
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,014
Завершенные тесты: 1
27.05.2013, 08:30 #2
А в чем проблема?
Читайте строки в промежуточную переменную,
а потом проверяйте, нужна ли текущая строчка.
Если нужна - копируйте в массив результата.
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
27.05.2013, 08:54  [ТС] #3
Цитата Сообщение от zss Посмотреть сообщение
А в чем проблема?
Читайте строки в промежуточную переменную,
а потом проверяйте, нужна ли текущая строчка.
Если нужна - копируйте в массив результата.
нет, так не годится, потому что нельзя поверить нужна ли строка или нет (строки одинаковые) и может быть, что в файле не 11 строк, а например 30000, и читать нужно блоками например по 23 строки, из которых например нужны только например 15...

То есть нужно из N строк выбрать любые M строк, так чтобы соседних строк было минимум.
0
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,014
Завершенные тесты: 1
27.05.2013, 09:06 #4
Уточните критерий, по которому нужно отбрасывать строки.
Что Вы подразумеваете под соседними?
0
LiquidSnake
55 / 55 / 1
Регистрация: 06.02.2013
Сообщений: 317
27.05.2013, 09:06 #5
zss я так понял как раз и имеет в виду - берёте очередную строку а потом случайным образом определяете нужна она или нет
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
27.05.2013, 09:18  [ТС] #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 элементов.
        // так чтобы соседних было как можно меньше
    }
}
0
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,014
Завершенные тесты: 1
27.05.2013, 09:47 #7
Цитата Сообщение от programina Посмотреть сообщение
// так чтобы соседних было как можно меньше
И все-таки, что подразумеваете под соседними?
Их равенство (z[i]==z[i+1])?
Или почему не подходит выбор
Z[i+k],Z[i+k+2],Z[i+k+4],Z[i+k+6],....
(Пропущено N-M элементов через один)
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
27.05.2013, 09:50  [ТС] #8
Цитата Сообщение от zss Посмотреть сообщение
И все-таки, что подразумеваете под соседними?
Их равенство (z[i]==z[i+1])?
(i+1) - i == 1
0
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,014
Завершенные тесты: 1
27.05.2013, 09:55 #9
Цитата Сообщение от programina Посмотреть сообщение
(i+1) - i == 1
Это тождество (i сокращается)
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
27.05.2013, 10:10  [ТС] #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
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.05.2013, 10:35 #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" );
}
Если я правильно понял задание.
1
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
27.05.2013, 10:46  [ТС] #12
Tulosba, только надо 15 элементов, а не 22

Добавлено через 1 минуту
Tulosba, ой, вру-вру, все правильно, спасибо
0
27.05.2013, 10:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2013, 10:46
Привет! Вот еще темы с ответами:

Запрос у пользователя поочередно двух целых чисел, и их сложение - C++
Написала простенькую программу,которая будет запрашивать у пользователя поочередно два целых числа, затем складывать их и результат...

Записать в файл поочередно по две строки из двух других файлов - C++
В редакторе создайте 2 текстовых файла, внесите в первый файл 10 строк произвольноготекста и во второй 5. Из двух исходных файлов при...

Переписать поочередно элементы главной и побочной диагоналей матрицы в массив - C++
вот сама задача: Переписать поочередно элементы главной и побочной диагоналей матрицы Аi,j в массив В

Дано 2 тестовых файла . Получить 3-й который содержит поочередно строки из 2-х файлов - C++
Дано 2 тестовых файла . Получить 3-й который содержит поочередно строки из 2-х файлов


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.