Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 25.05.2018
Сообщений: 100

Проблема с присвоением текстовой переменой в массив и

24.05.2020, 09:16. Показов 1335. Ответов 28

Студворк — интернет-сервис помощи студентам
Здравствуйте , можете помочь с присвоением текстовой переменой в массив. Что то не получается правильно расписать. Что то никак не въеду как правильно нужно написать, особенно когда текст пытаешься присвоить. вот куски примера :
C#
1
2
3
4
5
6
7
8
9
10
11
// начало блока
                string[] salltext;
                 .....
                 .....
                 int ii = 0;
                foreach (string s in cpname)
                {
                    conttext = s.ToString() + Environment.NewLine;
                         ....
                         string salltext(ii) = s;
                          .....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2020, 09:16
Ответы с готовыми решениями:

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

Проблема с присвоением a := self.
Проблема с присвоением a := self... сразу же после этого смотрю дампы памяти и они отличаются, например: self : $01 $02 $03 $04 ... a ...

Проблема с присвоением объектов созданного класса
Задание было таким: решение задачи на оптимизацию симплекс методом. Рекомендовалось считать в простых дробях, и я решил при программной...

28
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
24.05.2020, 10:00
C#
1
salltext[ii] = s;
0
1 / 1 / 0
Регистрация: 25.05.2018
Сообщений: 100
24.05.2020, 11:18  [ТС]
Toros1992, да пробовал и так и сяк , нифига не получается, пишет : использование локальной переменной , которой значение не присвоено.
Как то так ... нельзя тут скрин залить и ссылку на него вставить ..
Уже мозг кипит, как правильно написать. Что не так, и что не нравится .. кстати VS2017..
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
24.05.2020, 11:29
Вы ваш массив объявили, но не инициализировали скорее всего.
C#
1
string[] salltext = new string[10];
1
1 / 1 / 0
Регистрация: 25.05.2018
Сообщений: 100
24.05.2020, 13:27  [ТС]
Toros1992, это да , потому что я не знаю сколько будет в массиве элементов - кол-во.. я как бы беру же из другого массива , который через foreach . А так понял вроде.

Добавлено через 7 минут
Спасибо пришлось ниже после 1-го массива cpname объявить .. Спасибо за помощь !!!!!
0
172 / 91 / 36
Регистрация: 22.05.2020
Сообщений: 308
24.05.2020, 13:45
Цитата Сообщение от mine1 Посмотреть сообщение
я не знаю сколько будет в массиве элементов
Если на момент создания массива количество элементов неизвестно, рассмотрите возможность использовать коллекцию с динамическим размером, например, List<string>.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
24.05.2020, 14:30
mine1, Ну так посчитай количество элементов в другом массиве, который через foreach, и передай это значение при объявлении. инициализировать и объявлять не обязательно в одной строке.
0
1 / 1 / 0
Регистрация: 25.05.2018
Сообщений: 100
24.05.2020, 14:42  [ТС]
AndreyVorobey, не понял мысль , если вы это имеете ввиду "salltext.Copy" не знаю правильно написал или нет .
А так же у меня как бы счетчик то есть "ii", ниже введется уже подсчет . Просто не стал выкладывать этот кусок кода..
C#
1
  ii++;
Да и у меня проблема , еще , я так понимаю , переменная у меня почему то работает 1 раз , то есть операции с ней . Скажем записали в переменную , потом считали с неё и всё кирдык , переменная пустая. Ни как этот момент не пойму ..
Просто на VB6 , я там мог с одной и той же переменной черти сколько раз работать , записывать удалять , заново в ту же переменную данные сохранять итд... А тут не так всё ..

valker, Это для меня пока что сложновато.
P.s. и не стоит забывать в каком разделе эти вопросы %)))
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
24.05.2020, 14:49
mine1, что такое cpname? тоже массив строк?
0
1 / 1 / 0
Регистрация: 25.05.2018
Сообщений: 100
24.05.2020, 15:43  [ТС]
AndreyVorobey, да ..
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
24.05.2020, 15:46
mine1, тогда в чем проблема сделать так?
C#
1
string[] salltext = new string[cpname.Length];
объявить массив после cpname

Добавлено через 1 минуту
можно вообще задание услышать? а то мне как-то непонятно, зачем там второй массив, ii и все остальное?
0
1 / 1 / 0
Регистрация: 25.05.2018
Сообщений: 100
24.05.2020, 16:01  [ТС]
AndreyVorobey, да я уже так и сделал ..
Да со вторым массивом это связанно , читаем выше ответ..
Цитата Сообщение от mine1 Посмотреть сообщение
Да и у меня проблема , еще , я так понимаю , переменная у меня почему то работает 1 раз , то есть операции с ней . Скажем записали в переменную , потом считали с неё и всё кирдык , переменная пустая. Ни как этот момент не пойму ..
Просто на VB6 , я там мог с одной и той же переменной черти сколько раз работать , записывать удалять , заново в ту же переменную данные сохранять итд... А тут не так всё ..
Из за этого , просто у меня косяк какой то , то добавляется в текст(файл) лишние , а тут теперь вообще пустота .
Вообщем что то не так с переменными у меня, вот и хотел второй массив сделать. И с ним уже работать.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
24.05.2020, 16:06
mine1, судя по тому коду, который ты прислал, у тебя сплошные логические ошибки и костыли. и это не правильно. и проблема не в языке программирования.
Цитата Сообщение от mine1 Посмотреть сообщение
А тут не так всё ..
тут все так же, как и там, уверяю.
Цитата Сообщение от mine1 Посмотреть сообщение
Из за этого , просто у меня косяк какой то , то добавляется в текст(файл) лишние , а тут теперь вообще пустота .
Вообщем что то не так с переменными у меня, вот и хотел второй массив сделать.
опиши свое задание.
0
1 / 1 / 0
Регистрация: 25.05.2018
Сообщений: 100
24.05.2020, 16:09  [ТС]
AndreyVorobey, Добавил , не успел в пред. сообщение добавить %))

Вот вообщем весь кусок кода :

Вот вообщем весь кусок кода :
C#
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
        private void button8_Click(object sender, EventArgs e)
        {
            string conttext = "";
            // string sn,sn1,sn2,sn3,savefiles="";
            string ssearch = textBox1.Text;
            string sreplace = textBox2.Text;
            string sdelete = textBox6.Text;
 
 
            for (int i = 0; i < listBox1.Items.Count; ++i)
            {
                using (StreamReader reader = new StreamReader(File.Open(listBox1.Items[i].ToString(), FileMode.Open)))
                {
                    if (reader.BaseStream.Position != reader.BaseStream.Length)
                    {
                        conttext = reader.ReadToEnd().ToString();
                    }
                    reader.Close();
                }
 
                string[] cpname = conttext.Split('\n');
                string[] salltext = new string[cpname.Length];
                int ii = 0;
                foreach (string s in cpname)
                {
                    string sn2;
                    conttext = s.ToString() + Environment.NewLine;
                    if (s.IndexOf(ssearch.ToString()) > 0)
                    {
                        //salltext[ii]=s;
                        string sn = salltext[ii] = s.ToString();
                        string sn1 = sn.Replace(ssearch.ToString(), sreplace.ToString());
                        if (sdelete.Length > 0) sn2 = sn1.Replace(sdelete.ToString(), "");
                        sn2 = sn1;
                        string sn3 = string.Concat(sn2, Environment.NewLine);
                        conttext = sn3.ToString() + Environment.NewLine;
                    }
                    ii++;
                }
                string savefiles = conttext.ToString();
                File.Delete(listBox1.Items[i].ToString());
                using (FileStream sw = new FileStream(listBox1.Items[i].ToString(), FileMode.Create))
                {
                    // преобразуем строку в байты
                    byte[] array = System.Text.Encoding.Default.GetBytes(savefiles);
                    // запись массива байтов в файл
                    sw.Write(array, 0, array.Length);
                    //sw.Write(savefiles.ToString());
                    sw.Close();
                }
            }
            MessageBox.Show("Усё ГОТОВО !!!!!!!!!!!!!");
        }

Просто хотел , чтоб все файлы так обрабатывались .По отдельности всё ОК .. А тут ерунда .
То лишние в файл добавляется , но тогда я использовал StreamWriter.

А тут я решил попробовать собрать этот массив , через Concat и записать уже это в файл.

P.s. Это я так как бы тренируюсь и пытаюсь научится - особо не бить ))
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
24.05.2020, 16:15
mine1, код не нужен, здесь можно потеряться, в чем смысл задания, опиши словами.
я так понял, что есть список файлов в какой-то папке, и каждый файл нужно прочитать, и что-то с ними сделать, так? что-то удалить, заменить и тд. но ты опиши сам доходчиво.
0
1 / 1 / 0
Регистрация: 25.05.2018
Сообщений: 100
24.05.2020, 16:21  [ТС]
AndreyVorobey, ну здесь как бы сложно будет описать . Вообщем коротко - нужно найти определенное слово , и всю строку, где это слово скопировать ниже строчкой . Но перед этим вставкой , заменить в ней искомое слово на своё.. Как то так ..

По отдельности всё работает , но это муторно будет , вот и хотел бы , чтоб сразу все файлы так обработать ..

Аа вообще я так еще, и время убить и потренироваться в С# )
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
24.05.2020, 19:32
mine1,
Цитата Сообщение от mine1 Посмотреть сообщение
и всю строку, где это слово скопировать ниже строчкой
тут не понятно, что имеется ввиду.
0
1 / 1 / 0
Регистрация: 25.05.2018
Сообщений: 100
24.05.2020, 20:07  [ТС]
AndreyVorobey, а так :
слово1
результат:
слово1
слово2

Ищем слово 1 , как нашли , меняем слово1 сначала добавляем такую же строчку полностью ниже след. строчкой , но в добавленной строчке уже меняем слово1 на слово2.

P.s.На самом деле задачка специфичная , я сам тоже не понял с первой попытки %))

Да по одиночке когда делаешь всё ОК работает. То есть похожий код работает , если менять по отдельности. А я хотел типа в пакетном режиме все файлы в папке изменить.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
24.05.2020, 21:23
mine1, к счастью, ничего специфичного в данной задаче нет. а уточнял из-за того, что ты описал свое задание непонятно.
вот вся программа, которая выполняет твои требования:
C#
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
70
using System;
using System.IO;
using System.Linq;
using System.Text;
 
namespace ConsoleApp76
{
    class Program
    {
        private static string _findWord;
 
        private static string _toReplaceWord;
 
        private static string _pathToFolder = @"files";
 
        static void Main(string[] args)
        {
            Console.Write("Введите слово для поиска: ");
            _findWord = Console.ReadLine();
 
            Console.Write("Введите слово, на которое заменить: ");
            _toReplaceWord = Console.ReadLine();
 
            ReadFiles();
        }
 
        static void ReadFiles()
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(_pathToFolder);
 
            foreach (FileInfo file in directoryInfo.GetFiles())
            {
                Console.WriteLine(ModifyFile(file.FullName));
            }
        }
 
        static string ModifyFile(string pathToFile)
        {
            string[] lines = File.ReadAllLines(pathToFile);
 
            string data = "";
 
            int isModify = 0;
 
            for (int i = 0; i < lines.Length; i++)
            {
                string[] line = lines[i].Split(' ');
 
                for (int j = 0; j < line.Length; j++)
                {
                    if (line[j].SequenceEqual(_findWord))
                    {
                        lines[i] += Environment.NewLine + lines[i].Replace(_findWord, _toReplaceWord);
 
                        isModify++;
                    }
                }
                data += lines[i] + Environment.NewLine;
 
            }
 
            using (StreamWriter writer = new StreamWriter(pathToFile, false, Encoding.Unicode))
            {
                writer.Write(data);
            }
 
            return isModify > 0 ? $"Файл {pathToFile} обработан" : $"В файле {pathToFile} отсутствует искомое слово" ;
        }
    }
}
как это работает:
1. создаешь возле своего .exe папку (или в любом другом месте, но тогда нужно обыграть через относительный или абсолютный путь, в интернете инфы достаточно)
2. в ней создаешь несколько файлов, я создал 2 .txt
3. в каждом файле создаешь несколько строк
4. при запуске вводишь первым искомое слово, вторым - слово, на которое хочешь изменить для новой строки
после этого в рамках папки считывается каждый файл, и в каждом добавляется новая строка под контрольной строкой, в которой было найдено искомое слово, с заменой на то, которое ты ввел вторым. Если в файле искомого слова не нашлось, то результат выведет и это.

если надо в формах это делать, то методы ReadFiles и ModifyFile можно спокойно туда перенести, + не забывать про глобальные переменные. а потом в событии кнопки вызвать метод ReadFiles после того, как в текстбоксы внес нужные слова. а сам результат уже вывести в любое удобное место.
1
1 / 1 / 0
Регистрация: 25.05.2018
Сообщений: 100
25.05.2020, 08:13  [ТС]
AndreyVorobey, да у меня и мой код работает , но вот в так называемом пакетном режиме , кстати использовал StreamWriter , у меня текст дозаписывается(добавляется) в этот же файл. Вообщем немного не то у меня получается.
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
+ не забывать про глобальные переменные.
С этим я похоже косячу, да и вообще с переменными %)))

Спасибо, опробуем !!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2020, 08:13
Помогаю со студенческими работами здесь

Проблема с присвоением результата функции элементу структуры который находится в векторе, 111-125 строка
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;vector&gt; #include &lt;iterator&gt; #include &lt;iomanip&gt; #include...

Ошибка алгоритма с присвоением данных в массив
Добрых суток! Сносно работается с диапазонами. С алгоритмами не было проблем. Но начала работу с массивами - и алгоритмы, которые...

Текстовой массив.
Задание: Создать текстовой массив из 16 элементов, которые вводятся пользователем (клавиатурой) и длинной от 1 до 15 символов. Посчитать...

Упорядочить текстовой массив
Здравствуйте!помогите пожалуйста с написанием программы на borland c++. Нужно упорядочить текстовой массив.Если можно сам листинг...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru