Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 06.05.2019
Сообщений: 31

Вывод программы-2

14.01.2020, 04:19. Показов 3901. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана программа:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var N: integer;
    m, k: real;
begin
for var a:=1 to 98 do
for var b:=a+1 to 99 do
for var c:=b+1 to 100 do
    begin
      N:= a*a+b*b+c*c;
      m:= N/3;
      k:=sqrt(m);
      if (a*a+b*b+c*c) mod 3=0 then writeln(a,'*',a,'+',b,'*',b,'+',c,'*',c,'=',N,'=3*',m,';',k);
    end;
    writeln;
end.
Нужно подправить её так, чтобы значение k было натуральным числом+вывести всё в текстовый файл. Заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2020, 04:19
Ответы с готовыми решениями:

Вывод результатов работы программы в файл
добрый день. опыт не большой в работе с Паскалем. есть исходный код программы. проблема вот в чем, какие значения вводить, и как сделать...

Вывод результата при запуске программы
Кто-нибудь подскажите пожалуйста. При запуске программы дает вводить первоначальное значение, сам результат показывает при повторном...

Вывод программы
У меня есть готовый проект. Как правильно вывести его в .exe?

14
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.01.2020, 08:21
А Вы текст задания напишите.
0
1 / 1 / 0
Регистрация: 06.05.2019
Сообщений: 31
14.01.2020, 09:50  [ТС]
k здесь может принимать как целые, так и дробные значения; надо, чтобы только целые были: и то, что мне нужно, и экономнее будет, много места строки не будут занимать
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.01.2020, 10:14
Лучший ответ Сообщение было отмечено Marat_Syapin как решение

Решение

Цитата Сообщение от Marat_Syapin Посмотреть сообщение
Нужно подправить её так, чтобы значение k было натуральным числом+вывести всё в текстовый файл
поправил:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
  N, m, k: integer;
begin
  AssignFile(output, 'variants.txt');
  Rewrite(output);
  for var a := 1 to 98 do
    for var b := a + 1 to 99 do
      for var c := b + 1 to 100 do
      begin
        N := a * a + b * b + c * c;
        if (a * a + b * b + c * c) mod 3 = 0 then begin
          m := N div 3;
          k := trunc(sqrt(m));
          if sqr(k) = m then
            writeln(a, '*', a, '+', b, '*', b, '+', c, '*', c, '=', N, '=3*', m, ';', k);
        end;   
      end;
  writeln;
  
end.
1
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
14.01.2020, 10:23
Цитата Сообщение от Marat_Syapin Посмотреть сообщение
много места строки не будут занимать
В смысле? Какой строки?

И что по вашему надо записать в k, при a=1,b=2,c=3? Каким образом если это будет целое?

Приведите нормальное задание, а не то что вы лично додумали.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.01.2020, 10:26
Лучший ответ Сообщение было отмечено Marat_Syapin как решение

Решение

Цитата Сообщение от Sun Serega Посмотреть сообщение
В смысле? Какой строки?
в том смысле, что строк, где K целое число - намного меньше.

я выше привёл код, который, на мой взгляд, работает так, как надо Marat_Syapin
1
1 / 1 / 0
Регистрация: 06.05.2019
Сообщений: 31
14.01.2020, 14:36  [ТС]
mr-Crocodile, да-да, всё работает идеально, спасибо большое)

Добавлено через 11 минут
Ещё вопрос: некоторые эти строки-суммы имеют одинаковые окончания (т.е. например, там есть 1*1+151*151+851*851=3*249001;499 и 5*5+47*47+863*863=3*249001;499 и т.д.).Как их сгруппировать, чтобы строки с одинаковыми окончаниями были рядом? (Было бы очень здорово, если бы строки с одними и теми же окончаниями были одного цвета, но это, наверное, будет громоздко)
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
14.01.2020, 14:56
Чтоб нормально сортировать - лучше переделать под последовательности:
Pascal
1
2
3
4
5
6
7
8
9
10
11
begin
  Range(1, 98)
  .SelectMany(i1->Range(i1+1,99).Select(i2->(i1,i2)))
  .SelectMany(t->Range(t[1]+1,100).Select(i3->t+i3))
  .Tabulate(t->Sqr(t[0])+Sqr(t[1])+Sqr(t[2]))
  .Where(t->t[1] mod 3 = 0)
  .Select(t->(t[0], real(t[1] div 3).Sqrt.Trunc))
  .OrderBy(t->t[1])
  .Select(t->$'[{t[0][0],3},{t[0][1],3},{t[0][2],3}]: {t[1]}')
  .PrintLines;
end.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.01.2020, 15:27
Лучший ответ Сообщение было отмечено Marat_Syapin как решение

Решение

Цитата Сообщение от Marat_Syapin Посмотреть сообщение
Как их сгруппировать, чтобы строки с одинаковыми окончаниями были рядом?
я слямзил код у JuriiMW (тут)

получился такой код:
Pascal
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
type
  numvars = record
    a,b,c,n,m,k : integer;
    
    function toString : String; override;
    begin
      Result := $'{a}*{a}+{b}*{b}+{c}*{c}={n}=3*{m};{k}';
    end;
  end;
 
 
 
begin
  var VList := New List<numvars>;
 
  var V := New numvars;
 
  for var aa := 1 to 98 do
    for var bb := aa + 1 to 99 do
      for  var cc := bb + 1 to 100 do
      begin
        V.a := aa; V.b := bb; V.c := cc; 
        V.N := V.a * V.a + V.b * V.b + V.c * V.c;
        if V.N mod 3 = 0 then begin
          V.m := V.N div 3;
          V.k := trunc(sqrt(V.m));
          if sqr(V.k) = V.m then VList.Add(V)
        end;   
      end;
  
  AssignFile(output, 'variants2.txt');
  Rewrite(output);
 
  VList.OrderBy(x->x.k).PrintLines;
  
end.
Цитата Сообщение от Marat_Syapin Посмотреть сообщение
Было бы очень здорово, если бы строки с одними и теми же окончаниями были одного цвета, но это, наверное, будет громоздко
если научишь меня делать разноцветный текст в обычном текстовом файле, сделаю тебе окончания одним и тем же цветом

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Sun Serega Посмотреть сообщение
Чтоб нормально сортировать - лучше переделать под последовательности:
мда.. мне так не жить....



Добавлено через 9 минут
Цитата Сообщение от Sun Serega Посмотреть сообщение
Pascal
1
.Select(t->(t[0], real(t[1] div 3).Sqrt.Trunc))
эта строчка не так отработает. нужно только те значение, где сумма квадратов делится на 3 и корень из неё - целое число.
А этот код просто отбрасывает дробную часть от корня.
1
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
14.01.2020, 15:46
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
если научишь меня делать разноцветный текст в обычном текстовом файле, сделаю тебе окончания одним и тем же цветом
Очевидно речь про консоль а не текстовый файл. Надеюсь менять простейшие свойства консоли - не надо учить?))

Цитата Сообщение от mr-Crocodile Посмотреть сообщение
нужно только те значение, где сумма квадратов делится на 3 и корень из неё - целое число.
А этот код просто отбрасывает дробную часть от корня.
Да, не заметил у вас второе условие.
0
1 / 1 / 0
Регистрация: 06.05.2019
Сообщений: 31
14.01.2020, 15:57  [ТС]
mr-Crocodile, это ВАУ!!!) Ещё раз спасибо)))насчёт разноцветного текста- есть у меня одна программа, я, правда, не знаю, то или не то, то текст разноцветный в конечном итоге
Pascal
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
uses System;
const m=50;
const gray = ConsoleColor.Black;
const color:array of ConsoleColor=(ConsoleColor.Blue,ConsoleColor.Green,ConsoleColor.Red);
begin
  var a := matrgen(m,m,(r,c)->sqr(r+1)+sqr(c+1));
  var b := a.ElementsByRow;
  var f := '{0,'+(b.Max.ToString.Length+1)+'}';
  var d := New Dictionary<integer,ConsoleColor>;
  var colorindex := 0;
  for var row := 0 to m-1 do
     begin
       for var col := 0 to m-1 do
         begin
           if b.Count(v->v=a[row, col]) > 1 then
             if d.ContainsKey(a[row,col]) then
               Console.ForegroundColor := d.Item[a[row,col]]
             else
               begin
                 d.Add(a[row, col], color[colorindex]);
                 Console.ForegroundColor := color[colorindex];
                 colorindex+=1;if colorindex=color.Length then colorindex:=0;
               end
            else
              Console.ForegroundColor := Gray;
           Write(Format(f, a[row, col]));
         end;
       WriteLn;
     end;
  Console.ForegroundColor := Gray;
end.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.01.2020, 16:47
Цитата Сообщение от Marat_Syapin Посмотреть сообщение
насчёт разноцветного текста- есть у меня одна программа, я, правда, не знаю, то или не то, то текст разноцветный в конечном итоге
так это не в текстовом файле, это в консоли вывод.
тут можно разными цветами выводить.

по вашему примеру:
Pascal
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
uses System;
 
const
  colors: array of ConsoleColor = (
ConsoleColor.Black,
ConsoleColor.DarkBlue,
ConsoleColor.DarkGreen,
ConsoleColor.DarkCyan,
ConsoleColor.DarkRed,
ConsoleColor.DarkMagenta,
ConsoleColor.DarkYellow,
ConsoleColor.Gray,
ConsoleColor.DarkGray,
ConsoleColor.Blue,
ConsoleColor.Green,
ConsoleColor.Cyan,
ConsoleColor.Red,
ConsoleColor.Magenta,
ConsoleColor.Yellow,
ConsoleColor.White
);
 
type
  numvars = record
    a,b,c,n,m,k : integer;
    
    function toString : String; override;
    begin
      Result := $'{a}*{a}+{b}*{b}+{c}*{c}={n}=3*{m};{k}';
    end;
  end;
 
 
 
begin
  var VList := New List<numvars>;
 
  var V := New numvars;
 
  for var aa := 1 to 98 do
    for var bb := aa + 1 to 99 do
      for  var cc := bb + 1 to 100 do
      begin
        V.a := aa; V.b := bb; V.c := cc; 
        V.N := V.a * V.a + V.b * V.b + V.c * V.c;
        if V.N mod 3 = 0 then begin
          V.m := V.N div 3;
          V.k := trunc(sqrt(V.m));
          if sqr(V.k) = V.m then VList.Add(V)
        end;   
      end;
  
//  AssignFile(output, 'variants2.txt');
//  Rewrite(output);
 
 // цветной вывод в консоль
 
  var KPrev := -1;
  var colorindex := 0;
  
  foreach var item in  VList.OrderBy(x->x.k) do begin
      if item.k<>KPrev then begin 
         KPrev := item.k; colorindex += 1; if colorindex = colors.Length then colorindex := 1;
         Console.ForegroundColor := colors[colorindex]; 
         end;
      item.toString.Println;
  end;
  
end.
Добавлено через 52 секунды
Цитата Сообщение от Sun Serega Посмотреть сообщение
Надеюсь менять простейшие свойства консоли - не надо учить?))
неа.. меня уже ТС научил
1
1 / 1 / 0
Регистрация: 06.05.2019
Сообщений: 31
12.05.2020, 05:34  [ТС]
Здравствуйте, это снова я и снова я прошу вашей помощи. Нужно вывести натуральные числа, находящиеся по обеим сторонам от кратных 6 (т.е. p=6k-1 и p=6k+1). Эту задачу можно переформулировать по-другому: до заданного k вывести вместе числа p=6k-1 и p=6k+1 (должно получиться 1, 5, 7, 11, 13, 17 и т.д.)
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
12.05.2020, 07:39
Если задача новая - надо создать новую тему и сделать там ссылку на эту.
0
1 / 1 / 0
Регистрация: 06.05.2019
Сообщений: 31
27.05.2020, 04:45  [ТС]
var
N, m, k: integer;
begin
for var a := 1 to 98 do
for var b := a + 1 to 99 do
for var c := b + 1 to 100 do
begin
N := a * a + b * b + c * c;
if a * a mod 2 = 1 then
if a * a mod 3 = 1 then
if b * b mod 2 = 1 then
if b * b mod 3 = 1 then
if c * c mod 2 = 1 then
if c * c mod 3 = 1 then
if (a * a + b * b + c * c) mod 3 = 0 then begin
m := N div 3;
k := trunc(sqrt(m));
if sqr(k) = m then
writeln(a, '*', a, '+', b, '*', b, '+', c, '*', c, '=', N, '=3*', m, ';', k);
end;
end;
end.
как рассортировать в этом случае (также по последним числам- 3*m; k)?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.05.2020, 04:45
Помогаю со студенческими работами здесь

Вывод программы
Здравствуйте, подскажите пожалуйста, что нужно сделать, чтобы программа работала корректно, компилирую с помощью турбо ассемблера через cmd...

Вывод из программы
Добрый день, делаю задачу на курсовой и возник вот такой вопрос Как вывести данные которые будут занесены в ComboBox'ы и txtBox'ы в txt...

Вывод программы
Здравствуйте, проблема заключается в том, что когда я получаю вывод из программы он получается иероглифами, как это исправить? Если...

Вывод программы
int main() { int a={5,4,3,2,1}; int *b=a+2; *b=6; for(int i=0;i&lt;5; ++i) printf(“%d”,a); printf(“\n”); return 0; } ...

Неправильный вывод из программы
Всем доброго утра. Столкнулся с проблемой которую никак не могу понять. Имеется код программы .model small .386 .stack 100h ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru