Lisp, Где ошибка в задаче ?
Вывести таблицу соответствий для площадей или объемов, если
тауншип (США) = 93,24 кв. км;
( setq a 0 c 1 )
( setq townShip 93.24 )
( defun fun( x )
( loop
( setq a ( + a c ) )
( setq townShip ( * a townShip ) )
(
( cond ( ( > a x ) ( return ) )
( princ a )
( print townShip )
)
)
)
)
( princ "input a number : ")
( setq num( read ) )
( princ "township P")
( fun num )
( fresh-line )
( princ "Press any key to exit ")
( fresh-line )
( setq xz ( read ) )
( system )
(let ((town-ship 93.24))
(dotimes (i max t)
(format t "~A : ~A~%" i (* i town-ship)))))
Результат:
CL-USER> (town-ship-table 5)
0 : 0.0
1 : 93.24
2 : 186.48
3 : 279.72
4 : 372.96
T
Оно? Если не оно, то опиши задачу нормально, т.е. что на входе даётся и что должно быть на выходе.
И таки прочитай уже тот же PCL, ибо складывается ощущение, что ты ничерта не понимаешь, что пишешь.
п.с. юзался SBCL.
{
float townShip = 93.24;
int num;
cin >> num;
system("cls");
cout << "township\tP\n";
for ( int i = 1; i < num; i++ )
{
cout << setw( 8 ) << i << "\t" << i * townShip << endl;
}
system("pause");
return 0;
}
извиняйте конечно но я в гробу видел этот ЛИСП просто надо лабу сдать, делаю уже который день и пена уже с рота валит ...
(let ((town-ship 93.24))
(dotimes (i max t)
(format t "~A : ~A~%" (+ 1 i) (* (+ 1 i) town-ship)))))
Вот такой вариант реализует твой for из C++ кода один в один, обвязку сам делай.
По мне так у тебя там месиво какое-то и единственное что оно может показать, так это то, что ты даже не пытался разобраться с языком на котором пишешь.
( clear-screen ) // очистка экрана
( setq a 0 c 1 ) а = 0, с = 1
( setq townShip 93.24 ) тут townShip = 93.24
( defun fun( x ) имя функции и список аргументов
( loop // цикл
( setq a ( + a c ) ) а = а + 1 или по умнее а += 1
( setq townShip ( * a townShip ) ) // тут townShip множится на а /// а = 1, 2 , 3 ... n ( в зависимости какое число задам, чтоб передать в функию )
(
( cond ( ( > a x ) ( return ) ) // если а > x ( х мое число ) повернуть ( это я понял как выйти вопше из цикла но у меня оно не работает или условие не верна )
( princ a ) // друк а
( print townShip ) // друг товншипов
)
)
)
)
( princ "input a number : ") // сообщение о вводе
( setq num( read ) ) // читаю с клавы число
( princ "township P") // просто выводит
( fun num ) // передаю в функию
// а дальше тут панты ))) не влияет на работу программы
( fresh-line )
( princ "Press any key to exit ")
( fresh-line )
( setq xz ( read ) )
( system )
делал сам отдельно функцию - работало норм а в цикле нет
[ATTACH]5393[/ATTACH]
Вопрос на засыпку: А начерта эти коментарии нужны то, тут всё и так понятно (но проще переписать, чем пытаться править)? Кот твоей fun ужасен, чем не устраивает моя реализация?
( print townShip ) // друг товншипов
Убило...
п.с. и таки укажи используемую реализацию лиспа уже.
Убило...
хДД не друг а ДРУК, думаю сам уже додумался ))) ничё бывают опечатки )))))))
моя функция не ужасна, а самая элементарная, твоя не устраивает, потому что у тебя там много того, чего я не знаю и 1-й раз вижу, потом я уже переписывал ее 10 раз но не работает, но всё ровно буду стараться добить ее по своему ... а тауншип - одна из единиц административного деления третьего уровня в США. чтоб не пугался что я тут бред пишу )
Может стоит погуглить или открыть книжку? Practical Common Lisp (есть перевод в интернете) или Т.1 Мира Лиспа подойдут идеально. Хотя если ты хочешь дальше пилить код в Си стиле на лиспе, то я тебе в этом не помощник, сам кактус кушай.
WTF? o_0
:facepalm:
{
float townShip = 93.24;
int num;
cin >> num;
system("cls");
cout << "township\tP\n";
for ( int i = 1; i < num; i++ )
{
cout << setw( 8 ) << i << "\t" << i * townShip << endl;
}
system("pause");
return 0;
}
:facepalm:
C++/CLI, native C++, функции DOS - всё в кучу...
P.S. и я бы на вашем месте уделил побольше внимания изучению Lisp: в последнее время функциональное программирование вошло в моду, и становится необходимым знать его, т. к. это резко упрощает создание распараллеливаемых программ. Метапрограммирование, родоначальником коего является Лисп, тоже постепенно начинает проникать в сознание масс.
Конечно, вряд ли на деле придётся много применять этот язык. Но важно знать саму теорию!
C++/CLI, native C++, функции DOS - всё в кучу...
P.S. и я бы на вашем месте уделил побольше внимания изучению Lisp: в последнее время функциональное программирование вошло в моду, и становится необходимым знать его, т. к. это резко упрощает создание распараллеливаемых программ. Метапрограммирование, родоначальником коего является Лисп, тоже постепенно начинает проникать в сознание масс.
Конечно, вряд ли на деле придётся много применять этот язык. Но важно знать саму теорию!
эту строку я не понял, хотел бы услышать ответ по конкретнее - чисто из любопытства ...
а задачу свою я уже сам решил, проснулся и меня просветило, теперь она работает 100 % как я хотел ...
( setq a 0 c 1 res 0)
( setq townShip 93.24 )
( defun fun( x )
( loop
( setq a ( + a c ) )
( setq res ( * a townShip ) )
( cond
( ( > a x ) ( return ) )
(
( princ a )
( princ " " )
( princ res )
( fresh-line )
)
)
)
)
( princ "input a number : ")
( setq num( read ) )
( princ "township P")
( fresh-line )
( fun num )
( fresh-line )
( princ "Press any key to exit ")
( fresh-line )
( setq xz ( read ) )
( system )
а за совет спасибо
эту строку я не понял, хотел бы услышать ответ по конкретнее - чисто из любопытства ...
C++/CLI
cin >> num;
...
cout << "township\tP\n";
...
cout << setw( 8 ) << i << "\t" << i * townShip << endl;
...
native C++ (и то, смешал)
system("cls");
...
system("pause");
...
функции DOS
извиняйте конечно но я в гробу видел этот ЛИСП просто надо лабу сдать, делаю уже который день и пена уже с рота валит ...
Похоже, что не только Lisp, а так же всё, вышеперечисленное.
:facepalm:
И да
Сдаётся,ошибка всё же в решении ☺