1 / 1 / 1
Регистрация: 21.03.2018
Сообщений: 153
1

Вывод определённых значений из таблицы, затем вывод их произведения на файл

28.03.2018, 10:46. Показов 1528. Ответов 15
Метки нет (Все метки)

Здравствуйте, как считать с файла только цифры(буквы не трогать), найти их произведение, затем вывести его в файл(output)? В интернете не смог найти инфы по этому поводу. Очень нужна ваша помощь. Объясните, пожалуйста, с примером.
Вид данных из input:
1 2 3input.txt
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2018, 10:46
Ответы с готовыми решениями:

Вывод таблицы значений в файл
Проконсультируйте меня пожалуйста, мне нужно получить файл с таблицей значений. n*2^(1/7) n =...

Вывод таблицы значений функции в файл
НАРОД СРОЧНО ПРОШУ ВАС!!!Помогите пожалуйста решить!!!! Напишите программу печати в файл таблицы...

Вывод определенных значений
Всем доброго времени суток!!! Есть EXCEL, в нем несколько, скажем так опросных листов, в каждом...

Вывод из базы определенных значений
Здравствуйте! совсем недавно начал изучать asp.net mvc, и у меня возник вопрос. Как сделать вывод...

15
4946 / 2556 / 2308
Регистрация: 10.12.2014
Сообщений: 9,791
28.03.2018, 11:03 2
Pascal
1
2
3
4
begin
  var a := ReadAllText('input.txt').ToCharArray.Where(x->Char.IsDigit(x)).Select(x->StrToInt(x)).ToArray;
  a.PrintLn;
end.
0
1753 / 1345 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
28.03.2018, 11:04 3
Pascal
1
2
3
4
begin
  WriteAllText('output.txt', ReadAllText('input.txt')
    .Aggregate(1, (x, v) -> v.IsDigit ? x * integer.Parse(v) : x).ToString);
end.
0
Почетный модератор
64253 / 47553 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
28.03.2018, 11:05 4
Лучший ответ Сообщение было отмечено mxmod как решение

Решение

Если не рубите в АВС.net то так.
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
var f:text;
    c:char;
    p,k:integer;
begin
assign(f,'input.txt');
reset(f);
p:=1;
k:=0;
while not eof(f) do
 begin
  read(f,c);
  if c in ['0'..'9'] then
   begin
    k:=1;
    p:=p*strtoint(c);
   end;
  end;
close(f);
assign(f,'output.txt');
rewrite(f);
if k=0 then writeln(f,'В тексте нет цифр')
else writeln(f,'Произведение цифр=',p);
close(f);
write('Файл input.txt прочитан, результат записан в файл output.txt')
end.
0
1 / 1 / 1
Регистрация: 21.03.2018
Сообщений: 153
28.03.2018, 11:21  [ТС] 5
Огромное спасибо, а можно подробнее насчёт p:=p*strtoint(c) "strtoint" это что?
0
Почетный модератор
64253 / 47553 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
28.03.2018, 11:24 6
mxmod, Вы даже Справку не читали, не говоря уже про учебники?
0
4946 / 2556 / 2308
Регистрация: 10.12.2014
Сообщений: 9,791
28.03.2018, 11:25 7
Цитата Сообщение от mxmod Посмотреть сообщение
"strtoint" это что?
— Встать на strtoint курсором.
— Нажать F1
— Найти в списке function StrToInt…
0
1 / 1 / 1
Регистрация: 21.03.2018
Сообщений: 153
28.03.2018, 12:03  [ТС] 8
А можно ещё узнать как из этого файла выбрать две цифры(например 1 и 2) и вывести их в output?
0
4946 / 2556 / 2308
Регистрация: 10.12.2014
Сообщений: 9,791
28.03.2018, 12:10 9
В приведённом мной коде:
a — это массив цифр из вашего файла!
a[0] — первая встреченная в файле цифра
a[1] — вторая…

Берите их. Обрабатывайте и пишите куды вам надо!
0
1 / 1 / 1
Регистрация: 21.03.2018
Сообщений: 153
28.03.2018, 12:16  [ТС] 10
А можно пример кода,пожалуйста?
0
4946 / 2556 / 2308
Регистрация: 10.12.2014
Сообщений: 9,791
28.03.2018, 12:22 11
Pascal
1
WriteAllText('output', a[0].ToString+' '+a[1].toString);
или
Pascal
1
WriteAllText('output', a.Where((x,i)->i<2).JoinIntoString)
0
1 / 1 / 1
Регистрация: 21.03.2018
Сообщений: 153
28.03.2018, 12:28  [ТС] 12
я сделал такой код:
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
var f:text;
    c:char;
    p,k:integer;
begin
assign(f,'d:\pascal\input.txt');
reset(f);
p:=1;
while not eof(f) do
 begin
  read(f,c);
  if c='1' then
   begin
    p:=strtoint(c);
   end;
    if c='2' then
    begin
    k:=strtoint(c)
  end;
  end;
close(f);
assign(f,'d:\pascal\output.txt');
rewrite(f);
writeln(f,p);
writeln(f,k);
close(f);
end.
Я как понимаю его можно было куда проще сделать?
0
Alvin Seville
335 / 267 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
28.03.2018, 14:03 13
mxmod, StrToInt - возвращает число, соответствующее переданному строковому его представлению в качестве параметра.
Pascal
1
2
3
4
begin
  System.Convert.ToInt32('123').Println();
  StrToInt('123').Println();
end.
Два варианта конвертации из строки в число.

Добавлено через 56 секунд
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
function StrToInt(s: string): integer;
begin
  var j := 1;
  while (j <= s.Length) and char.IsWhiteSpace(s[j]) do
    j += 1;
  if (j > s.Length) then 
    raise new System.FormatException(ErrorStringFromResource('Format_InvalidString'));
  var sign := 0;  
  if s[j] = '-' then
  begin
    sign := -1;
    j += 1;
  end  
  else if s[j] = '+' then
  begin
    sign := 1;
    j += 1;
  end;
  if (j > s.Length) then 
    raise new System.FormatException(ErrorStringFromResource('Format_InvalidString'));
  var c := integer(s[j]);
  if (c < 48) or (c > 57) then
    raise new System.FormatException(ErrorStringFromResource('Format_InvalidString'));
  Result := c - 48;
  j += 1;  
  while j <= s.Length do
  begin
    c := integer(s[j]);
    if c > 57 then
      break;
    if c < 48 then
      break;
    if Result > 214748364 then
      raise new System.OverflowException(ErrorStringFromResource('Overflow_Int32'));
    Result := Result * 10 + (c - 48);
    j += 1;
  end;
  if Result < 0 then 
    if (Result = -2147483648) and (sign = -1) then
      exit
    else raise new System.OverflowException(ErrorStringFromResource('Overflow_Int32'));
  if sign = -1 then
    Result := -Result;
  while (j <= s.Length) and char.IsWhiteSpace(s[j]) do
    j += 1;
  if j <= s.Length then  
    raise new System.FormatException(ErrorStringFromResource('Format_InvalidString'));
end;
Добавлено через 19 секунд
Из PABCSystem.
0
Почетный модератор
64253 / 47553 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
28.03.2018, 14:05 14
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Да, это очень пригодится этому товарищу..
0
Alvin Seville
335 / 267 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
28.03.2018, 14:06 15
Puporev,
0
4946 / 2556 / 2308
Регистрация: 10.12.2014
Сообщений: 9,791
29.03.2018, 05:50 16
Цитата Сообщение от mxmod Посмотреть сообщение
Я как понимаю его можно было куда проще сделать?
Pascal
1
2
3
var f:text;
    c:char;
    p,k:integer;
Это в PABC.NET вообще не нужно!
Объявление переменных можно делать прямо в модуле программы, а чаще всего даже неявно.
К примеру:
Pascal
1
2
3
4
5
begin
  var s := 0;
  for var i := 1 to 10 do s += i;
  WriteLn(s);
end.
Вы читаете текстовый файл посимвольно:
Pascal
5
6
7
8
9
10
assign(f,'d:\pascal\input.txt');
reset(f);
p:=1;
while not eof(f) do
 begin
  read(f,c);
Зачем?
Проще прочесть его весь сразу в строковую переменную и затем перебрать символы:
Pascal
1
2
3
4
5
begin
  var s := ReadAllText('input.txt');
  foreach var c in s do
    Print('[' + c + ']-' + OrdAnsi(c));
end.
Вместо конструкции из нескольких if и преобразования конкретного символа в конкретное значение переменной
Pascal
11
12
13
14
15
16
17
18
  if c='1' then
   begin
    p:=strtoint(c);
   end;
    if c='2' then
    begin
    k:=strtoint(c)
  end;
Лучше использовать case и константы
Pascal
1
2
3
4
5
6
7
8
9
10
begin
  var s := ReadAllText('input.txt');
  var p, k : Integer;
  foreach var c in s do
    case c of
      '1' : p := 1;
      '2' : k := 2;
    end;
  WriteLn($'p = {p}  k = {k}');
end.
Последняя строка ( WriteLn($'p = {p} k = {k}'); ) появилась в PABC.NET буквально недавно!
Поэтому работать будет только если IDE версии не старше марта 2018 ;–)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2018, 05:50
Помогаю со студенческими работами здесь

Вывод определенных значений курсора
Через DataReader вывел все столбцы(значения) курсора. Все нормально, НО, не могу с ними...

Вывод определенных значений массива
Доброго времени. Имеем ассоциативный массив: $arr = array( 'Audi' =&gt; 'text', 'BMW' =&gt;...

Вывод определенных записей из таблицы
Всем привет. Такой вопрос есть у меня пользователи (Иванов, Петров, Сидоров) у них есть роль...

Вывод определённых строчек из таблицы БД
Всем привет. В чем моя ошибка тут? Я хочу вывести из таблицы не все строчки, а только 10, где id...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru