Просмотр полной версии : Помогите плиз с задачей
Нужно в течение часа решить задачу, кто поможет с меня плюсенгов...
Ввести строку, состоящую из одного слова, проверить будет ли оно читаться одинаково справа на лево и слева на право (т.е. является ли оно палиндромом). Исходную строку и ответ вывести на экран.
spider-intruder
25.01.2008, 11:46
Язык какой?
Я помню у нас в универе на си такая задачка была- несложная...
А на асме страниц 5 кода будет...)))
пробуй
#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=cb5fdffbe787b000f206dd4b8a1af74c
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 :-)");
}
}
все всем спасибо сам решил .. приду на работу почитаю всем плюсенгов наставлю )))
.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
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot