Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Помогите плиз с задачей (https://forum.antichat.xyz/showthread.php?t=59868)

netzzz 25.01.2008 11:40

Помогите плиз с задачей
 
Нужно в течение часа решить задачу, кто поможет с меня плюсенгов...

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

spider-intruder 25.01.2008 11:46

Язык какой?

netzzz 25.01.2008 12:11

ой сорр асемблер

iddqd 25.01.2008 12:14

Я помню у нас в универе на си такая задачка была- несложная...
А на асме страниц 5 кода будет...)))

gibson 25.01.2008 12:20

пробуй
Код:

#include <conio.h>
#include <stdio.h>
void main()
{char s1[100],s2[100]="";
unsigned int ks1 = int(s1),ks2 = int(s2);
unsigned int l,r;
clrscr();
gets(s1);
asm{
  mov dx,0
  mov bx, ks1
  dec bx
  }
  l0:
asm{
  inc bx
  mov cx, bx
  mov ah, [bx]
  cmp ah,0
  je fin
  mov al,[bx+1]
  cmp al,0
  je fin
  }
  l1:
asm{
  mov al, [bx]
  cmp al, 32
  je l2a
  cmp al,0
  je l2a
  inc bx
  jmp l1
  }
  l2a:
asm{
  push bx
  push cx
  dec bx
  mov r,bx
  mov l,cx
  push ax
  }
  l2a1:
asm{
  mov bx,r
  mov cx,l
  mov ah,[bx]
  mov bx,cx
  mov al,[bx]
  cmp bx,cx
  jna l2a2
  cmp ah,al
  jne l2a2
  dec r
  inc l
  jmp l2a1
  }
  l2a2:
asm{
  cmp ah,al
  jne l4
  pop ax
  cmp al,0
  je fin
  pop cx
  pop bx
  jmp l0
  }
  l4:
asm{
  pop ax
  pop bx
  pop cx
  inc cx
  }
  l3:
asm{
  push bx
  mov bx, ks2
  add bx,dx
  mov [bx],ah
  inc dx
  pop bx
  inc bx
  mov ah,[bx]
  cmp bx,cx
  jne l3
  dec bx
  cmp ah,0
  jne l0
  }
  fin:
printf("%s",s2);
}

else
http://phorum.key.ru/viewtopic.php?f=34&t=34754
http://forum.woweb.ru/topic29962.html
http://devoid.com.ua/functions-about/c-functions/strrev.html
http://sourcecore.net/forums/viewtopic.php?p=4550&sid=cb5fdffbe787b000f206dd4b8 a1af74c
http://phorum.key.ru/viewtopic.php?t=32218
http://kitnet.s42.asu.ru/www/olimp/asm/z3/z3.htm
money
http://foxweb.net.ru/files/?arc=1

spider-intruder 25.01.2008 12:21

На си если то вот как то так :-)
(криво но пашет- строка проверяется не до середины а в 2 стороны поностью - не оптимально! Зато быстро :-))

#include "stdio.h"
#include "string.h"

void main(int argc, char* argv[])
{
if(argc==1)
{
printf("USE: polindrom.exe string.\r\n");

}
else
{
char * str = argv[1];
int i;
int Sz=(strlen(str));

for(i=0;i<=Sz;i++)
{
if(str[i]!=str[(Sz-1)-i])
{
printf("Its not a polindrom :-(");
return;
}
}
printf("Its a polindrom :-)");

}
}

netzzz 25.01.2008 12:32

все всем спасибо сам решил .. приду на работу почитаю всем плюсенгов наставлю )))

netzzz 25.01.2008 12:35

Цитата:

.Model small
.stack 100h
include macr.inc
.data
f db "Введи слово",0ah,0dh,"$"
fn db "Не полиномы",0ah,0dh,"$"
fp db "Полиномы",0ah,0dh,"$"
rett db 0ah,0dh,"$"
s db " $"
p db 0
len dw 0
.code
jmp start

ASSUME ds:@data,es:@data
start:
init_dses

out_str f
in_str s
mov len,ax

mov di, offset s
mov si,di
add si,len
sub si,3
mov cx,len
sub cx,3
go: mov al,[si]
cmp [di],al
jne nepolinom
inc di
dec si
loop go

out_str fp
jmp exit
nepolinom:
out_str fn

exit:

int 27h
end start
macr.inc
Цитата:

init_ds macro
mov ax,@data
mov ds,ax
xor ax,ax
endm

init_dses macro
mov ax,@data
mov ds,ax
mov es,ax
xor ax,ax
endm



out_str macro st
push ax
mov ah,09h
mov dx,offset st
int 21h
pop ax
endm

clr macro rg
xor rg,rg
endm

in_str macro st
mov ah, 3fh
mov bx,0h
lea dx,st
mov cx,99
int 21h
endm

find_c macro len, st

; mov al,'&char'
cld
mov di,offset st
mov cx,len
repne scas st
endm

in_char macro char
push ax
mov ah,1h
int 21h
mov char,al
pop ax
endm

out_char macro char
push ax
mov ah,2h
int 21h
pop ax
endm


Время: 00:35