Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 11.02.2013
Сообщений: 23

Зацикливание программы при выборе сортировки

17.04.2013, 01:55. Показов 1249. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
люди кто может помогите с курсовой... буду очень очень благодарен. В приложенном архиве лежит проект.
По сути является формой, с подключенным внешним классом(тоже в архиве): задача берем готовый текстовый документ в котором написаны числа в столбик, копируем числа в текстбокс1 , далее выбираем сортировку и после того как сортируется получаем массив новый. Соответственно текст выводится в текстбокс 2..

задача написана и должна выполняться если бы не одно но:
После выбора файла, при выборе метода сортировки программа циклится где-то и отключается лишь благодаря возможности сделать это в VS2012.
Буду признателен всем кто попробует помочь


Курсовая.rar
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.04.2013, 01:55
Ответы с готовыми решениями:

Как убрать зацикливание при выборе? использую плагин selecter
Если использую плагин стилизация select , то на событие выбора он зацикливает выдачу результата $("select").selecter(); ...

Зацикливание программы при вводе
Добрый день. У меня почему то происходит зацикливание программы при вводе строки с пробелами. Есть структураstruct sklad { char...

Зацикливание программы при рисовании окружности
Dim Граф As Graphics = CreateGraphics() Dim x, y As Integer x = 0 y = 0 Do Until x > 290 ...

10
 Аватар для FROSTEROID
7 / 7 / 1
Регистрация: 15.11.2011
Сообщений: 24
21.04.2013, 15:40
Ты используешь CLI среду, а в ней создаёшь класс, используя старые классы из пространства std и хэдеров типа <string>.
Это приводит к тому, что Ты вынужден переливать значение из String^ в string и обратно посимвольно.
Либо прекрати быть извращенцем и сделай класс с использованием System::, либо прекрати быть извращенцем и пиши эту курсовую как консольку со своими std:: и кучей заголовков.
1
0 / 0 / 1
Регистрация: 11.02.2013
Сообщений: 23
21.04.2013, 16:32  [ТС]
Цитата Сообщение от FROSTEROID Посмотреть сообщение
Ты используешь CLI среду, а в ней создаёшь класс, используя старые классы из пространства std и хэдеров типа <string>.
Это приводит к тому, что Ты вынужден переливать значение из String^ в string и обратно посимвольно.
Либо прекрати быть извращенцем и сделай класс с использованием System::, либо прекрати быть извращенцем и пиши эту курсовую как консольку со своими std:: и кучей заголовков.
а поконкретнее что ты подразумеваешь под созданием класса System:: ?
0
 Аватар для FROSTEROID
7 / 7 / 1
Регистрация: 15.11.2011
Сообщений: 24
21.04.2013, 16:50
Цитата Сообщение от Minor1310 Посмотреть сообщение
а поконкретнее что ты подразумеваешь под созданием класса System:: ?
Это начало твоего хэдера с классом.
(Здесь ты для работы со строками берёшь хедеры string, подключаешь ненужный здесь вообще iostream, для работы с текстофайлом собираешься использовать fstream.)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#pragma once
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <string.h>
#include <cmath>
using namespace std;
ofstream out;
 
public class Sort{
/*... Описание класса ... */
};
Всё это - использование "старых" методов. Как я могу догадаться, ты не так давно писал консольные приложеньица и за тот период успел написать всё, что нужно для слепления такого вот класса - сортировщика. Теперь же произошёл твой переход на визуальное программирование, а код ты решил использовать старый. Вот тебе и подключение телевизора РАДУГА к видеокарте NVIDIA GeForce 9800 gt.
.
.
.
А вот тебе твоё открытие текстофайла уже по нажатию кнопки на форме:
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
public: System::Void button1_Click_1(System::Object^  sender, System::EventArgs^  e) 
             {
                 openFileDialog1->ShowDialog();
                 String^ fn = openFileDialog1->FileName;
                 label1 -> Text=openFileDialog1->FileName;
                     auto f = System::IO::File::OpenText(fn);
                     auto s = f->ReadToEnd();
                     textBox1->Text = s;
                     f->Close();
                 fn=label1->Text->ToString();
                    int i=0;
                        while (1)
                            {
                                 if (i>4)
                                 {
                                     if (fn[i-3]=='.')
                                         if ( fn[i-2]=='t')
                                             if(fn[i-1]=='x')
                                                 if(fn[i]=='t')
                                                     break;
                                 }
                                 temp+=fn[i];
                                 i++;
                             }
                 temp+='t';
             }
Здесь ты уже юзаешь System::IO::File::OpenText,
получаешь String'овую (важно(!): с большой буквы String - класс из простарнства System:;
и начинааается...
1
0 / 0 / 1
Регистрация: 11.02.2013
Сообщений: 23
21.04.2013, 18:35  [ТС]
Цитата Сообщение от FROSTEROID Посмотреть сообщение
Это начало твоего хэдера с классом.
(Здесь ты для работы со строками берёшь хедеры string, подключаешь ненужный здесь вообще iostream, для работы с текстофайлом собираешься использовать fstream.)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#pragma once
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <string.h>
#include <cmath>
using namespace std;
ofstream out;
 
public class Sort{
/*... Описание класса ... */
};
Всё это - использование "старых" методов. Как я могу догадаться, ты не так давно писал консольные приложеньица и за тот период успел написать всё, что нужно для слепления такого вот класса - сортировщика. Теперь же произошёл твой переход на визуальное программирование, а код ты решил использовать старый. Вот тебе и подключение телевизора РАДУГА к видеокарте NVIDIA GeForce 9800 gt.
.
.
.
А вот тебе твоё открытие текстофайла уже по нажатию кнопки на форме:
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
public: System::Void button1_Click_1(System::Object^  sender, System::EventArgs^  e) 
             {
                 openFileDialog1->ShowDialog();
                 String^ fn = openFileDialog1->FileName;
                 label1 -> Text=openFileDialog1->FileName;
                     auto f = System::IO::File::OpenText(fn);
                     auto s = f->ReadToEnd();
                     textBox1->Text = s;
                     f->Close();
                 fn=label1->Text->ToString();
                    int i=0;
                        while (1)
                            {
                                 if (i>4)
                                 {
                                     if (fn[i-3]=='.')
                                         if ( fn[i-2]=='t')
                                             if(fn[i-1]=='x')
                                                 if(fn[i]=='t')
                                                     break;
                                 }
                                 temp+=fn[i];
                                 i++;
                             }
                 temp+='t';
             }
Здесь ты уже юзаешь System::IO::File::OpenText,
получаешь String'овую (важно(!): с большой буквы String - класс из простарнства System:;
и начинааается...
Ну да, первый курс все еще с консолью развлекаются, а я поглубже в язык полез, то решил через winforms реализовать, вот и столкнулся с такими проблемами) Не окажешь посильную помощь, подсказав/показав, что и как поменять?)
0
 Аватар для FROSTEROID
7 / 7 / 1
Регистрация: 15.11.2011
Сообщений: 24
21.04.2013, 19:15
Цитата Сообщение от Алексей Посмотреть сообщение
Ну да, первый курс...
Понимаю.
Всё довольно просто.
То, к чему ты получаешь доступ при помощи хэдеров, надо заменить на то, что нам любезно предоставляет пространство имён System.

Для этого в файле class.h - описателе класса - напиши без всех этих инклудов:
C++
1
2
3
4
using namespace System;
public ref class Sort{
/*... Описание класса ... */
};
Обрати внимание на "...ref class...". Этот ref означает, что класс будет ссылочным. Экземпляры такого класса можно объявлять и в ссылочных, и в управляемых классах.
После этого начнёт всё рушиться(компиляция удачной не будет) - пришло время заменять методы.
В общем-то, нужно будет лишь заменить метод взятия текста из файла ("inputFiles") на аналогичный тому, что ты уже используешь в форме(в обработчике нажатия кнопки "обзор").

Далее немного о грамотности:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
 
            Sort sort;//        
            String ^ temp;//        Объявляй свои "глобальные"(распространяющиеся на весь период работы формы) переменные здесь 
 
     
 
        Form1(void)
        {
            InitializeComponent();
        }
//  Тут много автоматически созданного кода - описания содержимого формы.
      };
(Заметь, что я тут объявил твой temp уже как String^ - указатель на класс из System::, в методах и обработчиках надо будет поступить соответствующе.)
Ну и всё, грамотностью красоваться не мне.
1
0 / 0 / 1
Регистрация: 11.02.2013
Сообщений: 23
21.04.2013, 23:05  [ТС]
Цитата Сообщение от FROSTEROID Посмотреть сообщение
Понимаю.
Всё довольно просто.
То, к чему ты получаешь доступ при помощи хэдеров, надо заменить на то, что нам любезно предоставляет пространство имён System.

Для этого в файле class.h - описателе класса - напиши без всех этих инклудов:
C++
1
2
3
4
using namespace System;
public ref class Sort{
/*... Описание класса ... */
};
Обрати внимание на "...ref class...". Этот ref означает, что класс будет ссылочным. Экземпляры такого класса можно объявлять и в ссылочных, и в управляемых классах.
После этого начнёт всё рушиться(компиляция удачной не будет) - пришло время заменять методы.
В общем-то, нужно будет лишь заменить метод взятия текста из файла ("inputFiles") на аналогичный тому, что ты уже используешь в форме(в обработчике нажатия кнопки "обзор").

Далее немного о грамотности:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
 
            Sort sort;//        
            String ^ temp;//        Объявляй свои "глобальные"(распространяющиеся на весь период работы формы) переменные здесь 
 
     
 
        Form1(void)
        {
            InitializeComponent();
        }
//  Тут много автоматически созданного кода - описания содержимого формы.
      };
(Заметь, что я тут объявил твой temp уже как String^ - указатель на класс из System::, в методах и обработчиках надо будет поступить соответствующе.)
Ну и всё, грамотностью красоваться не мне.
Благодарю, попробую понять все до конца, если будет непонятно спрошу еще =)

Добавлено через 15 минут
FROSTEROID, а как поменять инпут? он теперь ругается на сроку F.open?
0
 Аватар для FROSTEROID
7 / 7 / 1
Регистрация: 15.11.2011
Сообщений: 24
22.04.2013, 12:37
Цитата Сообщение от Алексей Посмотреть сообщение
FROSTEROID, а как поменять инпут? он теперь ругается на сроку F.open?
Цитата Сообщение от FROSTEROID
...заменить метод взятия текста из файла ("inputFiles") на аналогичный тому, что ты уже используешь в форме(в обработчике нажатия кнопки "обзор").
Это просто, ведь у тебя уже есть готовый код, читающий из файла:
C++
1
2
auto f = System::IO::File::OpenText(fn);
auto s = f->ReadToEnd();
Этот код, кстати, находится в обработчике нажатия кнопки "Обзор" в середине кучи хламокода, который пришлось тебе написать, чтобы передать в свой класс строчку-путь в переменной temp.

Метод inputFiles тебе придётся переделать почти полностью. И ещё следует написать подсчёт количества чисел в файле, чтобы в классе выделять место под соответствующей длины массив.
0
0 / 0 / 1
Регистрация: 11.02.2013
Сообщений: 23
22.04.2013, 13:17  [ТС]
Цитата Сообщение от FROSTEROID Посмотреть сообщение
Это просто, ведь у тебя уже есть готовый код, читающий из файла:
C++
1
2
auto f = System::IO::File::OpenText(fn);
auto s = f->ReadToEnd();
Этот код, кстати, находится в обработчике нажатия кнопки "Обзор" в середине кучи хламокода, который пришлось тебе написать, чтобы передать в свой класс строчку-путь в переменной temp.

Метод inputFiles тебе придётся переделать почти полностью. И ещё следует написать подсчёт количества чисел в файле, чтобы в классе выделять место под соответствующей длины массив.
а можешь полным кодом всю функцию? буду очень очень благодарен тебе
0
 Аватар для FROSTEROID
7 / 7 / 1
Регистрация: 15.11.2011
Сообщений: 24
22.04.2013, 13:22
Цитата Сообщение от Minor1310 Посмотреть сообщение
а можешь полным кодом всю функцию? буду очень очень благодарен тебе.
Ну этак ты не прочувствуешь всю мощь набора ошибок, с которыми можно столкнуться :\
Да и мне лениво делать это бесплатно :Р
1
0 / 0 / 1
Регистрация: 11.02.2013
Сообщений: 23
22.04.2013, 13:35  [ТС]
Цитата Сообщение от FROSTEROID Посмотреть сообщение
Ну этак ты не прочувствуешь всю мощь набора ошибок, с которыми можно столкнуться :\
Да и мне лениво делать это бесплатно :Р
Я не знаю даже как это реализовать теперь а по пооводу денег - студент на столько бедный, что лишь 7 копеек на вебмани
А так вселенская благодарность
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.04.2013, 13:35
Помогаю со студенческими работами здесь

Зацикливание программы при создании ветки реестра
Здравствуйте. Пытаюсь создать ветку реестра если она отсутствует. Для этого запуская программу с правами администратора, но при запуске...

Зацикливание программы при вводе некорректных данных
Привет всем! Я совсем новенький в программировании на С++ (в школе чуток увлекался Бейсиком, но забросил). Три дня назад решил освоить С++....

Крах программы при выборе пункта меню
Здравствуйте. Создаю программу, реализующую дек. Необходимо реализовать его через файловые данные. После пары часов работы, решил прогнать...

Нужно чтоб, при выборе Область — автоматом поднимался список Регионов, при выборе Регион — населенные пункты
Доброго времени суток! Подскажите, пожалуйста! Есть набор данных: Область(2 значения), Регион(2*10), населенный пункт, номер...

Runtime error при выборе одного из пунктов программы
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;malloc.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru