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

Ввод значений разделенных запятой - C++

Восстановить пароль Регистрация
 
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
19.08.2010, 21:31     Ввод значений разделенных запятой #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
#include <iostream>
#include <math.h>
#include <clocale>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
setlocale(LC_CTYPE,"Russian");
float x1 = 20 ; float y1 = 20; float z1 = 20;
float x2; float y2; float z2; 
int Distance;
float Dx; float Dy; float Dz; // Delta
 
 
 
while(1)
{
cout << "Исходные координаты: " << x1 << " " << y1 << " " << z1 << "\n" ;
cout << "\n";
cout << "Введите координаты x,y и z разделенные пробелом.  ";
 
cin >> x2 >> y2 >> z2;
 system("cls");
Dx = abs(x1 - x2);  Dy = abs(y1 - y2);  Dz = abs(z1 - z2);
Distance = sqrt(Dx*Dx + Dy*Dy + Dz*Dz);
cout << "Объект перемещен на " << Distance << " пикселей.\n";
cout << "\n";
x1 = x2; y1 = y2; z1 = z2;
}
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2010, 21:31     Ввод значений разделенных запятой
Посмотрите здесь:

C++ В строке имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее.
C++ Подсчет количества слов в строке s разделенных пробелами, или запятой
C++ Ввод нецелого числа с запятой и точкой.
C++ Дан набор слов ,разделенных точкой с запятой
C++ Напечатать в одну строку пятьдесят первых натуральных чисел разделенных запятой с пробелом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
19.08.2010, 21:52     Ввод значений разделенных запятой #2
Можно использовать strtok, то есть считываешь целую строчку, разбиваешь, конвертируешь в нужные типы - с помощью sscanf, istringstream, boost::lexical_cast или atof.
В бусте есть наверняка разбивка строчки на части, но я не в курсе.
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 22:14     Ввод значений разделенных запятой #3
Намного проще воспользоваться cin
C++
1
2
3
char ch;
cout << "Enter: ";
cin >> x2 >> ch >> y2 >> ch >> z2;
На место ch можно прописать любой символ.
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
19.08.2010, 22:23     Ввод значений разделенных запятой #4
Цитата Сообщение от half-node Посмотреть сообщение
Намного проще воспользоваться cin
C++
1
2
3
char ch;
cout << "Enter: ";
cin >> x2 >> ch >> y2 >> ch >> z2;
На место ch можно прописать любой символ.
Немного не нравится решение, наверное из-за неуниверсальности. Но в данном случае рабочее, да.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
19.08.2010, 22:47     Ввод значений разделенных запятой #5
Цитата Сообщение от Andrew_Lvov Посмотреть сообщение
cin >> x2 >> ch >> y2 >> ch >> z2;
C
1
2
3
4
5
6
7
8
9
10
int main(){
  const char* str = "23,2,3";
  int x1,y1,z1;
  if( 3 != sscanf( str, "%d,%d,%d",&x1,&y1,&z1 ) ){
    printf("error input\n");
    return -1;
  }
  printf( "%d %d %d", x1,y1,z1 );
  return 0;
}
C-style
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
19.08.2010, 22:48     Ввод значений разделенных запятой #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
 
int main(){
    std::string buf;
    int x, y, z;
    
    std::cout << "Enter values divided by a comma: ";
    std::getline(std::cin, buf);
    std::replace(buf.begin(), buf.end(), ',', ' ');
    std::istringstream ist(buf);
    ist >> x >> y >> z;
    std::cout << "X = " << x << " Y = " << y << " Z = " << z << std::endl;
    
    return 0;
}
Yandex
Объявления
19.08.2010, 22:48     Ввод значений разделенных запятой
Ответ Создать тему
Опции темы

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