Сделать стартовой Добавить в Избранное
Часы в заголовке окна

Форум студентов МГУ Печати ФИТиМ ИТД

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум студентов МГУ Печати ФИТиМ ИТД » Семестр » Вопросы к Сергею Юрьевичу (по информатике)


Вопросы к Сергею Юрьевичу (по информатике)

Сообщений 41 страница 53 из 53

41

Imka), Kit, прошу прощения за то, что толком ничего не отвечу.
Дело в том, что я жутко заморочен вопросами приёма в Бауманке, только что приехал
с собрания для участников тестирования (репетиционных экзаменов, то есть) и вообще
ложусь спать :-)
Давайте посмотрим Ваши программы завтра. Сейчас я не в состоянии, увы :-(

F1aSh, Refal-SciTE скачивается отсюда:
http://refal.net/~belous/download-refalscite.htm

Отредактировано Скоробогатов (2007-05-20 18:40:01)

0

42

:) Спасибо, Сергей Юрьевич.

0

43

Сергей Юрьевич. Значит такой вопрос. Может я чего туплю.
Когда я пытаюсь запустить Refal-программу, он мне выдает следующее: "Системе не удается найти указанный путь". Компилирует он вродь нормально. Без ошибок. Но потом облом.
В чем проблема?

P.S. Причем, example (который дается при первом запуске) он компилирует и выполняет без проблем.

0

44

Ага, есть там небольшая проблемка :-)
Лечится она совсем просто.

В папке refal5, которая находится там, куда Вы установили Refal-SciTE,
лежит файлик refgo_scite.bat, который имеет следующий вид:

Код:
@echo off
rem refgo_scite.bat
rem
rem "pause" for watching result in dos session before
rem normal clousing output window.
rem 
rem Leonid Belous, belous@ilt.kharkov.ua 
rem
refgo.exe %1 %2 %3 %4
pause

Предпоследняя строка в этом файле записана неправильно.
В неё надо добавить полный путь к интерпретатору refgo.

Делается это так.
Предположим, что Вы установили Refal-SciTE в папку c:\Refal-SciTE.
Тогда предпоследняя строка должна выглядеть так:

Код:
c:\Refal-SciTE\refal5\refgo.exe %1 %2 %3 %4

Если Вы догадались установить Refal-SciTE в папку, имя которой
содержит пробелы (например, в c:\Program files\Refal-SciTE),
то придётся добавить кавычки:

Код:
"c:\Program Files\Refal-SciTE\refal5\refgo.exe" %1 %2 %3 %4

0

45

Урррааааа!!! Спасибо, Сергей Юрьевич! :dance:  :locomotive:
Я уж думал, что дома прогать не смогу)))
Еще раз спасибо!

0

46

Сергей Юрьевич. Я не отстану.  :D

Написал программу, в которой необходимо, чтобы буквы удваивались. Короч та, что с функцией Repeat Twice. Никаких ошибок при компиляции не выдает. При запуске выводит следующее сообщение:

Код:
REFAL ERROR:  RECOGNITION IMPOSSIBLE
Refal system Error: Recognition impossible.
Do you want to print view-field? [Yn]Refal-5 System. Version PZ Jan 28 2002
*** Active function: RT
*** Active expression:
<RT >

*** The View Field:
<STOP$ <Print 'aabbcc' <RT >>>

*** Number of Steps =  5
Elapsed system time: 5.469 seconds
*** Buried:
()

Memory allocated =      8192 Bytes

Но меня интересует выделенная область.
Вот эта строка:

<STOP$ <Print 'aabbcc' <RT >>>

Т.е. он выводит то, что мне и нужно. Изначально я вводил 'abc'.

Вот сама программа с функцией Repeat Twice:

Код:
$ENTRY Go { = <Print <RT <Card>>>; }

RT { 
    s.X e.1 = s.X s.X <RT e.1>;
    s.X = s.X;
}

0

47

Правильно вот так:

Код:
$ENTRY Go { = <Print <RT <Card>>>; }

RT { 
    s.X e.1 = s.X s.X <RT e.1>;
    = ;
}

У Вас пустое выражение функция RT не могла обработать.

0

48

Точно! Спасибо))

0

49

Сергей Юрьевич,помогите пожалуйста,у меня все равно не получается((((

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

void stroka(char A[100], char B[100], char C[100])
{
     int i, k=0;
     char *Q = A, *W = B;
     if (strlen(Q) < strlen(W))
     {
         char *T;
         T = Q;
         Q = W;
         W = T;
     }

     C[0]='0';
     for (i=strlen(Q)-1; i>=0; i--)
     {
          C[i+1]=Q[k]-'0'+W[k]-'0'+k;
          k=C[i+1]/10;
          C[i+1]=C[i+1]%10+'0';
     }
     if (k!=0)
          C[0]=k+'0';
    C[strlen(A)+1]=0;
}

int main(void)
{
     char s[100], A[100], B[100], C[100];
     int k, i=0, j;

     gets(s);

     while (s[i]>48 && s[i]<59)
     {
          A[i]=s[i];
          i++;
     }
     A[i] = 0;

     for (k=i+1; k<strlen(s); k++)
      {
          j = 0;
          while (s[k]>48 && s[k]<59)
          {
               B[j]=s[k];
               j++;
               k++;
          }
          B[j] = 0;

          stroka(A,B,C);
          printf("\"%s\" + \"%s\" => \"%s\"\n",A,B,C);

          for (j = 0; C[j] != 0; j++)
              A[j] = C[j];
          A[j] = 0;
       }
     
     printf("%s",A);
     return 0;
}

0

50

Сергей Юрьевич, а когда можно придти с зачетками проставить оценки?

0

51

С зачётками Вы приходите строго на экзамен, по расписанию.

0

52

Сергей Юрьевич,подскажите пожалуйста что дальше делать.Надо чтобы подряд идущие слова нечётной и чётной длины в строке соединялись,их буквы чередовались,причём буквы нечетного слова шли в обратном порядке

#include"stdafx.h"
#include<string.h>
#include<math.h>
#define N 100

int fun(char A[N],int B[N],int C[N])
{
int i,k=0;
for(i=0;i<strlen(A);i++)
{
    while(A[i]==' ')
    i++;

        B[k]=i;
   
   
    while(A[i]!=' '&& i<strlen(A))
   
    i++;
    C[k]=i-1;
       
    k++;
}
return k;
}

int main()
{
int k, i, num_words;
char A[N];
int B[N];
int C[N];
gets(A);
num_words = fun(A,B,C);
for(k=0;k<num_words;k++)
    for(i=0;i<num_words;i++)
    {
    if((C[i]+1-B[i])%2!=0 && (C[i+1]+1-B[i+1])%2==0)
             .............................................

    }

printf("%d\n",num_words);
printf("\n");
for(i=0;i<num_words;i++)
{
    printf("%d\n ",B[i]);
}
printf("\n");
    for(i=0;i<num_words;i++)
{
    printf("%d\n",C[i]);
}

    return 0;
}

0

53

Маргаритка написал(а):

Надо чтобы подряд идущие слова нечётной и чётной длины в строке соединялись,их буквы чередовались,причём буквы нечетного слова шли в обратном порядке

Ух ё :huh: Я даже условие задачи не понял, не то что способ воплощения ее решения...

0


Вы здесь » Форум студентов МГУ Печати ФИТиМ ИТД » Семестр » Вопросы к Сергею Юрьевичу (по информатике)