IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> операции со знаками
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


6 задание
Арифметическое значение a О b О c О d О e = r операции в знаках закрыты. Тут можно будет использовать здоровых чисел операций + , - ,* , div, mod.

Напишите правильную программу которая нашла бы какие должны быть операций знаках чтобы уравнение было бы правильное.

Первичные данные записаны в файле duom.txt На одной единственной строчке написаны отделенные пробелом здоровые числа a, b, c, d, e, r (a, b, c, d, e, r ≤ 3000).

Результат - полученое значение или слово - нельзя - записываются в файл rez.txt. Все элементы отделены одним пробелом.

Внимание Промежуточных подсчета результатов непереходят int64 .
первичные данные
4 3 2 3 1 6
результат
4 mod 3 + 2 * 3 – 1 = 6
Что еще за тип int64?
тут как то примерно как и в этом задание задача подсчет чтобы то число найти


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


Цитата
Что еще за тип int64?


о типах в делфи из ссправки скопировал:
Generic integer types for 32-bit implementations of Delphi  
Type Range Format
Integer -2147483648..2147483647 signed 32-bit
Cardinal 0..4294967295 unsigned 32-bit
Fundamental integer types include Shortint, Smallint, Longint, Int64, Byte, Word, and Longword.

Fundamental integer types
Type Range Format
Shortint -128..127 signed 8-bit
Smallint -32768..32767 signed 16-bit
Longint -2147483648..2147483647 signed 32-bit
Int64 -2^63..2^63-1 signed 64-bit //<------------------------------------- вот твой тип
Byte 0..255 unsigned 8-bit
Word 0..65535 unsigned 16-bit
Longword 0..4294967295 unsigned 32-bit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


а тут паскаль у меня можешь тогда подробнее написать то я непонимаю все что с знаком связано ^


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(maksimla @ 15.03.2009 12:33) *
я непонимаю все что с знаком связано ^
Этим знаком для простоты обозначается степень:
2^63 = 263 = 9223372036854775808


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


ого какая степень большая. Странно только почему так если все немогут превышать 3000 то и промежуточные результаты меньше будут непонел я зачем мне это написали в задании


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






У тебя 5 чисел... Если каждое число будет максимальным, то максимально возможный результат будет равен 3000*3000*3000*3000*3000 = 30005 = 243000000000000000, промежуточный - чуть меньше, но тебе гарантировали, что любой промежуточный результат поместится в Int64, то есть, только этот тип ты можешь использовать без опаски...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


тогда вот такой вопрос (r ≤ 3000). там было написано это значит что результат не превышает 3000 как я понял и все можно в word тип поместить и результат наверное тоже но надо подумать как считать это все вот я этого и не знаю

считать если начать с перебора с подставление знаков то тогда может тип Int64 понадобится тоесть сперва так идут a + b + c + d + e = r потом a + b + c + d - e = r ну и так далее

а если будим както так перебирать a + b сравниваем с r и насколько больше или меньше но неможет быть больше 3000 и тогда подставляем a + b - c и опять сравниваем или так как-то нельзя?


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Вот возможное решение.
const
nPar=5;
nOper=5;
Opers: array[0..nOper-1]of string=('+','-','*','div','mod');

var
Par,Par0: array[0..nPar-1]of Int64;
Oper,Oper0: array[0..nPar]of word;
i,m: word;
r,r0,t: Int64;
f: text;

begin
Assign(f,'duom.txt');
ReSet(f);
for i:=0 to nPar-1 do Read(f,Par0[i]);
Read(f,r0);
Close(f);
for i:=0 to nPar do Oper0[i]:=0;
m:=0;
repeat
Par:=Par0;
Oper:=Oper0;
for i:=1 to nPar-1 do case Oper[i] of
2: begin
Par[i]:=Par[i-1] * Par[i];
Par[i-1]:=0;
Oper[i]:=Oper[i-1]
end;
3: begin
Par[i]:=Par[i-1] div Par[i];
Par[i-1]:=0;
Oper[i]:=Oper[i-1]
end;
4: begin
Par[i]:=Par[i-1] mod Par[i];
Par[i-1]:=0;
Oper[i]:=Oper[i-1]
end
end;
r:=Par[0];
for i:=1 to nPar-1 do case Oper[i] of
0: r:=r+Par[i];
1: r:=r-Par[i]
end;
if r=r0 then begin
Write(Par0[0]);
for i:=1 to nPar-1 do Write(' ',Opers[Oper0[i]],' ',Par0[i]);
WriteLn(' = ',r);
Inc(m)
end;
t:=1;
for i:=1 to nPar do begin
t:=Oper0[i]+t;
Oper0[i]:=t mod nOper;
t:=t div nOper
end
until Oper0[nPar]=1;
WriteLn(m,' combinations found')
end.

Максим, ты спрашивай поактивнее, что неясно.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


for i:=0 to nPar-1 do Read(f,Par0[i]);
Read(f,r0);
Close(f);


а тут как то странно записывает в масив почему так
в файле 4 3 2 3 1 6
записывает в массив выводится
0 1 2 3 4 6

почему так ведь неправильно


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата
а тут как то странно записывает в масив почему так
Нормально все записывает... Ты как проверял? У меня вот чего показывает:
Прикрепленное изображение

Ты чем компилируешь?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


компелирую fps 0.6.4a это компилятор на котором учимся и на этом проверяют


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


может надо что то добавить например как это
   {$mode TP}
и тогда заработает на этом компиляторе а?

Сообщение отредактировано: maksimla -


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Цитата
может надо что то добавить
Да, добавить надо, но не совместимость... Какая-то глючноватая среда, если честно. Как можно сейчас пользоваться компилятором версии 1.0.6 ??? Там же нет практически ничего. Сейчас уже 2.2.X в ходу давно.

В общем, удалось мне нормально прочитать значения из файла с использованием этого компилятора:

var X: int64; // Добавляешь эту переменную

...
for i:=0 to nPar-1 do begin
read(f, X);
Par0[i] := X;
end;
Read(f,r0);

Так все читается как положено.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


а что это тут
2: begin
цифры значат тут везде но это кажется не метка


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Почему не метка? Как раз метка... Case в цикле не заметил?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


да уж не заметил спасибо сейчас все понятно


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 11:51
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name