Перейти к содержимому

Фотография

C++Вопросы и внятные ответы


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 104

#1
izedog

izedog
  • Гость
  • 26 сообщений
Всем здрасте!!! :laugh:
В этой теме будут задаваться вопросы касательно синтаксиса языка С++, логики и проектирования приложений.
Прошу отвечать внятно и по существу. :(
Спасибо! :laugh:

  • 0

#2
izedog

izedog
  • Гость
  • 26 сообщений
У меня возник такой вопрос. При использовании функции Length(), компилер возмущается, пишет
"E2294 Structure required on left side of . or .*"
Подскажите в чём проблема? :laugh:
  • 0

#3
Big Joe

Big Joe
  • Постоялец
  • 316 сообщений
Так и вопросы должны быть внятными и по существу. Приведи полный код.
  • 0

#4
izedog

izedog
  • Гость
  • 26 сообщений
bool sc(char* st1[], char* st2[])
{
		short int r = 0;
		short int k = st1.Lenght();
		bool p;

		for(int i=0; i<=k; i++){
				if (i==k) {break;}

				if (st1[i]==st2[i]){
						p = true;
				} else {
						p = false;
						break;
				}
		};

		return p;
}
не густо, думал не пригодиться :)
  • 0

#5
v04bvs

v04bvs
  • В доску свой
  • 2 062 сообщений
Выражение "st1.Lenght()" компилятор трактует, как вызов функции Lenght у объекта st1. Однако переменная st1 это массив их указателей на байты, а не объект какого-либо класса. Поэтому компилятор не понимает, что Вы от него хотите.
  • 0

#6
izedog

izedog
  • Гость
  • 26 сообщений
дело в том, что синтаксис записи этой функции взят с учебника :)
есть какие нить варианты решения?
  • 0

#7
v04bvs

v04bvs
  • В доску свой
  • 2 062 сообщений
Это точно по С++ учебник? Из известных мне языков такой метод в стандартной библиотеке есть у языков Delphi и C#. Я затрудняюсь сказать, чем Вам можно помочь, если именно этот фрагмент кода Вы перепечатали из учебника, посколько, за исключением этого метода, в остальном код корректен. Возможно это, так называемый, C++/CLI (версия С++ от Microsoft для платформы .NET). Убедитесь, что Вы используете именно этот язык, а не обычный C++.

Сообщение отредактировал v04bvs: 06.04.2010, 23:14:47

  • 0

#8
izedog

izedog
  • Гость
  • 26 сообщений
не.... код написан мной, с учебника взят только синтаксис
там был такой пример
AnsiString S = "abcdefgh";
int n = s.Length(); // n=8
и всё
  • 0

#9
alitet

alitet
  • Гость
  • 10 сообщений
#include <string>
#include <iostream>
using namespace std;

bool sc(string& st1, string& st2)
{
if (st1 == st2 ) return true;
return false;
}


int main(int argc, char** argv)
{
string st1 = "string 1";
string st2 = "string 2";

if (!sc(st1, st2))
cout <<endl <<" st1 not equal st2 " << endl;
else
cout <<endl <<" st1 equal st2 " << endl;
}
  • 0

#10
Big Joe

Big Joe
  • Постоялец
  • 316 сообщений

не.... код написан мной, с учебника взят только синтаксис
там был такой пример

AnsiString S = "abcdefgh";
int n = s.Length(); // n=8
и всё


Зачем людей путать. В учебнике все правильно, считается количество символов у строки типа AnsiString , а ты пытаешься это же самое повторить с массивом.
А количество элементов попробуй получить методом Count()

Сообщение отредактировал Big Joe: 07.04.2010, 15:45:34

  • 0

#11
izedog

izedog
  • Гость
  • 26 сообщений
Спасибо :surprise:
  • 0

#12
Палыч_old

Палыч_old
  • Частый гость
  • 67 сообщений
как-то так:


#include <string.h>

bool sc(char* st1, char* st2)
{
return (strcmp(st1, st2) == 0);
}

а если побайтно, как в примере, то

#include <string.h>
bool sc(char* st1, char* st2)
{
size_t k = strlen(st1);
bool p = true;

if(k != strlen(st2))
return false;

for(size_t i=0; i<k; i++) {
if (st1[i] != st2[i]) {
p = false;
break;
}
};

return p;
}

Сообщение отредактировал Палыч: 08.04.2010, 10:15:30

  • 0

#13
dzid

dzid
  • Свой человек
  • 939 сообщений
Кто вас на C писать учил? Если уж хотите ручками написать strcmp, то настоящие криворуки делают это так:
bool sc (char *s1, char *s2)
{
register bool eq;
for (;(eq=*s1==*s2)&&*s1&&*s2;++s1,++s2);
return eq;
}

  • 0

#14
izedog

izedog
  • Гость
  • 26 сообщений
Здрасте. У меня возник такой вопрос. Как можно задать ввод только цифр в поле Edit? :)
  • 0

#15
Big Joe

Big Joe
  • Постоялец
  • 316 сообщений

Здрасте. У меня возник такой вопрос. Как можно задать ввод только цифр в поле Edit? :)


на OnKeyPress

if ((Key >= '0') && (Key <= '9')) return;
else Key = 0;

Сообщение отредактировал Big Joe: 24.04.2010, 11:46:37

  • 0

#16
izedog

izedog
  • Гость
  • 26 сообщений

на OnKeyPress

if ((Key >= '0') && (Key <= '9')) return;
else Key = 0;


А можно по подробнее? А то я пока это не разбирал :)
  • 0

#17
Big Joe

Big Joe
  • Постоялец
  • 316 сообщений

на OnKeyPress

if ((Key >= '0') && (Key <= '9')) return;
else Key = 0;


А можно по подробнее? А то я пока это не разбирал :-/


Я так понимаю вы используете C++ Builder. Где у компонента Edit есть событие OnKeyPress.
Вставьте туда этот код, запустите и проверьте ввод букв.
  • 0

#18
izedog

izedog
  • Гость
  • 26 сообщений
Не совсем, у меня Borland Developer стоит :laugh:
Спасибо, но я через свойство Edit->NumbersOnly все сделал :laugh:
  • 0

#19
izedog

izedog
  • Гость
  • 26 сообщений
Кто нить, когда нить использовал компонент формы Timer????
  • 0

#20
Big Joe

Big Joe
  • Постоялец
  • 316 сообщений

Кто нить, когда нить использовал компонент формы Timer????


Это что, социальный опрос?
  • 0


Количество пользователей, читающих эту тему: 3

пользователей: 0, неизвестных прохожих: 3, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.