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

Вывести результат в переменную

10.02.2019, 17:08. Показов 1346. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть у меня вот такая программа(кстати, была написана с помощью человека с этого форума, огромное ему спасибо):

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Program file2_3;
Var s, v: string;
begin
  var Path1:= 'D:\base.txt';
  
  var lines := ReadAllLines(Path1);
  
  writeln('Введите сид');
  readln(s);
  
 
  lines
  .Where(l->l.StartsWith(s+':'))
  .Select(l->l.ToWords)
  .Select(l->l[Random(l.Length)])
  
  .PrintLines;
 
  
end.
Суть в том, что программа считывает файл, потом ищет слово в тексте, заданное пользователям, и строчку, где это слово стоит первым. А затем, программа выбирает любое слово из этой строчки и выводит его. Столкнулся с проблемой, что не могу результат преобразовать в переменную(назовем её v). Потому что мне нужно, чтобы этот процесс повторялся множество раз, но теперь с тем словом, которое выводит программа.

Снова нужна помощь форума. Надеюсь, поможете)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2019, 17:08
Ответы с готовыми решениями:

Вывести результат на экран
Ребята, помогите разобраться, вот задание: 1) Постановка задачи; 2) Математическая модель задачи; 3) Алгоритм решения задачи (в...

вычислить n! и результат вывести на экран n!= 1*2*....n
я не могу решить напишите плиз программу для паскаля

Вывести на экран результат операции.
Помогите пожалуйста написать программу с помощью оператора выбора. (По задаче) Буду очень благодарен. Задача: Пользователь вводит...

7
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
10.02.2019, 17:32
Уберите .PrintLines и присваивайте всё остальное переменной.
А ещё не используйте эти функции вслепую, прочитайте для начала презентации на офф сайте, чтоб понимать что эти функции делают и как их самому собирать. А то так для каждого мелкого изменения будете ждать ответа на куберфоруме.
0
0 / 0 / 0
Регистрация: 07.02.2019
Сообщений: 7
14.02.2019, 17:24  [ТС]
И все же, как это сделать? Как не пытаюсь, у меня ничего не выходит
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
14.02.2019, 17:27
А как вы пытаетесь? Дайте примеры.
И - вы прошлись по тем презентациям что я кинул? Их мало и они коротенькие.
0
0 / 0 / 0
Регистрация: 07.02.2019
Сообщений: 7
16.02.2019, 17:07  [ТС]
По презентациям прошелся.
Я просто не понимаю, какое значение нужно присвоить переменной. Я уже и присваивал переменной значение lines, а он выводит весь файл. А других способов присваивания, кроме этого и read(ну а он вводит результат с клавы, так что это явно не то, что мне нужно)
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
16.02.2019, 17:13
Лучший ответ Сообщение было отмечено DenDen438 как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//program нафиг не сдалось, оно ничего не делает
begin
  var Path1:= 'D:\base.txt';
  
  var lines := ReadAllLines(Path1);
  
  var s := ReadlnString('Введите сид:');//переменную надо объявлять не в начале программы а прямо перед присваением
  s += ':';//добавить ":" надо сразу, иначе для каждого сравнения будет создавать новую строку
  
  var v := //у переменной v тип не string а sequence of string, потому что строк начинающихся с s может быть несколько
    lines  //добавьте .First чтоб получить первую подходящую строку
    .Where(l->l.StartsWith(s))
    .Select(l->l.ToWords)
    .Select(l->l[Random(l.Length)]);
  
  
end.
0
0 / 0 / 0
Регистрация: 07.02.2019
Сообщений: 7
17.02.2019, 07:48  [ТС]
Спасибо большое! Оказывается, это было не так уж сложно. В следующий раз повнимательнее прочту презентации

Добавлено через 13 минут
Кстати говоря, v как раз должен быть string, а не sequence of string, потому что строчка, начинающегося с этого слова всего одна в тексте. Так все и задумано.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
17.02.2019, 14:12
Тогда добавьте .Single в ту цепочку методов (в любое место после .Where, можно и в конце цепочки). Оно берёт единственный элемент последовательности, но если в последовательности есть больше 1 элемента - получите ошибку с соответствующим, понятным, сообщением.

И ещё, почему то у меня такое чувство что вы всё ещё не поняли как работает та цепочка... Хотя бы потому, что вы не прочитали комментарии в моём предыдущем сообщении.
Pascal
1
2
3
4
5
var a := Arr(1,2,3);
var s1 := a.Where(i->i mod 2 = 0);
var s2 := s1.Select(i->i*i);
var s3 := s2.Single;
s3.Print;
Этот ужас с кучей переменных можно сократить, потому что не обязательно присваивать результат функции переменной чтоб вызвать следующую функцию. Они ведь только по 1 разу нам нужны:
Pascal
1
2
3
4
var a := Arr(1,2,3);
var s1 := a.Where(i->i mod 2 = 0).Select(i->i*i);
var s3 := s1.Single;
s3.Print;
Это я объеденил .Where и .Select. Так же с остальными:
Pascal
1
Arr(1,2,3).Where(i->i mod 2 = 0).Select(i->i*i).Single.Print;
Но теперь тоже плохо. Эта строчка очень длинная и поэтому читать её неудобно. Благо, между точками и функциями можно ставить сколько угодно пробелов и переносов строк, компилятор это всё равно примет:
Pascal
1
2
3
4
5
Arr(1,2,3)
.Where(i->i mod 2 = 0)
.Select(i->i*i)
.Single
.Pring;
И вот таким образом получаем цепочку как в моей программе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2019, 14:12
Помогаю со студенческими работами здесь

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

Вычислить ф-ю,результат вывести таблицей и графиком
Задание на фото.Помогите!!!!

Вывести 2-битовые значения, упакованные в переменную типа Byte
В переменную типа Byte “упаковано” 4 маленьких неотрицательных целых значений, каждое из которых занимает по 2 соседних бита. Вывести все...

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

Вычислить сумму элементов массива и вывести результат
1) задать массив из 12 числа типа real как набор констант.Вычислить сумму элементов массива и вывести результат. 2)Ввести с клавиатуры...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru