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

acm.timus решение задачи номер 1915 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ написать разработать программу для вычисления арифметического выражения и вывода полученного результата. http://www.cyberforum.ru/cpp-beginners/thread880313.html
Здравствуйте. Помогите пожалуйста написать разработать программу для вычисления арифметического выражения и вывода полученного результата. Исходные данные ввести с клавиатуры. Преподаватель толком не чего не объяснил и сразу дал такое задание. Заранее спасибо!!!
C++ Написать программу, составляющую и печатающую уравнение прямой, проходящей через точку и пересекающей две прямые Здравствуйте, мне нужна помощь в решении этой задачи. Написать программу, составляющую и печатающую уравнение прямой, проходящей через точку и пересекающей две прямые. Точка и две прямые вводятся пользователем. http://www.cyberforum.ru/cpp-beginners/thread880305.html
C++ Составить программу задания элементов матрицы
Составить программу задания элементов матрицы , где i,j= 1,2,...,10 и j=1,2,...,8. Полученную матрицу построчно отпечатать. Код си
C++ Найти сумму элементов массива
В Visual Studio 2010 найти сумму элементов массива из 10 элементов, вводимых пользователем, которые подходят по 3 признакам: 1.) делятся на 7 2.) заканчиваются на 3 3.) состоит из 4 чисел
C++ Суммы введённого числа (рекурсия) http://www.cyberforum.ru/cpp-beginners/thread880298.html
Доброго времени суток! Помогите, пожалуйста, решить задачу: используя рекурсию, вывести на экран все возможные варианты суммы введённого с клавиатуры числа (например, если это число 3, то вывести 1+1+1, 2+1, 1+2). Мой код где-то плужит, никак не могу ошибку найти. #include<iostream> #include<time.h> #include<stdlib.h> using namespace std; const int n=100; char p; char m; int...
C++ Рассчёт средней скорости, считывание из файла Помогите, выполнить, задание: "Маршрут перевозок задан в виде массивов P1, ... , P12 - наименования пунктов от пункта отправления (P1) до пункта прибытия (P12); R1, ... , R11 - расстояния между соседними пунктами; T1, ... , T11 - среднее время в пути. Вывести средние скорости между тремя заданными парами пунктов." Требования к выполнению: "Программа для обработки разнотипных массивов... подробнее

Показать сообщение отдельно
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
27.05.2013, 11:23     acm.timus решение задачи номер 1915
в общем суть задачи такая.Нам дают число н до1,000,000
это число операций.
далее идут н операций если идет число положительное к примеру +7 +5 то мы его записываем в стек.
если идет 0 то мы удваиваем стек будет 7 5 7 5
если идет -1 то мы выводим последнее число в стеке
вырезано
вот сама задача
как я пыталась решить.Записала все операции в масив.Подсчитала количество -1(минусы) и считаю что надо вывести в результата программы не более (минусы) чисел из стека. и храню в масиве (результат) только (минусы) первых чисел
так как остальные типо не нужны. если я уже записала (минусы) чисел в стек то я просто делаю сдвиг стека(массива точнее) и записываю вновь прибывшее число на последнее место.если надо продублировать стек то есть уже все (минусы) мест заняты я ничего не делаю с стеком.Если не заняты то добавляю числа с начала(начинаю дублировани) до тех пор пока не будут заняты минус чисел.стоит добавить если было -1 то мы выводим число и удаляем его из стека
вот то что я написала.
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
#include<iostream.h>
#include<conio.h>
long Operations[1000000];
long Result[1000000];
long n;
void Sdvig(long minuses);
int main()
{
    cin>>n;
    long i=0;
    for(;i<n;i++)
    {
      long num;
      cin>>num;
      Operations[i]=num;
    }
    long minuses=0;
    for(i=0;i<n;i++)
     if (Operations[i]==-1)
         minuses++;
    i=0;
    long curr=0;
    long curr1=0;
    while(i++<n)
    {
                while(Operations[curr++]!=-1)
                {
                if(Operations[curr]>0)
                 if(curr1>minuses)
                 {
                                  Sdvig(minuses);
                                  curr1--;
                Result[curr1++]= Operations[curr];
                 }//if
                 if(!Operations[curr])
                  if(curr1<minuses)
                  {
                     long tmp=0;
                     while(curr1<minuses)
                     Result[curr++]=Result[tmp++];
                  } //if             
                                                       
                 }//while
                 if(Operations[curr]==-1)
                { cout<<Result[curr1];
                curr1--}
                                
    }
         
            
    getch();
    return 1;
}
void Sdvig(long minuses)
{
     for(;minuses>0;minuses--)
        Operations[minuses-1]=Operations[minuses];
}
есть идеи/предложения/замечания/здороваякритика???
буду рада всему чем поможете
спс.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru