Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Решение задач на Pascal. Форум 2
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ]
Модераторы: paradise, KMA
  

BlackFlame



Новичок

Здравствуйте, уважаемые! Пожалуйста, помогите доработать программу, чтобы вывод суммы осуществлялся _только_ если в конце стоит _точка_. Условие: Дана последовательность литер, имеющая следующий вид: d1±d2±d3±…±dn (di- цифры) за которой следует точка. Вычислить данное значение.
Код программы:
const
cf=['0'..'9'];
var
s:string;
i,sum,t,c:integer;
begin
writeln('Vvedite posledov. tsifr razdelennyh znakami + i -,v konce tochka:');
readln(s);
val(s[1],t,c); sum:=t; {первую цифру превращаем в число, это первая сумма}
for i:=2 to length(s)-1 do {то же самое делаем с остальными цифрами}
 begin
   if (s[ i ] in cf)and(s[i-1]='+')then
      begin
         val(s[ i ],t,c);
         sum:=sum+t;  {если плюс, прибавляем}
      end
   else if (s[ i ] in cf)and(s[i-1]='-')then
      begin
         val(s[ i ],t,c);
         sum:=sum-t;    {если минус, вычитаем}
     end;
 end;
writeln('sum=',sum);
readln;
end.
Буду очень благодарна.

(Сообщение отредактировал KMA 19 апр. 2008 23:18)

Всего сообщений: 2 | Присоединился: апрель 2008 | Отправлено: 19 апр. 2008 16:45 | IP
Serega1992


Новичок

Меняете строку
readln(s);
на следующую:
repeat readln(s) until s[length(s)]='.';
Вычисления не будут производиться, пока пользователь не введёт правильную комбинацию.

Всего сообщений: 50 | Присоединился: апрель 2008 | Отправлено: 19 апр. 2008 17:16 | IP
BlackFlame



Новичок

Спасибо, Serega1992!  Очень помог.

Всего сообщений: 2 | Присоединился: апрель 2008 | Отправлено: 19 апр. 2008 18:51 | IP
KMA



Долгожитель

Den 4 ik

Если ты хотел сделать сортировку, то тебе необходимо после then ( в условии цикла) заключить три операции в логические скобки (begin и end) и будет тебе счастье.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 20 апр. 2008 0:37 | IP
KMA



Долгожитель



Помогите пожалуста...Сам немогу составить..Надо сложить 3 задачи в одну программу,так чтоб пользователь сам выбрал что он хочет решить.Вот коды задачь.



Воспользуйся оператором case. Впереди попросив ввести цифру задачи.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 20 апр. 2008 2:18 | IP
Guest



Новичок

В строковом массиве хранятся названия дней недели. Вывести их в алфавитном порядке. У меня чет не получается. Найдите плиз ошибку:
Code Sample:
 
program SortDriver;
type
 DataItem = string[80];
 DataArray = array [1..80] of DataItem;
var
test: dataarray;
 t, t2: integer;
 testfile: file of char;
procedure QsString(var item: DataArray; count:integer);
 procedure qs(l, r: integer; var it:DataArray);
   var
   i,j:integer;
   x, y: DataItem;
 begin
   i := l; j := r;
   x := it[(l+r) div 2];
   repeat
     while it < x do i := i+1;
     while x < it[j] do j := j-1;
     if i<=j then
     begin
       y := it;
       it := it[j];
       it[j] := y;
       i := i+1; j := j-1;
     end;
   until i>j;
   if l<j then qs(l, j, it);
   if l<r then qs(i, r, it);
 end;
begin
 qs(1, count, item);
end;
begin
Assign(testfile, 'c:\mass.txt');
 Reset(testfile);
 t := 1;
 while not Eof(testfile) do begin
    read(testfile, test[t]);
     t := t+1;
 end;
 t := t-2;
 QsString(test, t);
 for t2 := 1 to t do write(test[t2]);
 WriteLn;
end.



Всего сообщений: Нет | Присоединился: Never | Отправлено: 20 апр. 2008 9:58 | IP
KMA



Долгожитель

Вот честное слово, пишите комментарии, хотя бы общие.
Быстрая сортировка у тебя вроде верно работает.
А вот с типом файла, ты чего-то намудил. Пиши уж тогда
Code Sample:
 
var testfile: file of string;



Если у тебя тип char, да ты еще и read юзаешь, получается он у тебя считывает по одному символу, за один проход. Т. е., если у тебя написано что-то типа "Понедельник" то это тебе вернет чудо на первом месте "П", на втором "о", на третьем "н" и т. д. Вообще не страдай ерундой и объяви файл как текстовый... и не парься вообщем... юзай readLn, и writeLn;

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 20 апр. 2008 22:38 | IP
Guest



Новичок

пасибо большое. Только преподаватель сказал "укоротить" программку. Если не трудно как нить сделайте покороче, у меня не получается(

Всего сообщений: Нет | Присоединился: Never | Отправлено: 20 апр. 2008 22:47 | IP
DaImeR



Новичок

Что то до меня не дошло...а как тогдa сделать чтоб считывал слово из массива и потом сортировал по первой букве и т. д. Если не трудно покажите на примере

Всего сообщений: 7 | Присоединился: апрель 2008 | Отправлено: 21 апр. 2008 6:41 | IP
Den 4 ik



Новичок

KMA ,спасибо!еще есть такой вопрос:каким образом обозначить предпоследний член матрицы?послдний мне подсказали так a[n-i+1].

Всего сообщений: 6 | Присоединился: апрель 2008 | Отправлено: 21 апр. 2008 16:27 | IP

Эта тема закрыта, новые ответы не принимаются

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ]

Форум работает на скрипте © Ikonboard.com