Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Hed-kun

Программирование, т. 5.1.

Рекомендованные сообщения

begin end vs { }

ну ты наверное в курсе, что в vb нет скобочек

 

так же как и begin end


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

begin нет, а end-ов хватает

только они там не просто end, a end if, next, end sub, end function

Поделиться сообщением


Ссылка на сообщение

begin нет, а end-ов хватает

только они там не просто end, a end if, next, end sub, end function

так а в чем собственно проблема? скобочек в синтаксисе языка не предусмотрено, так что приходится использовать имеющиеся средства, т.е. sub...end sub`ы и иже с ними


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

вопрос исключительно в читаемости

Поделиться сообщением


Ссылка на сообщение

вопрос исключительно в читаемости

ну тогда подтверждаю - sub...end sub читабельны


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

учту про переменные :trollface:

Поделиться сообщением


Ссылка на сообщение

как вариант закрыть\открыть эклипс :trollface:

кстати помогло :trollface:

только теперь на эту строку ругается

public void openMainPage() {

driver.get(TestBase.baseUrl + "/addressbookv4.1.4/");

}

:trollface:

может там два слеша получается после сложения рядом

или в конце слеш не нужен


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

char *s_source[] = { "01234", "01234", "01234", "" };
 int n = sizeof(s_source) / sizeof(char*);
 char **s=new char*[n];
 for(int i=0;i<n;++i){
	 s[i]=new char[15];
	 strcpy(s[i],s_source[i]);
 }

если через эти строки проверяю, то везде все правильно, а через мои неправильно. Объясните почему пожалуйста ааа :hmm:

// мои
char *s1[] = {"ab","abcd",""," "};
char *s2[] = {"ab","abccd", "  ", "asda"};

хз актуаольно ли, но в твоем коде char *s - это указатель на элемент типа char, а char *s1[] = {"ab","abcd",""," "}; - это объявление и инициализация указателя на указатель

 

char *s = "hello"; - вот это указатель, а у тебя несколько строк

 

int strcmp1(char *s1, char *s2){
while( *s1 && *s1 == *s2){
 s1++;
 s2++;
}
if(*s1 == *s2)
 return 0;
return *s1>*s2 ? 1 : -1;
}

В общем, в чем ошибка? при s1 = ab и s2 = ab всеравно -1, почему :fffuuu:

1) неплохо было бы еще в условие while добавить && *s2

и 2) 1ая строка должна выглядеть как int strcmp1(const char **s1, const char **s2)

 

Вообще эта функция реализована вроде как так

int strcmp(const char *s1, const char *s2) {
 int ret = 0;
 while (!(ret = *(unsigned char *) s1 - *(unsigned char *) s2) && *s2) ++s1, ++s2;
 if (ret < 0) {
   ret = -1;
 } else if (ret > 0) {
   ret = 1 ;
 }
 return ret;
}


 

Би май дарлинг

 

Поделиться сообщением


Ссылка на сообщение

ну вообще-то она реализована так :trollface:

 

 

 

public  strcmp
strcmp  proc \
    str1:ptr byte, \
    str2:ptr byte
    OPTION PROLOGUE:NONE, EPILOGUE:NONE
;	   .FPO (cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame)
    .FPO    ( 0, 2, 0, 0, 0, 0 )
    mov	 edx,[esp + 4]   ; edx = src
    mov	 ecx,[esp + 8]   ; ecx = dst
    test    edx,3
    jnz	 short dopartial
    align   4
dodwords:
    mov	 eax,[edx]
    cmp	 al,[ecx]
    jne	 short donene
    test    al,al
    jz	  short doneeq
    cmp	 ah,[ecx + 1]
    jne	 short donene
    test    ah,ah
    jz	  short doneeq
    shr	 eax,16
    cmp	 al,[ecx + 2]
    jne	 short donene
    test    al,al
    jz	  short doneeq
    cmp	 ah,[ecx + 3]
    jne	 short donene
    add	 ecx,4
    add	 edx,4
    test    ah,ah
    jnz	 short dodwords
    align   4
doneeq:
    xor	 eax,eax
    ret
    align   8
donene:
    ; The instructions below should place -1 in eax if src < dst,
    ; and 1 in eax if src > dst.
    sbb	 eax,eax
    or	  eax,1
    ret
    align   16
dopartial:
    test    edx,1
    jz	  short doword
    mov	 al,[edx]
    add	 edx,1
    cmp	 al,[ecx]
    jne	 short donene
    add	 ecx,1
    test    al,al
    jz	  short doneeq
    test    edx,2
    jz	  short dodwords

    align   4
doword:
    mov	 ax,[edx]
    add	 edx,2
    cmp	 al,[ecx]
    jne	 short donene
    test    al,al
    jz	  short doneeq
    cmp	 ah,[ecx + 1]
    jne	 short donene
    test    ah,ah
    jz	  short doneeq
    add	 ecx,2
    jmp	 short dodwords
strcmp  endp
    end

 

 

но сверху над этим же кодом в комменте написан код на с

 

Base Algorithm:
;		  int strcmp ( const char *str1, const char *str2 )
;		  {
;				  const unsigned char *src1 = (const unsigned char *)str1;
;				  const unsigned char *src2 = (const unsigned char *)str2;
;				  int ret = 0 ;
;
;				  while( ! (ret = *src1 - *src2) && *src2)
;						  ++src1, ++src2;
;
;				  if ( ret < 0 )
;						  ret = -1 ;
;				  else if ( ret > 0 )
;						  ret = 1 ;
;
;				  return( ret );
;		  }


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

збс класс

public abstract class HelperBase {

protected ApplicationManager manager;
public HelperBase(ApplicationManager manager) {
 this.manager = manager;
}

}

:trollface:

 

как вариант закрыть\открыть эклипс :trollface:

кстати помогло :trollface:

только теперь на эту строку ругается

public void openMainPage() {

driver.get(TestBase.baseUrl + "/addressbookv4.1.4/");

}

:trollface:

может там два слеша получается после сложения рядом

или в конце слеш не нужен

там косяк с этим testbase

я драйвер давно переопределил, а он тут старый еще валяется :nate:


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение

если это джава, то тебе срочно надо добавить какую-нибудь фабрику


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

Яков Файн - Программирование на Java для детей, родителей, дедушек и бабушек

пойду почитаю перед сном :trollface:

 

если это джава, то тебе срочно надо добавить какую-нибудь фабрику

да я туда потом напихаю методов и все ок будет

:buba:


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение

если это джава, то тебе срочно надо добавить какую-нибудь фабрику

да я туда потом напихаю методов и все ок будет

:buba:

Ты же тестер.

Поделиться сообщением


Ссылка на сообщение

если это джава, то тебе срочно надо добавить какую-нибудь фабрику

да я туда потом напихаю методов и все ок будет

:buba:

Ты же тестер.

лол, вот это книженция, думал прикол какой. А там абстрактные фабрики и бины будут рассматривать?

Поделиться сообщением


Ссылка на сообщение

обьясните плз что такое булеан

учитель говорит чето тру, фолс, ретурн.

визуал бесик


(•_•) .. ̿̿ ̿̿ ̿̿ ̿̿'̿'\̵͇̿̿\з=( ͡° ͜ʖ ͡°)=ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿̿ ̿̿ (ง ͠° ͟ʖ ͡°)ง

∫\ \___( •_•)

_∫∫ _∫∫ɯ \ \

Поделиться сообщением


Ссылка на сообщение

обьясните плз что такое булеан

учитель говорит чето тру, фолс, ретурн.

визуал бесик

http://ru.wikipedia..../Логический_тип

ну хуй знает

(•_•) .. ̿̿ ̿̿ ̿̿ ̿̿'̿'\̵͇̿̿\з=( ͡° ͜ʖ ͡°)=ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿̿ ̿̿ (ง ͠° ͟ʖ ͡°)ง

∫\ \___( •_•)

_∫∫ _∫∫ɯ \ \

Поделиться сообщением


Ссылка на сообщение

если это джава, то тебе срочно надо добавить какую-нибудь фабрику

да я туда потом напихаю методов и все ок будет

:buba:

Ты же тестер.

и?


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение
(изменено)

ну вообще-то она реализована так :trollface:

 

 

 

public  strcmp
strcmp  proc \
	str1:ptr byte, \
	str2:ptr byte
	OPTION PROLOGUE:NONE, EPILOGUE:NONE
;	   .FPO (cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame)
	.FPO	( 0, 2, 0, 0, 0, 0 )
	mov	 edx,[esp + 4]   ; edx = src
	mov	 ecx,[esp + 8]   ; ecx = dst
	test	edx,3
	jnz	 short dopartial
	align   4
dodwords:
	mov	 eax,[edx]
	cmp	 al,[ecx]
	jne	 short donene
	test	al,al
	jz	  short doneeq
	cmp	 ah,[ecx + 1]
	jne	 short donene
	test	ah,ah
	jz	  short doneeq
	shr	 eax,16
	cmp	 al,[ecx + 2]
	jne	 short donene
	test	al,al
	jz	  short doneeq
	cmp	 ah,[ecx + 3]
	jne	 short donene
	add	 ecx,4
	add	 edx,4
	test	ah,ah
	jnz	 short dodwords
	align   4
doneeq:
	xor	 eax,eax
	ret
	align   8
donene:
	; The instructions below should place -1 in eax if src < dst,
	; and 1 in eax if src > dst.
	sbb	 eax,eax
	or	  eax,1
	ret
	align   16
dopartial:
	test	edx,1
	jz	  short doword
	mov	 al,[edx]
	add	 edx,1
	cmp	 al,[ecx]
	jne	 short donene
	add	 ecx,1
	test	al,al
	jz	  short doneeq
	test	edx,2
	jz	  short dodwords

	align   4
doword:
	mov	 ax,[edx]
	add	 edx,2
	cmp	 al,[ecx]
	jne	 short donene
	test	al,al
	jz	  short doneeq
	cmp	 ah,[ecx + 1]
	jne	 short donene
	test	ah,ah
	jz	  short doneeq
	add	 ecx,2
	jmp	 short dodwords
strcmp  endp
	end

 

 

но сверху над этим же кодом в комменте написан код на с

 

Base Algorithm:
;		  int strcmp ( const char *str1, const char *str2 )
;		  {
;				  const unsigned char *src1 = (const unsigned char *)str1;
;				  const unsigned char *src2 = (const unsigned char *)str2;
;				  int ret = 0 ;
;
;				  while( ! (ret = *src1 - *src2) && *src2)
;						  ++src1, ++src2;
;
;				  if ( ret < 0 )
;						  ret = -1 ;
;				  else if ( ret > 0 )
;						  ret = 1 ;
;
;				  return( ret );
;		  }

нет так

 

 

static inline int strcmp(const char *__cs, const char *__ct)

58 {

59 register int __res;

60 unsigned long __dummy;

61

62 __asm__ __volatile__(

63 "mov.b @%1+, %3\n"

64 "1:\n\t"

65 "mov.b @%0+, %2\n\t"

66 "cmp/eq #0, %3\n\t"

67 "bt 2f\n\t"

68 "cmp/eq %2, %3\n\t"

69 "bt/s 1b\n\t"

70 " mov.b @%1+, %3\n\t"

71 "add #-2, %1\n\t"

72 "mov.b @%1, %3\n\t"

73 "sub %3, %2\n"

74 "2:"

75 : "=r" (__cs), "=r" (__ct), "=&r" (__res), "=&z" (__dummy)

76 : "" (__cs), "1" (__ct)

77 : "t");

78

79 return __res;

80 }

 

 

 

С так

 

int strcmp(const char *str1, const char *str2)

18 {

19 const unsigned char *s1 = (const unsigned char *)str1;

20 const unsigned char *s2 = (const unsigned char *)str2;

21 int delta = 0;

22

23 while (*s1 || *s2) {

24 delta = *s2 - *s1;

25 if (delta)

26 return delta;

27 s1++;

28 s2++;

29 }

30 return 0;

31 }

 

 


Изменено пользователем F1sher

 

Би май дарлинг

 

Поделиться сообщением


Ссылка на сообщение
(изменено)

Вообще, наш препод дала нам вот такую реализацию как пример того, что можно придумать на Си

int mystrcmp (const char *s1,const char *s2)
{
return ((*s1 == *s2) && *s1 && *s2 (*s1 == *s2)) ? ((*(s1+1) || *(s2+1)) ? (mystrcmp(s1+1, s2+1)) : (0)) : ((*s1 > *s2) ? (1) : (-1));
}

И да, в остальном я разобрался можно просто char s[][] = {"abs","aass"}; делать и все хорошо

А да, если кто-то может объясните что в строке происходит, то что ? : : я знаю типо if {1} : {2} вот, а именно про *(s1+1) || *(s2+1) и про рекурсию


Изменено пользователем Airfol

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...