Вы можете использовать std :: ws для извлечения любых пробельных символов во входном буфере перед использованием getline. Заголовок для std :: ws является sstream.
cout << "Enter the number: ";
int number;
cin >> number;
cout << "Enter names: ";
string names;
cin>>ws;
getline(cin, names);
Это должно добиться цели:
(defun sum-list (list)
(if list
(+ (car list) (sum-list (cdr list)))
0))
Редактирование: Вот другая хорошая ссылка , который объясняет car
и cdr
- в основном они - функции, которые позволяют Вам захватывать первый элемент списка и получать новый список без первого объекта.
Если вы управляете списками и пишете функциональный код в Emacs, установите библиотеку dash.el
. Тогда вы можете использовать функцию -sum
:
(-sum '(1 2 3 4 5)) ; => 15
автомобиль -> взять первый элемент списка
cdr -> взять все элементы списка, кроме первого элемента
(defun sumup (x) (if (равно x nil) 0 (+ (car x) (sumup (cdr x)))))
(sumup '(5 7 8 10))
30