[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    К примеру, вот так.

    PHP:
    #include <iostream>
    #include <conio.h>
    #include <cmath>

    using namespace std;

    int main()
    {  
       
    float value 1.0;
       
       while ( 
    3.0 value )
       {
          if ( 
    2.0 == ( floorvalue 10.0 )/ 10.0 ) )
          {
             
    cout << "value = " << value << endl;
          }

          
    value += 0.1;
       }

       
    _getch();
       return 
    0;
    }
     
  2. bad_boy

    bad_boy Elder - Старейшина

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    А можно с отклонением:
    Code:
    #include <math.h>
    #define EPSILON 0.01
    using namespace std;
    int is_equal(float x1, float x2)
    {
    	if(abs(x1-x2)<=EPS)
    	{
    		return 1;
    	}
    	return 0;
    }
    int main() { 
        float x=1.0f; 
        while (x < 3.0f) { 
           if (is_equal(x,2.0f)) 
               cout <<"x="<<x<<endl; 
           x += 0.100000f; 
        } 
    } 
     
  3. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Да, этот вариант даже лучше.
     
  4. A1exx

    A1exx New Member

    Joined:
    8 Feb 2009
    Messages:
    24
    Likes Received:
    4
    Reputations:
    0
    Привет всем,хотелось бы узнать как задать параметр ввода для командной строки,чтобы вызвать функцию,например,есть функция добавления записи - addrec,надо в командной строке прописать laba.exe add -где как раз я не знаю как задать add ,который указывает на функцию добавления и после вылезло например,добавить данные??да,введите номер телефона...и так далее, спасибо заранее.
    А второй вопрос :
    reg = new TRegistry(); тут визуал студио 2010 ругается мол требуется спецификатор типа и наконец как определить переменную CMD ????? какую бибилотеку подключить или что?
    ZeroMemory(CMD,500);
    ругается на CMD - как его определить?? как раз ругается что не определён он
     
  5. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    1) Задавать параметры для командной строки следует из командной строки или при помощи ярлыка или при запуске процесса. Командная строка запускается командой cmd из windows.
    2,3)Книга по С++ любой раздел про переменные и типы данных.
     
  6. elite

    elite New Member

    Joined:
    6 Mar 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    такой вот вопрос возник:
    есть ассемблерная конструкция
    если применить
    тоже самое по идее получится?
     
  7. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    Как сделать защиту от неверного ввода данных
    В программе нужно вводить предложение,и если ничего не вводишь или одно слово то писало бы ошибку.Как это реализовать?
     
  8. Xnamed

    Xnamed New Member

    Joined:
    1 Feb 2009
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    ну скажем if(strlen(s)<10) {cout<<"error"; cin>>s;}
     
  9. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    Вся проблема а том, что не меньше 2символов можно сделать, а как сделать если меньше 2ух слов чтобы ошибку писало?
     
  10. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Алгоритм может быть такой:
    0. Ищешь первый непробельный символ в считанной строке.
    1. Ищешь пробел, начиная от позиции первого непробельного символа + 1.
    2. Если пробел в строке присутствует - ищешь непробельный символ, начиная с позиции найденного пробела + 1. Иначе - в считанной строке одно слово.
    3. Если непробельный символ не найден - в строке одно слово, иначе - несколько.
     
  11. IamAdmin

    IamAdmin New Member

    Joined:
    6 Aug 2009
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    Как в с++ с библиотекой #include <stdio.h> считать строку вместе с пробелами, без использования функций fgets (так как она очень сильно забивает буфер).

    Смысл состоит в том, чтоб считать с файла 2 строки, в обеих существуют пробелы.

    СПС
     
  12. Xnamed

    Xnamed New Member

    Joined:
    1 Feb 2009
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    #include <iostream>
    #include <fstream>
    using namespace std;
    ifstream in("input.txt");

    int main()
    {
    char s[100];
    in.getline(s,100);
    cout<<s;
    return 0;
    }
     
  13. IamAdmin

    IamAdmin New Member

    Joined:
    6 Aug 2009
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    без iostream нельзя?
     
  14. Xnamed

    Xnamed New Member

    Joined:
    1 Feb 2009
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    можно)
    Code:
    #include <fstream>
    using namespace std;
    ifstream in("input.txt");
    ofstream out("output.txt");
    int main()
    {
    	char s[100];
    	in.getline(s,100);
    	out<<s;
    	return 0;
    }
     
  15. ubuntu

    ubuntu New Member

    Joined:
    28 Dec 2009
    Messages:
    34
    Likes Received:
    0
    Reputations:
    0
    выдает следующие ошибки:
    Error 1 error C2248: 'mystring::input_str' : cannot access private member declared in class 'stringildar' e:\classstring.cpp 57
    Error 2 error C2248: 'Vector::m_pVec' : cannot access private member declared in class 'Vector' e:\classstring.cpp 76



    не пойму как правильно написать, чтобы имел доступ к закрытым членам. подскажите пожалуйста :)
    Code:
    #include <iostream>
    #include <string.h>
    #include <conio.h>
    #include <stdlib.h>
    using namespace std;
    
    class Vector;
    
    class mystring{
    private:
    	char *input_str;
    public:
    	mystring();
    	mystring(char inp);
    	mystring(char *inp);
    	mystring(const mystring &pp);
    	~mystring();
    	//char *get();
    	int operator==(const mystring &pp);
    	operator char*() {return input_str;}
    	void cpy(char *inp);
    	void cpy1(char inp, int ch_sym);
    	char get1(char *inp, int ch_sym);
    
    	friend Vector str2Vct(const mystring &);
    };
    
    class Vector 
    { 
    	size_t m_Dim;                       // Размер вектора. 
    	double *m_pVec;                     // Адрес массива элементов. 
    public: 
    	Vector(const size_t = 1,             // Конструктор (единый). 
    		const double *const = 0); 
    	~Vector();                          // Деструктор. 
    
    	double Get(const size_t i) const     // Получение i-ой координаты. 
    	{ return m_pVec[i]; } 
    	void Set(const size_t i,                // Изменение i-ой координаты. 
    		const double x)   
    	{ m_pVec[i] = x; } 
    	size_t GetDim() const                   // Получение размера. 
    	{ return m_Dim; } 
    	void Show() const;                      // Вывод вектора.
    
    	friend mystring Vct2str(const Vector &); 
    }; 
    
    //создать в обоих классах дружественные функции
    //кароче будет чар строка, оттуда достать все числа с помощью функции атоф
    // и записать их в одномерный массив.
    //из одномерного массива сделать си строку типа чар
    
    mystring Vct2str(const Vector &M)
    {
    	mystring res;
    	sprintf(res.input_str,"%d",M.m_pVec);
    	//strcpy(res.input_str, static_cast<char>(M.m_pVec));
    	return res;
    }
    
    Vector str2Vct(const mystring &str)
    {
    	char *s, *news;
    	int k(0), i(0), j(0), g, l; 
    	Vector res;
    	s = str.input_str;
    
    	while(s[i] != '\0')
    	{
    		news = "";
    
    		while(s[i] != ' ' && s[i] != '\0')
    			news[j++] = s[i++];
    
    		res.m_pVec[k++] = atof(news);
    	}
    
    	return res;
    }
    
    void main()
    {
    	setlocale(0, "");
    	char g = 'g';
    	mystring a('4');
    	mystring b("96565");
    	cout<<a<<endl;
    	cout<<b<<endl;
    
    	if (a==b)
    		cout<<"они равны"<<endl;
    	else
    		cout<<"не равны"<<endl;
    
    	b.cpy1(g,3);
    	cout<<b<<endl;
    	cout<<b.get1(b,3)<<endl;
    
    	_getch();
    }
    
    mystring::mystring()
    {
    	if(!(input_str = new char[1])) 
    		exit(-1);
    	input_str[0]= '\0';
    }
    
    mystring::mystring(char inp)
    {
    	if(!(input_str = new char[2])) 
    		exit(-1);
    	input_str[0] = inp;
    	input_str[1] = '\0';
    }
    
    mystring::mystring(char *inp)
    {
    	int n = strlen(inp);
    	if(!(input_str = new char[n+1])) 
    		exit(-1);
    	strcpy(input_str, inp);
    }
    
    mystring::mystring(const mystring &p)
    {
    	int n = strlen(p.input_str);
    	if(!(input_str = new char[n+1])) 
    		exit(-1);
    	strcpy(input_str, p.input_str);
    }
    
    int mystring:: operator==(const mystring &pp)
    {
    	return (strcmp(input_str, pp.input_str) == 0);
    }
    
    mystring::~mystring()
    {
    	delete [] input_str;
    	cout<<"сработал деструктор"<<endl;
    }
    
    void mystring::cpy(char *inp)
    {
    	int n = strlen(inp) + strlen(input_str);
    	char *new_str = new char[n+1];
    	strcmp(new_str, input_str);
    	strcmp(new_str, inp);
    
    	input_str = new_str;
    }
    
    void mystring::cpy1(char inp, int ch_sym)
    {
    	int n = strlen(input_str);
    	if(!(ch_sym > n))
    	{
    		input_str[ch_sym] = inp;
    	}
    	else
    	{
    		cout<<"не правильно задано число которое нужно менять"<<endl;
    	}
    }
    
    char mystring::get1(char *inp, int ch_sym)
    {
    	int n = strlen(input_str);
    	if(!(ch_sym > n))
    		return input_str[ch_sym];
    
    	cout<<"не правильно задано число буквы, которое нужно выдергивать"<<endl;
    
    }
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////
    
    
    Vector::Vector(const size_t Dim, const double *const pVec) : m_Dim(Dim) 
    { 
    	if (!m_Dim) 
    	{ 
    		cout << "Ошибка! Неверный размер вектора." << endl; exit(-3); 
    	} 
    	cout << "Выполняется конструктор класса Vector ..." << endl; 
    	if (!(m_pVec = new double[m_Dim])) 
    	{ 
    		cout << "Ошибка! Недостаточно памяти." << endl; exit(-1); 
    	} 
    	if (pVec)                           // Заполнение элементов вектора. 
    	{ 
    		size_t i; 
    		for (i = 0; i < m_Dim; ++i) 
    			m_pVec[i] = pVec[i]; 
    	} 
    } 
    
    Vector::~Vector() 
    { 
    	cout << "Выполняется деструктор класса Vector ..." << endl; 
    	delete[] m_pVec; 
    } 
    
    void Vector::Show() const 
    { 
    	cout << '('; 
    	size_t i; 
    	for (i = 0; i < m_Dim; ++i) 
    	{ 
    		cout << m_pVec[i]; 
    		if (i < m_Dim - 1) cout << ", "; 
    	} 
    	cout << ')'; 
    } 
    
     
  16. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Vct2str друг класса Vector, а ты пытаешься получить доступ к закрытым данным класса mystring. str2Vct друг класса mystring, а ты пытаешься получить доступ к закрытым данным класса Vector. дальше не смотрел.
     
  17. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    Code:
    printf("%i ",matr[i][j]);   
    
    Как данная строка будут выглядеть в си++
     
    #6797 A.N.O.N.I.M, 25 Oct 2011
    Last edited: 25 Oct 2011
  18. return

    return New Member

    Joined:
    23 Oct 2010
    Messages:
    125
    Likes Received:
    3
    Reputations:
    1
    Кто то когда то делал экспертную систему на с++? Если да, то поделитесь исходником, оно то легко но один момент не могу понять. В гугле только одна теория, кода не встречал.
     
  19. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    Это вопрос? Можешь так и написать. С++ во многом обратно совместим с С. Ну или как вариант, используя std:
    Code:
    std::cout << matr[i][j];
     
  20. sailor_truse

    sailor_truse Banned

    Joined:
    27 Sep 2011
    Messages:
    33
    Likes Received:
    1
    Reputations:
    0
    Насколько неправильно везде вместо определения глобальной переменной stdout/stdin использовать
    GetStdHandle?
     
Thread Status:
Not open for further replies.