Помощь в решении задач на Pascal/Delphi

scrptn

New Member
[quote name='artplan' date='Вчера, 22:26' post='494906']два массива ... В каждом из них сверху вниз[/quote] А где у массива верх и низ? :) Ниже я считаю, что старшие разряды числа записаны в начале массива, а младшие - в конце, например вот так:

[1,2,3] - число 123

Так будет удобно сравнивать. А преподу скажи, чтобы он свои задания читал и таких неоднозначностей больше не допускал, приводя пример.

#1

Код:
var a, b: array[0..9] of Integer;
    i: Integer; { счетчик }
    v: Integer; { на самом деле, нужно использовать булев тип }

begin 

  { число A - заполни сам }
  a[0] := 1;
  a[1] := 1;
  a[2] := 1;
  a[3] := 1;
  a[4] := 1;
  a[5] := 1;
  a[6] := 1;
  a[7] := 1;
  a[8] := 1;
  a[9] := 1;

  { число B - еще не надоело? Это Pascal, крошка! }
  b[0] := 1;
  b[1] := 1;
  b[2] := 1;
  b[3] := 1;
  b[4] := 1;
  b[5] := 1;
  b[6] := 1;
  b[7] := 1;
  b[8] := 1;
  b[9] := 1;

  v := 1;

  for i := 0 to 9 do
  begin
    if a[i] < b[i] then
    begin
      v := 0;
      break;
    end;
  end;

  writeln("выводишь переменные и пояснения здесь");

end.
Да, Pascal нужно официально признать способом пыток.

[quote name='artplan' date='Вчера, 22:26' post='494906']2.У вещественного вектора X (x1, x2, …, xN) компоненты с нечетными номерами заменить их квадратами, компоненты с четными номерами заменить их кубами. Печатать исходный и преобразованный векторы.[/quote] Это мне уже лень. Суть в том, что пробегаешь в цикле по массиву. Находишь остаток от деления счетчика на 2: если 0 - четный индекс. Для нечетных индексов присваивашь элементу с этим индексом новое значение - квадрат, для четных - ну ты понел.

Следи внимательно за нумерацией элементов. Лучше нумеруй, начиная с единицы, чтобы не прищлось каждый раз прибавлять единичку или менять местами действия.
 
A

artplan

Guest
большое вам спасибо, буду сейчас доделывать. пытка - не то слово)

и кстати я так перечитал ваше решение, на самом деле условие задачи немного другое. условие, как я понял, такое:
два массива, записаны в столбик, в виде
1
2
3
4
5

и в каждом элементе цифра числа - сверху вниз, т.е число 12345, его надо сравнить с числом получаемым из другого массива, например с 23459, полученного из массива
2
3
4
5
9

вот(
 
L

Lizzy

Guest
Помогите решить задачу, плииз)
Составить программу расчета колебности на киле судна, зная что
, где n - натяжение, m - момент, h - наклон ребра, который может быть равен 18,37 если ребро бетонное; 1,56 если ребро деревянное; 12,62 если ребро металическое....
Заранее спасибо)
 
S

slow

Guest
Помогите пожалуйста решить задание!Бьюсь уже второй день и безрезультатно!! :wall: :wall: :wall:
:angry:
Напишите программу, которая считывает информацию с существующего типизированного файла, и выводит на экран:
-фамилии и имена учащихся, имеющих оценки "хорошо" и "отлично" по дисциплине "химия";
-фамилии и имена студентов, которые имеют оценку "удовлетворительно" по дисциплине "Информатика";
-фамилии и имена учащихся, имеющих оценки "хорошо" и "отлично" по обеим дисциплинам;
-средний балл по дисциплине "химия";
-количество в группе девочек и мальчиков отдельно.

Буду весьма признателен за работу!!! :good:
 
S

slow

Guest
Program lab4_2a;
{Програма створює типiзований файл, в який записує введений користувачем
з клавiатури масив елементiв типу запис з полями:
(1)прiзвище та iм'я студента; 2)оцiнка по дисциплiнi "хiмiя"
по чотирибальнiй системi; 3)оцiнка по дисциплiнi "iнформатика"
по чотирибальнiй системi; 4)стать студента;(кiл-ть елементiв в
масивi вводиться з клавiатури}
uses crt; {пiд'єднання модуля}
const
namef='Student.dat'; {iм'я фiзичного файлу}
maxarr=30;
type
student=record {запис, який включае в себе декiлька компонентiв,
якi можуть мати рiзнi типи}
PI:string; {змiнна,що вiдповiдае за запис Прiзвища та iм'я}
O_xim:integer; {змiнна,що вiдповiдае за запис оцiнок з хiмii}
O_inf:integer; {змiнна,що вiдповiдае за запис оцiнок з iнформатики }
mw:string; {змiнна,що вiдповiдае за запис статi}
end;
st=record
n:integer; {кiлькiсть студентiв}
arr:array[1..maxarr] of student; {тип даних масиву записiв}
end;
var
f:file of st; {тип файлу, який вiдноситься до st=record}
stu_dent:st; {змiнна,яка вiдповiдае за запис st=record}
i:integer; {лiчильник студентiв}

{Основний блок програми}
Begin
clrscr; {очистка екрану}
with stu_dent do {метод,який прискорюе доступ до полей запису}
begin
repeat
writeln('Введiть кiлькiсть студентiв у групi вiд 1 до ',maxarr);
readln(n);
if not((n>=1) and (n<=maxarr)) {перевiрка на дурня}
then writeln('Недопустиме значення!');
until (n>=1) and (n<=maxarr);
clrscr; {очистка екрану}
{блок запису данних}
for i:=1 to n do
with arr do {метод,який прискорюе доступ до полей запису}
begin
writeln(i,'-й студент');
writeln('Прiзвище та iмя студента:');
readln(PI);
repeat
writeln('Оцiнка з дисциплiни "хiмiя" (2,3,4,5):');
readln(O_xim);
if not((O_xim>=2) and (O_xim<=5))
then writeln('Недопустиме значення!');
until (O_xim>=2) and (O_xim<=5);
repeat
writeln('Оцiнка з дисциплiни "iнформатика" (2,3,4,5):');
readln(O_inf);
if not((O_inf>=2) and (O_inf<=5))
then writeln('Недопустиме значення!');
until (O_inf>=2) and (O_inf<=5);
repeat
writeln('Стать студента(чоловiча - ч, жiноча - ж):');
readln(mw);
if not((mw='ч') or (mw='ж'))
then writeln('Недопустиме значення!');
until (mw='ч') or (mw='ж');
writeln;
end;
end;
assign(f,namef); {процедура зв'язує файлову змiну з фiзичним файлом}
rewrite(f); {процедура вiдкриває файл для запису}
write(f,stu_dent); {процедура записуе данi у файл}
close(f); {процедура закриває файл}
End. {ну ось i все}
 
slow написал(а):
Програма створює типiзований файл, в який записує введений користувачем
з клавiатури масив елементiв типу запис з полями:
(1)прiзвище та iм'я студента; 2)оцiнка по дисциплiнi "хiмiя"
по чотирибальнiй системi; 3)оцiнка по дисциплiнi "iнформатика"
по чотирибальнiй системi; 4)стать студента;(кiл-ть елементiв в
масивi вводиться з клавiатури}
slow

[success]1.2. Официальный язык Форума - русский. [/success]


что - совсем плохо стало без великого и могучего там - студентам уже ничего не понять на мове? :crazy:

slow написал(а):
Помогите пожалуйста решить задание!

Напишите программу, которая считывает информацию с существующего типизированного файла, и выводит на экран:

Буду весьма признателен за работу!!! :good:
так вам конкретно помочь или решить за вас (т.е. с какого-то перепугу выполнить всю вашу работу за "красивые глаза") а вам зачет, слава и поцелуи? зачем даже в Украине такие "программеры" нужны вообще, а? :nea:

ну ежели кто переведет... учись, студент (c)... :pardon:
 

scrptn

New Member
[member="slow"], подскажу только общий алгоритм

Запись файла
Код:
группы := массив;
количество_групп := прочитать_с_клавиатуры();

для номер_группы := от 1 до количество_групп
начало цикла

  количество_студентов_группы := прочитать_с_клавиатуры();

  для номер_студента := от 1 до количество_студентов_группы
  начало цикла
    группы[номер_группы][номер_студента].имя := прочитать_с_клавиатуры();
    группы[номер_группы][номер_студента].оценка1 := прочитать_с_клавиатуры();
    группы[номер_группы][номер_студента].оценка2 := прочитать_с_клавиатуры();
  конец цикла;

конец цикла;

записать_в_файл(группы);
// с записью файлов в Паскаль беда, сам постарайся разобраться

Собственно, программа
Код:
группы := массив;
номер_группы := 1;

файл := открыть_файл();
пока группы[номер_группы] := взять_запись_из_файла(файл)
начало цикла

  средний_балл_химия := 0;

  для номер_студента := от 1 количество_элементов_в_массиве(группы[номер_группы])
  начало цикла

    если группы[номер_группы][номер_студента].оценка_химия >= 4 тогда
      вывести_на_экран(
        группы[номер_группы][номер_студента].имя, 
        " получил ", 
        группы[номер_группы][номер_студента].оценка_химия, 
        " по химии"
      );

    средний_балл_химия := средний_балл_химия + группы[номер_группы][номер_студента].оценка_химия;

  конец цикла;

  // для других оценок аналогично
  
  средний_балл_химия := средний_балл_химия / количество_элементов(группы[номер_группы]);
  вывести_на_экран(средний_балл_химия);

  // количество мальчиков и девочек аналогично, только без деления после цикла

  номер_группы := номер_группы + 1;
конец цикла;
Форум почему-то считает, что лучше меня знает, как расставлять разрывы строк, поэтому код выглядит не так, как я его писал.
 
К

Кузьма

Guest
Доброво времени суток! прошу вас помочь мне в решении задач! их нужно решить в delphi!

1) Дано действительное число а. Не пользуясь никакими другими арефмитическими операциями, кроме умножения, получить:
а)а4 за две операции
b )а6 за три операции
c)а7 за четыре операции
d)а8 за три операции

2)Найти все двузначные числа (по порядку), произведение который не более 1000.

3) Даны действительные числа а1 .......а20 .Получить:
(а1 +а20 ,а2 +а19 ..........а10 +а11)
Сам я очень плохо пока разбираюсь в данной прогамме, если можно то дайте ссылки на материал где понятно расписываеться решение типовых задач и создание программ в delphi.
Спасибо заранее!!!
 

Mulll•GuN

New Member
Кузьма написал(а):
Доброво времени суток! прошу вас помочь мне в решении задач! их нужно решить в delphi!

1) Дано действительное число а. Не пользуясь никакими другими арефмитическими операциями, кроме умножения, получить:
а)а4 за две операции
b )а6 за три операции
c)а7 за четыре операции
d)а8 за три операции

2)Найти все двузначные числа (по порядку), произведение который не более 1000.

3) Даны действительные числа а1 .......а20 .Получить:
(а1 +а20 ,а2 +а19 ..........а10 +а11)
Сам я очень плохо пока разбираюсь в данной прогамме, если можно то дайте ссылки на материал где понятно расписываеться решение типовых задач и создание программ в delphi.
Спасибо заранее!!!
http://forum.vingrad.ru/forum/s/0527050494e133f16429bd0103bbc035/delphi-kylix-pascal.html
 
Н

Никишин_Андре

Guest
помогите пожалуйста с решением в Делфи
Дан целочисленный массив A размера N. Назовем серией группу
подряд идущих одинаковых элементов, а длиной серии — количество этих
элементов (длина серии может быть равна 1). Сформировать два новых
целочисленных массива B и C одинакового размера, записав в массив B
длины всех серий исходного массива, а в массив C — значения элементов,
образующих эти серии.
 
Сверху