ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

проблемы с getline
  #1  
Старый 20.10.2009, 23:28
Аватар для cupper
cupper
Постоянный
Регистрация: 06.06.2007
Сообщений: 575
Провел на форуме:
1180737

Репутация: 180


По умолчанию проблемы с getline

В програме немогу считать гетлайном строку, просто пропускается этот оператор и все.
Я сижу уже весь дерганый %(

вот код, весь
Код:
#include <iostream>
#include <string>
#include <stdlib.h> //isdigit(int)
#include <vector>

using namespace std;

int menu_input(const string &);
int check_digit_expert(const string &);
void output_matrix(ostream &, vector<vector<bool> > &, const size_t, const int);

int main(){
	int expert = menu_input("Enter quantity of experts N = ");
	int dimension = menu_input("Enter quantity of dimension matrix n = ");
	vector< vector<bool> > matrix(dimension, vector<bool>(dimension*dimension, 0));
	string strlineMatrix;
	for (int vec=0; vec<expert; vec++){
		// вводим матрицу
		cout<<"Please enter values "<<vec+1<<" matrix:\n";
		cout<<"Begin enter\n";
		int skip, count; // с какого символа и сколько копировать
		int j;
		for (int i=0; i<dimension; i++){
			skip=0;
			j=0;
/*ТУТА !!!!!!!*/		getline(cin, strlineMatrix);
			cout<<strlineMatrix<<"\n\n";
			for (int n=0; n<strlineMatrix.length(); n++){
				while (strlineMatrix[n]==' '){++n;}
				skip=n;
				++n;
				count=1;
				while (strlineMatrix[n] !=' '){
					++count;
					++n;
				}
cout<<string(strlineMatrix, skip, count)<<"-";
				if (j>=dimension || (matrix[vec][i*dimension+j]=(bool)check_digit_expert(string(strlineMatrix, skip, count)))<0){
					cout<<"TEMP 1\n";
					return 1;
				}
				++j;
			}
			if (j != dimension){
				cout<<"Incorrect quantity of the entered values\n"<<"To continue input ?(Y/n): ";
				char key;
				cin>>key;
				if (key=='n') return 1;
				else --i;
			}
			
		}
		cout<<"End enter\n\n";
		
	}
	output_matrix(cout, matrix, dimension, 0);
	//matrix.erase(matrix.begin(), matrix.end());
	
//----------
	char a;
	cin>>a;
//----------
}

int menu_input(const string &str){
/*
будет требовать ввести число экспертов до тех пока не введут корректно
возвращает введене число в int
*/
	cout<<str;
	string expert;
	int iexpert=0;
	while (1){
		cin>>expert;
		iexpert=check_digit_expert(expert);
		if (iexpert<1){
			cout<<"ERROR ENTER VALUE: you enter: \""
			<<expert<<"\", needed digit >= 0\n"
			<<"Please "<<str;
		}
		else return iexpert;
	}	
}
int check_digit_expert(const string &str){
/*
Если str число >=0 то возвращает int этого числа, иначе -1
*/
	for (int i=0; i<str.length(); i++){
		if (isdigit(str[i])==0){
			return -1;
		}
	}
	return atoi(str.c_str());
}

void output_matrix (ostream & out, vector<vector<bool> > & matrix, const size_t len, const int nummatrix){
    	out<<"\n---------MATRIX----------\n";
    	for (size_t i=0; i<len; ++i){
        	for (size_t j=0; j<len; ++j){
            		out<<matrix[nummatrix][i*len+j]<<" ";
       		}
        	out<<endl;
   	}
   	out<<"\n---------MATRIX----------\n";
}
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Медведев читает свой ЖЖ и решает проблемы [BES] Мировые новости 11 08.10.2009 18:32
У Elpida проблемы с памятью? Eff0rd Новости мира "железа" 1 09.07.2009 23:00
[99.7%] решение проблемы с icq AlexV ICQ 88 25.01.2009 13:31
Основные проблемы, связанные с железом. last_root Аппаратное обеспечение 11 15.01.2009 13:21
Возникли проблемы в работе альтернативных клиентов Icq dinar_007 Мировые новости 4 11.02.2006 13:19



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ