Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 podproqrammi  [new]
novichek1
Guest
Ya s foxpro nedavno rabotayu i podproqrammami voobshi ne rabotal.
Uchitivaya eto pomoqite, pojalusta mne
U menya yest 2 massiv: 1.A=(a1,a2,a3); 2.B=(b1,b2,b3)
Nado cdelat podproqrammu vipolnyayushix nad nix sleduyushie opreatsii:

1) A+B= (a1+b1, a2+b2, a3+b3)
2) A*B= (a1*b1, a2*b2, a3*b3)
3) A-B= (a1-b3, a2-b2, a3-b1)
4) A/B = (a1/b1, a2/b2, a3/b3)

(k*a1, k*a2,k*a3) , k>0
5) k*A= (k*a3, k*a2, k*a3) , k<0
(0,0,0,) , k=0


6) A/B= (a1/b1, a2/b2,a3/b3)
7 дек 04, 15:21    [1163853]     Ответить | Цитировать Сообщить модератору
 Re: podproqrammi  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Почитай описание команд

FOR...ENDFOR
ALEN()
DIMENSION
EXTERNAL ARRAY

В FoxPro нет "групповых" команд над элементами массива (кроме операции присвоения всем элементам массива одного значения). Необходимо организовать цикл по перебору всех элементов массива и записи результата в другой массив.
7 дек 04, 15:55    [1164077]     Ответить | Цитировать Сообщить модератору
 Re: podproqrammi  [new]
novichek1
Guest
To chto xotel ya cdelal:
*********************
CLEA
*USE QSE
*GO TOP
*BROW
q1='10,15,12'
q2='23,11,78'

a1=val(SUBSTR(Q1, 1, 2))
a22= SUBSTR(Q1, 4)
a2=val(SUBSTR(a22, 1, 2))
a3= val(SUBSTR(Q1, 7, 8))

b1=val(SUBSTR(Q2, 1, 2))
b22= SUBSTR(Q2, 4)
b2=val(SUBSTR(b22, 1, 2))
b3= val(SUBSTR(Q2, 7, 8))
c1=a1*b1
c2=a2*b2
c3=a3*b3
qsv=alltrim(str(c1))+','+alltrim(str(c2))+','+alltrim(str(c3))
?qsv
**********************
No, seychas takoy vopros:kak eto proqrammu universalno delat?
To yest, seychas vipolnyaem umnajenie 2-x znachniy chisel.A yesli podruqomu:
napirmer umnajenie 3-x znachniy na 4-x znachny,toqda kak?
8 дек 04, 09:53    [1165669]     Ответить | Цитировать Сообщить модератору
 Re: podproqrammi  [new]
leaf
Member [заблокирован]

Откуда: Ростов-на-Дону --> Москва
Сообщений: 2661
dimension a(10),b(10)
n=8
st=''
for i=1 to n
a(i)=i
b(i)=n-i+1
st=st+alltrim(str(a(i)*b(i)))+','
endfor
?left(st,len(st)-1)
8 дек 04, 10:03    [1165711]     Ответить | Цитировать Сообщить модератору
 Re: podproqrammi  [new]
novicek1
Guest
Ya ne ponyal chto delaet eto proqramma, ili Vi ne ponyali menya.
Yest 2 znachenie:
1) q1='10,15,12'
2) q2='23,11,78'
Rezultat doljen bit takoy:
rezultat=alltrim(str(c1))+','+alltrim(str(c2))+','+alltrim(str(c3))
Zdes:
1. c1=a1*b1
2. c2=a2*b2
3. c3=a3*b3
Eto ya sdelal.No yesli q1 i q2 budet dopustim vot tak:
1) q1='125,1250,12'
2) q2='19,348,55474'
toqda chto mojno delat?
8 дек 04, 11:03    [1165956]     Ответить | Цитировать Сообщить модератору
 Re: podproqrammi  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
Есть пара функция GetWordCount() и GetWordNum + цикл по количеству слов в строке и нет проблем.

c1=""
q1='125,1250,12'
q2='19,348,55474'
q1WordCnt=GetWordCount(q1,",")
q2WordCnt=GetWordCount(q2,",")
* Тут можно проверочку на q1WordCnt=q2WordCnt
for i=1 to q1WordCnt
c1=c1+","+alltrim(str(val(GetWordNum(q1,i))*val(GetWordNum(q2,i))))
next
c1=substr(c1,2)
8 дек 04, 11:22    [1166060]     Ответить | Цитировать Сообщить модератору
 Re: podproqrammi  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Начиная с версии VFP6, есть такая функция

ALINES()

Она разбивает символьную строку на отдельные "строки" и записывает каждую "строку" в отдельный элемент массива

q1='125,1250,12'
LOCAL laQ1(1), lnElements
lnElements = ALINES(laQ1,q1,4,",")

Полученный массив laQ1 будет содержать 3 элемента в каждом из которых содержиться свое значение. Количество элементов массива будет записано в переменную lnElements. Далее простой цикл по всем элементам массива.

В версии VFP6 функция ALINES() могла разбивать строку только по символам перевода каретки (CHR(13) или CHR(10)), поэтому, если у тебя именно эта версия, то можно поступить так:

lnElements = ALINES(laQ1,ChrTran(q1,",",CHR(13)))
8 дек 04, 11:29    [1166106]     Ответить | Цитировать Сообщить модератору
 Re: podproqrammi  [new]
NOVICHEK1
Guest
ALEKSMED,
U menya foxpro 5.Eti funcsii tam net. Poetomu ustanavil foxpro 7.
yesli,
q1='121,3250,34'
toqda
?val(GetWordNum(q1,1))
vozvrashaet 1-ya slova:121
NO,
?val(GetWordNum(q1,2))
vozvrashaet:00
no ya dumayu chto doljen vozvrashat 2-u slovu:3250
Ili ya ne pravilno ponyal?
Vot eti 3 slova mne po otdelnosti nado:
1) 121
2) 3250
3) 34
8 дек 04, 13:32    [1166730]     Ответить | Цитировать Сообщить модератору
 Re: podproqrammi  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
Так как ф-ция GetWordNum по умолчанию считает разделителем пробел, табуляцию или перевод строки, поэтому поправочка:

c1=c1+","+alltrim(str(val(GetWordNum(q1,i,","))*val(GetWordNum(q2,i,","))))
8 дек 04, 13:43    [1166789]     Ответить | Цитировать Сообщить модератору
 Re: podproqrammi  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
Кстати, не знаю как для 5-ки, а для 6-ки эти функции были в FoxTools.fll
8 дек 04, 13:53    [1166847]     Ответить | Цитировать Сообщить модератору
 Re: podproqrammi  [new]
Hel!Riser
Member

Откуда: Нижний Новгород
Сообщений: 972
они в и 5.0 и в 6.0 есть тока называюца без префикса Get
ЗЫ и в FPD они были. Тока библа звалась fpath.PLB
8 дек 04, 14:10    [1166940]     Ответить | Цитировать Сообщить модератору
 Re: podproqrammi  [new]
novichek1
Guest
Spasibo,poluchilos
8 дек 04, 15:26    [1167316]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить