Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2019, 19:51   #1
NonTrivial
 
Регистрация: 17.04.2019
Сообщений: 4
По умолчанию Как умножить все числа в текстовом файле на одно число?

C# Windows Forms.
Привет. У меня имеется текстовый файл, в котором написаны не только числа, но и другие символы (на скрине пример).
У меня вопрос: как умножить все числа на одно число (допустим 2)? Причем нужно брать числа от определенной строки до определенной строки.

Буду очень благодарен, если поможете.

Я новичек
Изображения
Тип файла: png Безымянный1.png (18.2 Кб, 228 просмотров)
NonTrivial вне форума Ответить с цитированием
Старый 17.04.2019, 22:05   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

прочитать файл. в нужных строчках взять нужные элементы строки, перевести их в числовой вид, умножить на сколько надо, полученный результат куда-то сохранить.
примерно так.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.04.2019, 08:33   #3
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от NonTrivial Посмотреть сообщение
Буду очень благодарен, если поможете.
Я новичек

Так вам как новичку и дали задачу потренировать мышление. Или вы думаете что опыт просто так дается за возраст или красивые глазки??

Вам скорее на фриланс наверное надо. 2000р и не придется ничего клянчить.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 24.04.2019, 22:40   #4
NonTrivial
 
Регистрация: 17.04.2019
Сообщений: 4
По умолчанию

Я не говорил написать его за меня. Ладно.
Допустим у меня текстовая переменная - a3jrc 1fgh6f
И мне нужно перемножить в ней числа допустим на 2, чтобы в результате получилось - a6jrc 2fgh12f
NonTrivial вне форума Ответить с цитированием
Старый 24.04.2019, 23:07   #5
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Ну и? Разделите строку на слова затем выделите числа произведите вычисления и получите результат. Ну элементарщина же.. тут даже расписывать нечего. Буквально в 5 строк
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 24.04.2019, 23:50   #6
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 954
По умолчанию

строка А исходная
строка Р результат
строка Ц цифры

цикл от 1 до длины строки А

выделили 1 символ из строки А

если цифра тогда накапливается строка Ц
и возможно сразу умножать на константу

если не цифра тогда если предыдущий символ была цифра
тогда в результат в строку Р идёт умноженная строка цифр

если не цифра и предыдущая не цифра
тогда как есть переносится символ в результат в строку Р

конец цикла

вывод строки Р

возможно повторять для нескольких строк

1fgh6f

1..............1
f..............2
.....2f
g....2fg
h....2fgh
6..............6
f..............12
......2fgh12f
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 24.04.2019 в 23:59.
сфинкс вне форума Ответить с цитированием
Старый 25.04.2019, 09:57   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Код:
using System;
using System.Text.RegularExpressions;

namespace Parse_Multiply_Numbers_in_String
{
	class Program
	{
		public static void Main(string[] args)
		{

			string s = "a3jrc 17fgh6f99";			

			Console.WriteLine(s);
			
			Regex reg = new Regex(@"(\d+)");
			int offset = 0;
			foreach (Match ItemMatch in reg.Matches(s))
			{
    				string newValue = (2*int.Parse(ItemMatch.Value)).ToString();
    				s = s.Remove(ItemMatch.Index+offset, ItemMatch.Value.Length).Insert(ItemMatch.Index+offset, newValue);
	    			offset += newValue.Length - ItemMatch.Value.Length;
			}
			
			Console.WriteLine(s);
			
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true); 
		}
	}
}
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.04.2019, 22:04   #8
NonTrivial
 
Регистрация: 17.04.2019
Сообщений: 4
По умолчанию

Воу! Спасибо! Теперь объясни пожалуйста, что это значит(я понимаю, но мне нужна конкретика)
Код:
            Regex reg = new Regex(@"(\d+)");
            int offset = 0;
            foreach (Match ItemMatch in reg.Matches(s))
            {
                string newValue = (2 * int.Parse(ItemMatch.Value)).ToString();
                s = s.Remove(ItemMatch.Index + offset, ItemMatch.Value.Length).Insert(ItemMatch.Index + offset, newValue);
                offset += newValue.Length - ItemMatch.Value.Length;
            }
NonTrivial вне форума Ответить с цитированием
Старый 27.04.2019, 08:42   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от NonTrivial Посмотреть сообщение
что это значит(я понимаю, но мне нужна конкретика)
это означает что через регулярное выражение (см. regex) находим все группы цифр в строке (группа цифр это @"(\d+)"), для каждой группы получаем новое значение (переведя группу цифр в число и умножив это число на 2), переводим это в строчку newValue,
после по найденному поиском в регэкспе индексу группы удаляем старую группу цифр и вставляем на её место новую строку newValue.
если новая группа длинее старой, то смещение в строке (понадобится для вставки последующих групп) увеличиваем на величину разницы в длинах.

всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.04.2019, 14:21   #10
NonTrivial
 
Регистрация: 17.04.2019
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
это означает что через регулярное выражение (см. regex) находим все группы цифр в строке (группа цифр это @"(\d+)"), для каждой группы получаем новое значение (переведя группу цифр в число и умножив это число на 2), переводим это в строчку newValue,
после по найденному поиском в регэкспе индексу группы удаляем старую группу цифр и вставляем на её место новую строку newValue.
если новая группа длинее старой, то смещение в строке (понадобится для вставки последующих групп) увеличиваем на величину разницы в длинах.

всё.
Спасибо!!!
Посоветуй пожалуйста какую-нибудь книжку или... не знаю... Источник информации, в плане.. Я просто всегда скачу с темы на тему и не знаю, на чем остановиться, чтобы потом продолжать.

Последний раз редактировалось NonTrivial; 27.04.2019 в 14:30.
NonTrivial вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в текстовом файле fin.txt находится текст на русском языке. С клавиатуры вводится число K. yana1996 Visual C++ 0 09.03.2016 19:19
Создать программу,имеющая процедуру,кторая в производном текстовом файле,которая имеет слова и числа,изменяющая все числа числа,ме Fingergod Паскаль, Turbo Pascal, PascalABC.NET 0 13.12.2012 20:08
Определить число знаков препинания в текстовом файле Indoles Паскаль, Turbo Pascal, PascalABC.NET 2 01.04.2012 10:09
В текстовом файле найти максимальное число и после него числы полиндромы Simak63 Помощь студентам 0 09.04.2011 16:33
PHP (Вывести сколько раз встречается число 100 в текстовом файле) sinobithug Помощь студентам 2 24.11.2010 00:30