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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2011, 22:01   #1
AnKor94
Пользователь
 
Регистрация: 24.11.2009
Сообщений: 54
По умолчанию Ввод строк С++

Привет. В этом году поступаю в универ, решил уже сейчас перейти на С++, до этого 3 года кодил на делфи / паскале.

Начал с простейших задач:

Капитан Флинт зарыл клад на Острове сокровищ. Он оставил описание, как найти клад. Описание состоит из строк вида: "North 5", где первое слово – одно из "North", "South", "East", "West", а второе число – количество шагов, необходимое пройти в этом направлении.

Напишите программу, которая по описанию пути к кладу определяет точные координаты клада, считая, что начало координат находится в начале пути, ось OX направлена на восток, ось OY – на север.

Вход: последовательность строк указанного формата. Выход: координаты клада – два целых числа через пробел.

Например, при вводе
North 5
East 3
South 1

программа должна вывести координаты 3 4.

Я решил её так

Код:
#include <iostream>
#include <string>
using namespace std;

int main() {
int x=0,y=0,N,temp;
string s;

cout << "vvedite koli4estvo komand: ";
cin >> N;

for (int i=1; i<=N; i++) 
  {
         cin >> s >> temp; 
         if (s[0]=='E') x += temp;
         if (s[0]=='W') x -= temp;
         if (s[0]=='N') y += temp;
         if (s[0]=='S') y -= temp;        
  }

cout << x << " " << y << endl;

system("PAUSE");
return 0;
}
Видно, что перед тем, как запросить у пользователя последовательность строк, я запросил количество этих строк. Хотя в задаче не сказано спрашивать это у пользователя. Как можно избежать? Или это ошибка задачи?

p.s. в ЕГЭ в подобных задачах всегда идёт приписка "На вход программе подаётся число N, после него идёт N строк...".

Спасибо. Кстати, ожидайте в ближайшее время кучи глупых вопросов
141.116.168.135 : damiu2d449028.dami.army.pentagon.mi l (.MIL | US Military)
AnKor94 вне форума Ответить с цитированием
Старый 12.06.2011, 22:13   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Например, так можно:
Код:
while(ch!='n')
{
   что-то делать;
   cout << "Continue?(y/n) "; cin >> ch;
}
Можно getche() использовать, чтоб ентер не тыкать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.06.2011, 22:19   #3
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Задачу можно решать по ходу считывания, так сказать, поэтому количество строк не нужно)
В ЕГЭ оно указывается тогда, когда задача решается с дополнительной памятью, которую надо выделять)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 12.06.2011, 22:28   #4
AnKor94
Пользователь
 
Регистрация: 24.11.2009
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Granus Посмотреть сообщение
Задачу можно решать по ходу считывания, так сказать, поэтому количество строк не нужно)
В ЕГЭ оно указывается тогда, когда задача решается с дополнительной памятью, которую надо выделять)
а на каком этапе заканчивать считывание? :D
тогда надо сказать, чтоб последней введённой строкой была точка, или что-то вроде того
141.116.168.135 : damiu2d449028.dami.army.pentagon.mi l (.MIL | US Military)
AnKor94 вне форума Ответить с цитированием
Старый 12.06.2011, 22:31   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

upd: ой, невнимательно прочитал условие.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод и сравнение строк Recart Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 18.11.2010 14:10
ввод строк ZET78 Общие вопросы C/C++ 4 07.05.2010 23:58
Ввод строк monkey1631 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 21.04.2010 13:03
Ввод/вывод строк anGeee Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 04.09.2009 21:58
Сравнение строк, ввод пароля (assembler) You_must_help Помощь студентам 7 19.04.2009 23:53