Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
32 / 15 / 5
Регистрация: 09.06.2017
Сообщений: 125
Записей в блоге: 2
1

Запросить у пользователя имя, фамилию, а затем вывести строку вида "фамилия, имя"

23.06.2017, 10:21. Показов 7516. Ответов 4
Метки нет (Все метки)

С. Прата, "Язык программирования С++", 4 глава, задача 3.
Напишите программу, которая запрашивает у пользователя имя, фамилию, а затем конструирует, сохраняет и отображает строку вида "фамилия, имя". Используйте массивы char и функции из заголовочного файла cstring.
Образец:
Enter your first name: Flip
Enter your last name: Fleming
Here’s the information in a single string: Fleming, Flip

Сделал, работает, но делал методом тыка практически, хочу знать, можно ли лучше.
Компилятор постоянно ругается на функции из заголовочного файла cstring, приходится дописывать #define _CRT_SECURE_NO_WARNINGS. Это лечится?
Код разбил на блоки для удобства чтения, юзаю using namespace std; для простоты.
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
#include <iostream>
#include <cstring>
int main()
{
    using namespace std;
 
    char fn[20];
    char ln[20];
    char z[2]{ "," };
    char p[2]{ " " };
 
    cout << "Enter your first name: ";
    cin >> fn;
    cout << "Enter your last name: ";
    cin >> ln;
    
    int md = strlen(fn) + strlen(ln) + strlen(z) + strlen(p) + 1;
 
    strncat(ln, ", ", md);
    strncat(ln, fn, md);
 
    cout << "Here\'s the information in a single string: " << ln << endl;
 
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2017, 10:21
Ответы с готовыми решениями:

Запросить у пользователя имя, фамилию и возраст. После чего вывести: “Здравствуйте [Имя] [Фамилия]”.
Здравствуйте и снова я обращаюсь за помощью задали задание: Написать код на JavaScript который...

Запросить у пользователя Фамилию Имя Отчество через пробел в одну строку и выдать в сокращенном виде Фамилию И. О.
Задание 7. Запросить у пользователя Фамилию Имя Отчество через пробел в одну строку и выдать в...

Запросить фамилию, имя и отчество пользователя, и вывести его фамилию и инициалы
Вот задание:Написать программу, которая запрашивает фамилию, имя и отчество, а выводит фамилию и...

Функция: преобразовать текст вида "Имя Отчество Фамилия" в "Фамилия И. О."
Помогите с составлением программы. Дан текст в файле F1 в виде: ИМЯ ОТЧЕСТВО ФАМИЛИЯ1 ИМЯ...

4
Software Developer
310 / 226 / 111
Регистрация: 03.05.2017
Сообщений: 1,187
23.06.2017, 10:40 2
Лучший ответ Сообщение было отмечено AmbA как решение

Решение

Цитата Сообщение от AmbA Посмотреть сообщение
можно ли лучше.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstring>
 
int main ()
{
    char fn [20];
    char ln [20];
 
    std::cout << "Enter your first name: ";
    std::cin >> fn;
    std::cout << "Enter your last name: ";
    std::cin >> ln;
    
    strcat (ln, ", ");
    strcat (ln, fn);
 
    std::cout << "Here\'s the information in a single string: " << ln;
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от AmbA Посмотреть сообщение
Используйте массивы char и функции из заголовочного файла cstring.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstring>
 
int main ()
{
    std::string str1, str2;
    
    std::cout << "Enter your first name: ";
    std::cin >> str1;
    std::cout << "Enter your last name: ";
    std::cin >> str2;
    
    str2 = str2 + ", " + str1;
    
    std::cout << "Here\'s the information in a single string: " << str2;
    return 0;
}
1
32 / 15 / 5
Регистрация: 09.06.2017
Сообщений: 125
Записей в блоге: 2
23.06.2017, 10:49  [ТС] 3
Цитата Сообщение от decrement Посмотреть сообщение
C++
1
strcat (ln, ", ");
Гениально!
Цитата Сообщение от decrement Посмотреть сообщение
C++
1
std::string str1, str2;
Это следующая, уже решил ) Правда, более неуклюже...
0
Форумчанин
Эксперт CЭксперт С++
8166 / 5014 / 1436
Регистрация: 29.11.2010
Сообщений: 13,455
23.06.2017, 11:21 4
Цитата Сообщение от AmbA Посмотреть сообщение
Это лечится?
Да. Либо define, либо в настройках проекта.
0
8 / 5 / 3
Регистрация: 28.05.2014
Сообщений: 9
04.01.2018, 12:25 5
Замените небезопасную функцию strcat на strcat_s:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
int main()
{
    using namespace std;
    char fname[20], lname[50];
    cout << "Enter your first name: ";
    cin.getline(fname, 20);
    cout << "Enter your last name: ";
    cin.getline(lname, 20);
    strcat_s(lname, ", ");
    strcat_s(lname, fname);
    cout << "Here's the information in a single string: " << lname << endl;
    cin.get();
    cin.get();
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.01.2018, 12:25

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Строку в формате "фамилия, имя, отчество" преобразовать в формат "имя, отчество, фамилия"
последовательность содержит Ваша фамилия, имя, отчество. Превратить ее таким образом, чтобы сначала...

Запросить имя пользователя и напечатать "Привет, Вася!" 10 раз, если Вася – имя пользователя.
Ребят,подскажите,как делать)хотя бы идею) 1. Запросить имя пользователя и напечатать &quot;Привет,...

С клавиатуры вводится строка "Фамилия Имя Отчество". Изменить вывод строки на "Имя Отчество Фамилия"
С клавиатуры вводится строка &quot;Фамилия Имя Отчество&quot;. Изменить вывод строки на &quot;Имя Отчество...

Преобразовать имя, отчество и фамилию человека к форме "фамилия, инициалы"
Напишите программу, которая преобразует строку, содержащую имя, отчество и фамилию человека, к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.