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

Из паскаля в c++ с небольшим изменением - C++

Восстановить пароль Регистрация
 
Dream2
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 77
26.11.2014, 20:50     Из паскаля в c++ с небольшим изменением #1
Ребят помогите написать прогу на с++, а так же переделать под файлы.
(Само задание:Пусть дан файл целых чисел. Создайте новый файл, значения в который записываются по следующему правилу: суммируются подряд идущие значения одного знака; вместо группы нуле записывается один нуль.)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Var
  Mas1,Mas2:array[1..10] of Integer;
  i,j,k:Byte;
  SumP,SumO:Integer;
begin
  Randomize;
  For i:=1 to 10 do
  Begin
    Mas1[i]:=-20+Random(40);
    Write(Mas1[i]:4)
  End;
  Writeln;
  i:=1;
  j:=1;
  SumO:=0; 
  SumP:=0;  
  While i <= 10 do
  Begin
    If Mas1[i] > 0 then 
    Begin
      SumP:=0;
      While (Mas1[i] > 0) and (i <= 10) do   
      Begin
        SumP:=SumP+Mas1[i];  
        inc(i)            
      End;
      Mas2[j]:=SumP;     
      inc(j)
    End;
    If Mas1[i] < 0 then  
    Begin
      SumO:=0;
      While (Mas1[i] < 0) and ( i <= 10) do
      Begin
        SumO:=SumO+Mas1[i];                
        Inc(i)
      End;
      Mas2[j]:=SumO;    
      inc(j)
    End
    Else
    If Mas1[i] = 0 then    
    Begin
      Mas2[j]:=0;         
      inc(j);
      While (Mas1[i] = 0) and ( i <= 10) do Inc(i)      
    End;
  End;
  For i:=1 to j-1 do
  Write(Mas2[i]:4);
  Readln
End.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 20:50     Из паскаля в c++ с небольшим изменением
Посмотрите здесь:

C++ С паскаля на С++
C++ Дано натуральное число m. Найти такое натуральное n, что двоичная запись n получается из двоичной записи m изменением порядка цифр на обратный (
Напишите функцию, которая для любого целого аргумента возвращает целое значение, полученное изменением порядка следования цифр на обратный C++
C++ Нужно разобраться с небольшим примером
C++ с паскаля в с++
с паскаля на с++ C++
C++ Реализовать динамический список с добавлением, изменением и удалением элементов по индексу
Структура, трудности с небольшим циклом C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 787
Завершенные тесты: 2
27.11.2014, 01:26     Из паскаля в c++ с небольшим изменением #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вы не подумайте, что я cut, я просто учусь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "stdafx.h"
#include <iostream>
#include <functional>
#include <algorithm>
#include <vector>
#include <numeric>
#include <fstream>
#include <iterator>
 
/*
Ребят помогите написать прогу на с++, а так же переделать под файлы.
(Само задание:Пусть дан файл целых чисел. Создайте новый файл, значения в который записываются по следующему правилу:
суммируются подряд идущие значения одного знака; вместо группы нуле записывается один нуль.)
*/
 
 
template <class Cond, class Operation, class Operation2>
class binderTernarOp : 
    public ::std::binary_function
    <typename Operation::first_argument_type, typename Operation::second_argument_type, typename Operation::result_type>
{
public:
    typedef typename binary_function<typename Operation::first_argument_type, typename Operation::second_argument_type, typename Operation::result_type> Base;
    typedef typename Base::first_argument_type first_argument_type;
    typedef typename Base::second_argument_type second_argument_type;
    typedef typename Base::result_type result_type;
 
    binderTernarOp(const Cond& cond, const Operation& op, const Operation2& op2)
        : op(op), cond(cond), op2(op2)
    {
        static_assert(::std::is_same<Operation::first_argument_type, Operation2::first_argument_type>::value, "bindTernarOp require same Operators");
        static_assert(::std::is_same<Operation::second_argument_type, Operation2::second_argument_type>::value, "bindTernarOp require same Operators");
        static_assert(::std::is_same<Operation::result_type, Operation2::result_type>::value, "bindTernarOp require same Operators");
    }
 
    inline const result_type operator()(const first_argument_type& left, const second_argument_type& right) const
    {
        return (cond() ? (op(left, right)) : (op2(left, right)));
    }
 
    inline result_type operator()(first_argument_type& left, second_argument_type& right) const
    {
        return (cond() ? (op(left, right)) : (op2(left, right)));
    }
 
protected:
    Operation op;
    Operation2 op2;
    Cond cond;
};
 
template <class Cond, class Operation, class Operation2>
binderTernarOp<Cond, Operation, Operation2>
inline bindTernOp(const Cond& cond, const Operation& op1, const Operation2& op2)
{
    return (binderTernarOp<Cond, Operation, Operation2>(cond, op1, op2));
}
 
int main()
{
    ::std::ifstream in("input.txt");
    ::std::ofstream out("output.txt");
 
    ::std::vector<int> vec((::std::istream_iterator<int>(in)), (::std::istream_iterator<int>()));
    in.close();
 
    ::std::vector<int>::iterator it2, it = vec.begin();
    while (it != vec.end())
    {
        it2 = ::std::find_if(it, vec.end(), ::std::bind2nd(bindTernOp([it](){return *it == 0; }, ::std::not_equal_to<int>(), bindTernOp([it](){return *it < 0; }, ::std::greater_equal<int>(), ::std::less_equal<int>())), 0));
        out << ::std::accumulate(it, it2, 0) << " ";
        it = it2;
    }
    out.close();
 
    return 0;
}
Добавлено через 30 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <iterator>
 
int main()
{
    ::std::ifstream in("input.txt");
    ::std::ofstream out("output.txt");
    ::std::istream_iterator<int> it(in), itEnd;
    for (int summ = 0, lastValue = *it; it != itEnd; ++it)
    {
        if (lastValue == 0 && *it == 0)
        {
            continue;
        }
        else if (*it == 0)
        {
            out << summ << " ";
            out << *it << " ";
            summ = 0;
        }
        else if (lastValue == 0 || (long long)*it * (long long)lastValue > 0)
        {
            summ += *it;
        }
        else
        {
            out << summ << " ";
            summ = *it;
        }
        lastValue = *it;
    }
 
    in.close();
    out.close();
    return 0;
}
Yandex
Объявления
27.11.2014, 01:26     Из паскаля в c++ с небольшим изменением
Ответ Создать тему
Опции темы

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