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

Функция sin.getline не вызывается во второй раз - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сравнение тхт фаилов http://www.cyberforum.ru/cpp-beginners/thread1008735.html
type starray=array of string; var i:integer; m:char; a:starray; sl:text; {Алгоритм бинарного поиска} procedure b (s:starray); var
C++ Шаблон, использующий при конкретизации шаблон (наподобие vector<vector<int>> ) #include <iostream> using namespace std; template <typename T> class Array { T *data; public: Array(); Array(int n) { http://www.cyberforum.ru/cpp-beginners/thread1008732.html
Вывести на экран значения тех эле-ментов, лежащих выше главной диагонали, которые больше всех элементов, лежащих ниже главной диагонали C++
А кто-нибудь может помочь еще с этим: Дан вещественный массив А. Вывести на экран значения тех эле-ментов, лежащих выше главной диагонали, которые больше всех элементов, лежащих ниже главной диагонали. Пробовал создавал дополнительный массив записывал в него элементы которые выше главной диагонали, обнулял первоначальный массив выше главной диагонали и саму главную диагональ, а потом сравнивал...
C++ Создание нового проекта
Здравствуйте. Установил MVS 2012, начал создавать проект - Консольное приложение win 32....когда в последнем окошке ставлю галочку "Пустой проект" и нажимаю готово то слева в панеле создается просто папка с названием проекта и больше ничего нет а должно быть еще 4 папки - Файлы исходного кода, Внешние зависимости, Заголовочные файлы и Файлы ресурсов... Притом когда создаю файл cpp и пишу код то...
C++ Динамический массив с сортировкой, С++ http://www.cyberforum.ru/cpp-beginners/thread1008695.html
Здравствуйте! Есть задание: написать динамический массив, заполненный случайными числами, размер которого задаётся переменной. Выполнить сортировку элементов главной диагонали массива по возрастанию. В массиве должна быть дополнительная функция, к которой идет обращение в main. На экран должен выводиться первоначальный массив и отсортированный массив. В данный момент застрял на...
C++ Вывести на экран значение и номер члена последовательности, меньшего 0,1 Дана последовательность: . Составить программу c использованием цикла while, выводящую на экран значение и номер члена последовательности, меньшего 0,1. Тест: n=10, p(n)=0,0977. Использовать цикл while. подробнее

Показать сообщение отдельно
ElenaBilyk
 Аватар для ElenaBilyk
4 / 4 / 1
Регистрация: 22.10.2013
Сообщений: 34
15.11.2013, 16:47     Функция sin.getline не вызывается во второй раз
Возникли проблемы с функцией sin.getline(). Имеется заголовочный файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef GOLF
#define GOLF
  const int Len = 40;
  struct golf 
  {
    char fullname[Len];
    int handicap;
  };
  void setgolf (golf & g, const char * name, int hc);
  int setgolf (golf & g);
  void handicap (golf & g, int hc);
  void showgolf (const golf & g);
  #endif
К нему есть файл .cpp в котором определены функции
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
#include "stdafx.h"
#include <iostream>
#include "golf.h"
 void setgolf (golf & g, const char * name, int hc)
 {
    memcpy(g.fullname, name, sizeof(char) * strlen(name));
    g.fullname[strlen(name)] = '\0';
    g.handicap = hc;
 }
 int setgolf (golf & g)
 {
    std::cout<<"Funk setgolf() \n";
    std::cout<<"Enter the fullname: ";  
    std::cin.getline(g.fullname, Len);
    
    if (strlen(g.fullname) == 0)
        return 0;   
    std::cout<<"Enter the handicup: ";
    while (!(std::cin>>g.handicap))
    {
        std::cout<<"Cycle cin>>g.handicup";
        std::cout<<"Bad input. Enter the number: ";
        std::cin.clear();
        while(std::cin.get() == '\n')
            continue;
    }   
 
    return 1;   
 }
 void handicap (golf & g, int hc)
 {
    g.handicap += 10;
 }
 void showgolf (const golf & g)
 {
    std::cout<<"The player "<<g.fullname<<" has "<<g.handicap<<" handicap.\n";
 }
И, наконец в main следующее

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
#include "stdafx.h"
#include "golf.h"
#include <iostream>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
              int Res = 1;
    const int pl = 10;
    golf com[pl];
    int count = 0;
    for(int i = 0; i < pl; ++i)
    {
        std::cout<<"i = "<<i<<'\n';
        Res = setgolf(com[i]);
        std::cout<<"Res = "<<Res<<'\n';
        if (Res == 0)
            break;
        count++;
        std::cout<<"count = "<<count<<'\n';
    }   
    for(int i = 0; i < count; i++)
        showgolf(com[i]);
 
 
    
 
    return 0;
}
В целом прога работает, но когда в цикле вызывается функция, которая запрашивает у пользователя имя игрока и его фору, первую итерацию цикл проходит нормально, а при последующих cin.getline не вызывается, при этом она возвращает 0 и программа завершается.


Что-то я не пойму, почему она не вызывается? Подскажите, а?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru