Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2009, 05:56   #1
Olga_CS
Новичок
Джуниор
 
Регистрация: 29.05.2009
Сообщений: 1
По умолчанию Как ввести массив с помощью обобщенного программирования и std library функций?

задача: надо заменить циклы в программе на что-то с использование обобщеенного проргаммирования и std library функций:

Код:
#include <string>
#include <iostream>
#include <sstream>
#include "merge.h"
#include <algorithm> // for sort()

using namespace std;

typedef int T;

int main (int argc, char **argv)
{
string line;

getline (cin, line);
int n1 = 0;
{
// Count number of items we can read from line
T data;
istringstream in (line);
while (in >> data)
++n1; }
T* array1 = new T[n1];
{
// Read the data into array1
istringstream in (line);
for (int i = 0; i < n1; ++i)
in >> array1[i];
}
....
Первый цикл я заменила на
Код:
istream_iterator<T> iter1(in); 
int n1 = count_if(iter1, istream_iterator<T>(), size1);
соответственно size1() функция: 
int size1(T s)
{ 
int n;
n++;
}
Проблема в том что если я ввожу строку 1 2 3 привет 5, то n1=3, а надо что бы было =4. Как сделать так что бы код не останавливался на первом не integer типе и доходил до конца?


Второй цикл я заменила на:
Код:
istream_iterator<T> iter1(in);
copy (iter1, istream_iterator<T>(), ostream_iterator<T>(cout, "; "));
copy (iter1, istream_iterator<T>(), array1);
Если я ввожу 1 2 3 4 5, то вторая строка выдает правильный ответ = 1 2 3 4 5, но эти значения не копируются в array1 (копируется только первый элемент, а потом что-то непонятное...) Почему? и как сделать что бы все значения занеслись в массив?

Спасибо.

Модератор: тег CODE

Последний раз редактировалось Sazary; 29.05.2009 в 12:01.
Olga_CS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввести двумерный массив и поменять в нём местами элементы Ku6ep Помощь студентам 3 23.12.2008 18:25
Массив с помощью random. bygoga Паскаль, Turbo Pascal, PascalABC.NET 32 07.11.2008 22:31
Как ввести системную дату и время с помощью TEdit? Bill Gates Общие вопросы Delphi 4 03.01.2008 12:06