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

У меня выводит имя и фамилия, а отчество не хочет - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С++ Вычислить сумму элементов массива, которые делятся на 3 и индексы которых есть нечетные числа http://www.cyberforum.ru/cpp-beginners/thread1044680.html
Вычислить сумму элементов массива, которые делятся на 3 и индексы которых есть нечетные числа
C++ Разработка интерпретатора языка Добрый день! При разработке интерпретатора возникла след проблема: Qt Creator не желает конвертировать чаровские константы в тип token_ireps. Вот код: #include "analizator.h" #include <iostream> #include <cstring> #include <cstdlib> #include <cctype> #define IF "if" #define ELSE "else" #define FOR "for" #define DO "do" #define WHILE "while" http://www.cyberforum.ru/cpp-beginners/thread1044678.html
vector memory C++
#include "stdafx.h" #include <iostream> using namespace std; template <typename T> class vector { T* m_arr; int m_size;
C++ А) Дан массив а, состоящий из "n" целых чисел (n<=100). Найти номер последнего положительного числа
на С++. к кадому заданию свой код. А) Дан массив а, состоящий из "n" целых чисел (n<=100). Найти номер последнего положительного числа Б) Дана матрица целых чисел, из "n" строк и "н" столбцов (n<=100). Найти количество максимальных элементов матрицы, среди элементов лежащих выше главной диагонали.
C++ УСЛОВНЫЙ ОПЕРАТОР (IF) http://www.cyberforum.ru/cpp-beginners/thread1044631.html
здравствуйте, подскажите пожалуйста в чем ошибка:Дано 3 числа сколько среди них положительных #include <stdio.h> #include<math.h> using namespace std; int main() { int a,b,c, kol=0; printf("Введите a %d\n"); scanf ("%d", &a);
C++ Кодировка из java в С++ помогите перекодировать из java в с++ import java.util.*; import javax.swing.JOptionPane; public class Time { @Deprecated public static void main(String args) { подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
17.12.2013, 00:00     У меня выводит имя и фамилия, а отчество не хочет
как-то запутанно все у вас. все в кучу. программу нужно бить на запчасти (хотябы функции).
вот пример-но то же самое делается:
смотрим на функцию Execute. в ней в цикле вводятся строки (эмуляция, но можно и вводить),
если строка не exit, то предполагается что это полное имя из трех слов. парсим строки. если
нужно, добавляем всякие проверки и кидаем исключения, если распарсить не получилось.
если же распарсить получилось - то передаем полученные ФИO в функцию конвертации,
которая и преобразует их в нужную строки (для простоты просто перестановка имен).
результат вставляется в контейнер, который и печатается после выхода из цикла:
Имхо такой вариант заточить под ваши нужды сильно проще. наверно только подправить
преобразование имени и все.

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <stdexcept>
 
 
std::string GetLine()
{
  //std::string str;
  //std::cin >> str;
  //return str;
 
  // эмулируем ввод.
  static int i = -1;
  ++i;
 
  if (i == 5)
  {
    return "exit";
  }
 
  std::ostringstream oss;
  oss << i << "_FirstName  " << i << "_SecondName       " << i << "_ThirdName  ";
  const std::string& line = oss.str();
  std::cout << "Input: " << line << std::endl;
 
  return line;
}
 
void PrintStrings(const std::string& title, const std::vector<std::string>& strings)
{
  std::cout << std::endl << title << " (" << strings.size() << "):" << std::endl;
  for (std::vector<std::string>::const_iterator it = strings.begin(), end = strings.end(); it != end; ++it)
  {
    std::cout << *it << std::endl;
  }
}
 
void ParseFullName(const std::string& fullName, std::string& firstName, std::string& secondName, std::string& thirdName)
{
  // про безопасность исключений говорить еще рано. поэтому фигачим сразу в выходные параметры.
  std::istringstream iss(fullName);
  iss >> firstName;
  iss >> secondName;
  iss >> thirdName;
  if (firstName.empty() || secondName.empty() || thirdName.empty())
  {
    throw std::runtime_error("Bad full name format (" + fullName + ")");
  }
}
 
std::string ConvertFullName(const std::string& firstName, const std::string& secondName, const std::string& thirdName)
{
  return thirdName + " " + firstName + " " + secondName;
}
 
void Execute()
{
  std::vector<std::string> convertedNames;
 
  while (true)
  {
    const std::string& line = GetLine();
    if (line == "exit")
    {
      break;
    }
 
    std::string firstName;
    std::string secondName;
    std::string thirdName;
    ParseFullName(line, firstName, secondName, thirdName);
    const std::string& convertedName = ConvertFullName(firstName, secondName, thirdName);
    convertedNames.push_back(convertedName);
  }
 
  PrintStrings("Converted names", convertedNames);
}
 
int main()
{
  try
  {
    Execute();
    std::cout << std::endl << "DONE" << std::endl;
  }
  catch (const std::exception& e)
  {
    std::cout << "Error:" << e.what() << std::endl;
  }
 
  return 0;
}
 
Текущее время: 20:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru