Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> (Как сделать) чтение с консоли 
:(
    Опции темы
klfd
Дата 22.12.2008, 15:42 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.4.2008

Репутация: нет
Всего: нет



Здравствуйте, господа программисты! Мне нужно решение одной задачки. Сразу скажу, если не хотите, бесплатно я могу кинуть пару баксов (WMZ) на ваш кошелёк, но ПОСЛЕ решения (я никого не обманываю, можете забанить мой профиль, запретить доступ к форуму и т.д. если я не сдержу обещания кинуть вам пару $ WMZ). Так, допустим, есть программа "HELLO WORLD" на C++ и на С#. Мне нужно чтоб после компиляции программы не выводилось hello world =). Я знаю, что это премитивно, но... Но в общем, есть ещё условие. Как сделать, что бы после компиляции, когда запускается консольное окошко, вводим символы (любые, пробел в том числе), ОН (компилятор) читал эти символы в стек (), а затем по нажатию клавиши "ENTER" окошко закрывалось.. но вся информация оставалась в стеке? Задача в том, чтобы с прочитанными в стеке символами можно было сделать так: "switch(int n) {}", где n - конретный символ (из строчки, которую прочитали через консоль). А потом обработать каждый символ, в зависимости от того, какой собственно этот символ и что он делает.

Добавлено через 5 минут и 9 секунд
Sorry, если сумбурно написано, если нужны пояснения пишите, поясню
PM MAIL   Вверх
NewDima
Дата 22.12.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



Цитата

Здравствуйте, господа программисты! Мне нужно решение одной задачки. Сразу скажу, если не хотите, бесплатно я могу кинуть пару баксов (WMZ) на ваш кошелёк, но ПОСЛЕ решения (я никого не обманываю, можете забанить мой профиль, запретить доступ к форуму и т.д. если я не сдержу обещания кинуть вам пару $ WMZ).

Считаю это вступление лишним

Вопрос, что вы имеете ввиду под стеком?
какой-то свой класс реализующий стек? или ассемблерный (push, pop)?
Цитата

Так, допустим, есть программа "HELLO WORLD" на C++ и на С#. Мне нужно чтоб после компиляции программы не выводилось hello world

это уже не "HELLO WORLD"
Цитата

ОН (компилятор) читал

после компиляции ОН читать ничего не будет
Цитата

Задача в том, чтобы с прочитанными в стеке символами можно было сделать так: "switch(int n) {}"

что, извините, случится с бедным символом когда с ним сделают так?
Цитата

А потом обработать каждый символ, в зависимости от того, какой собственно этот символ и что он делает

символы ничего не делают к счастью
Цитата

Sorry, если сумбурно написано

крайне сумбурно

Скажите, ничего личного, вы хоть сами поняли, чего хотите?

Это сообщение отредактировал(а) NewDima - 22.12.2008, 16:09
PM ICQ   Вверх
klfd
Дата 22.12.2008, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.4.2008

Репутация: нет
Всего: нет



Цитата
Считаю это вступление лишним


НАСЧЁТ первого вступления это можете обращаться в личку,  небойтесь, отвечу smile


З,Ы, Просто многие читают если вот не разбираешься в простейших примерах вали отсюда.. и т.д. и т. п. Мне ДЕЙСТВИТЕЛЬНО нужна ПРОСТАЯ программа, а точнее ПОНЯТЬ сам ПРИНЦИП... Вообще-то задача.. если быть честным.. создать консольный калькулятор.. у меня есть несколько сурсов (sources), но я НЕ МОГУ понять, как  заносить информацию в стек по нажатию "ENTER". То бишь не по какому-то символу выходить из цикла, а по нажатию ENTER. 

->>Вопрос, что вы имеете ввиду под стеком?
Я не знаю.

->>какой-то свой класс реализующий стек?
Да, лучше всего написать свой класс, реализирующий стек. Можно написать через указатели, можно с помощью массива. Но я не знаю, наверно, с помощью указалетелей лучше, вот дело в том, что я в них не особо разбираюсь.


Код

myclass *s = new myclass();
char a;

for (;;) { 
        cin >> a;
        (*s).push(a);
        if (a == 'x') break; 
    }


Добавлено через 5 минут и 17 секунд
Простейший (насколько это возможно) стек на основе массива, максимум 1000 символов

Код

#include <iostream>
using namespace std;

#define SIZE 1000

class myclass {
    char array[SIZE];
    int top;
public:
    myclass()  { top = 0; }
    ~myclass() {}
    void push(char symbol) {
    if (top == SIZE) cout << "Stack is full";
    else    {    
            array[top] = symbol;
            top++;
        }
    }
    char pop() {
        if (top == 0) {
            cout << "Stack is empty ";
        }
        else    {
            top--;
            return array[top];
        }
    }
    bool empty() {
        return (top==0);
    } 
};

PM MAIL   Вверх
NewDima
Дата 22.12.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



так, разберись, что тебе конкретно на данном этапе нужно
Цитата

НЕ МОГУ понять, как  заносить информацию в стек по нажатию "ENTER"

приведи пример, ввода программы и ее реакции, а то непонятно, программа должна по интеру принимать введенный символ или по интеру считывать строку, забивать ее посимвольно в стек и продолжать дальше работу?
первый вариант у тебя уже написан
Код

myclass *s = new myclass();
char a;
for (;;) { 
        cin >> a;
        s->push(a);
        if (a == 'x') break; 
    }

а второй так
Код

char s[101];
cin.getline(s,100);
for (int i=0;i<strlen(s);i++) if (!stack.push(s[i])) break;

PM ICQ   Вверх
mes
Дата 22.12.2008, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



не это ли Вам нужно ?
Код

#include <iostream>

int main()
{

for (;;)
{
  int a;
  int b;
  int op;
  std::cout <<"ВВедите первое число : ";
  std::cin>>a;
  std::cout <<"ВВедите второе число : ";
  std::cin>>b;
  std::cout <<"ВВедите индекс операции 0(+), 1(-), 2(*), 3(/) : ";
  std::cin>>op;
  std::cout <<"Ваш результат равен :  ";
  switch (op)
  {
     case 0 :  std::cout << a+b; break;
     case 1 :  std::cout << a-b; break;
     case 2 :  std::cout << a*b; break;
     case 3 :  std::cout << a/b; break;
     default : std::cout << "неизвестная комманда"; break;
  };
  std::cout << std::endl<< "Повторить (y/n) ? ";

  char exit;
  std::cin >>exit;
  if (exit=='y' || exit=='Y') continue;
  else break;
};


    getchar();
    return(0);
}





Это сообщение отредактировал(а) mes - 22.12.2008, 19:45


--------------------
PM MAIL WWW   Вверх
klfd
Дата 22.12.2008, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.4.2008

Репутация: нет
Всего: нет



Цитата
приведи пример, ввода программы и ее реакции, а то непонятно, программа должна по интеру принимать введенный символ или по интеру считывать строку, забивать ее посимвольно в стек и продолжать дальше работу?


ДА, всё правильно! Забивать посимвольно и продолжать работу. Большое спасибо! Сейчас посмотрю как это работать будет.
А как на C# из консоли прочитать не знаешь?

Цитата

не это ли Вам нужно ?


Нет, такую программу я уже делал. Нужен намного более сложный "switch". Чтоб понимал не одну операцию, а много. )) И не один '+' или '-', а много.  Да, и у Вас все переменные int, а нужно чтобы разные типы были. Только это нужно перегрузкой или шаблоном делать.. Только я опять же, пока что не знаю как.. но первоочередная задача это чтение с консоли строки и перемещение её в стек. 
PM MAIL   Вверх
mes
Дата 22.12.2008, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(klfd @  22.12.2008,  20:00 Найти цитируемый пост)
Только я опять же, пока что не знаю как.. 

сделайте мне то, сам не знаю чего smile


Цитата(klfd @  22.12.2008,  20:00 Найти цитируемый пост)
но первоочередная задача это чтение с консоли строки и перемещение её в стек.  

может так  smile 
Код

#include <iostream>
#include <vector>

void testcout (int i)
{
    std::cout << i << " ";
}

int main()
{

  std::vector<int> v;     // вместо стека используем вектор

for (;;)
{
  int a;

  std::cout <<"ВВедите "<<v.size()+1<<"-oе число : ";
  std::cin>>a;
  v.push_back(a);
  std::cout << std::endl<< "Повторить (y/n) ? ";

  char exit;
  std::cin >>exit;
  if (exit=='y' || exit=='Y') continue;
  else break;
};

 std::cout <<"Вы ввели :";
 std::for_each (v.begin(), v.end(), &testcout );
 std::cout << std::endl;

    system ("pause");
    return(0);
}




Это сообщение отредактировал(а) mes - 23.12.2008, 01:26


--------------------
PM MAIL WWW   Вверх
klfd
Дата 22.12.2008, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.4.2008

Репутация: нет
Всего: нет



Цитата

делайте мн то, сам не знаю чего

Это что значит?
Нет, я знаю перегрузку или шаблоны, просто не хотел говорить.

Спасибо, алгоритм посмотрю.. только:
'for_each' is not a member of 'std'


PM MAIL   Вверх
mes
Дата 23.12.2008, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(klfd @  22.12.2008,  21:33 Найти цитируемый пост)
Это что значит?

подправил.

Цитата(klfd @  22.12.2008,  21:33 Найти цитируемый пост)
Нет, я знаю перегрузку или шаблоны, просто не хотел говорить.

безусловно верю  smile 

Цитата(klfd @  22.12.2008,  21:33 Найти цитируемый пост)
'for_each' is not a member of 'std'

Добавьте #include <algorithm>



--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0837 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.