0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 17
1

Компилируется, но не выполняется программа

24.02.2016, 00:23. Показов 1181. Ответов 8
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
Есть код, содержащий функцию сортировки выбором
Все компилируется , однако при запуске выдает просто черную консоль, и ничего не происходит
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
#include <iostream>
#include <fstream>
using namespace std;
int i,j;
void SelectionSort(int A[], int n) //сортировка выбором
{
int count, key;
for (i=0; i<n-1; i++)
{
count=A[i]; key=i;
for (j=i+1; j<n; j++)
if (A[j]<A[key]) key=j;
if (key!=i)
{
A[i]=A[key];
A[key]=count;
}
}
}
int main(){
fstream F; 
F.open("nosort.txt", ios::in);
int size;
int x;
while(!F.eof()){
    F>>x;
    size++;
}
int arr[size];
int i=0;
F.seekg( 0 , ios::beg );
while(!F.eof()){
    F>>arr[i];
    i++;
}
F.close();
SelectionSort(arr, size);
F.open("sort.txt", ios::out);
for(i=0;i<=size;i++){
F<<arr[i]<< endl;
    }
F.close();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2016, 00:23
Ответы с готовыми решениями:

Программа компилируется в Borland 6.0 но не компилируется в Visual Studio 2008
Ета програма компилируетса в борланде 6.0 но не компилируетса в Visualstudio 2008 и в борланде 10-м...

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

Компилируется но не выполняется
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main () { int n; int array; printf(&quot;vvedite...

Первая программа. Код не компилируется и не запускается программа.
Первая программа, первая ошибка Здравствуйте! Решил учить С++. Скачал книгу Programming:...

8
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
24.02.2016, 00:38 2
Цитата Сообщение от zuck127 Посмотреть сообщение
однако при запуске выдает просто черную консоль, и ничего не происходит
сделайте так:

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
#include <iostream>
#include <fstream>
using namespace std;
int i,j;
void SelectionSort(int A[], int n) //сортировка выбором
{
int count, key;
for (i=0; i<n-1; i++)
{
count=A[i]; key=i;
for (j=i+1; j<n; j++)
if (A[j]<A[key]) key=j;
if (key!=i)
{
A[i]=A[key];
A[key]=count;
}
}
}
int main(){
 
cout <<"hello, zuck127!"<<endl;
 
fstream F; 
F.open("nosort.txt", ios::in);
int size;
int x;
while(!F.eof()){
    F>>x;
    size++;
}
int arr[size];
int i=0;
F.seekg( 0 , ios::beg );
while(!F.eof()){
    F>>arr[i];
    i++;
}
F.close();
SelectionSort(arr, size);
F.open("sort.txt", ios::out);
for(i=0;i<=size;i++){
F<<arr[i]<< endl;
    }
F.close();
}
программка помимо основной логики,
начнет с вами здороваться.
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 17
24.02.2016, 00:43  [ТС] 3
Это конечно здорово) но мне нужно чтобы в файл записывался отсортированный массив, а этого не происходит после запуска
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
24.02.2016, 00:56 4
Цитата Сообщение от zuck127 Посмотреть сообщение
нужно чтобы в файл записывался отсортированный массив, а этого не происходит после запуска
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
#include <iostream>
#include <fstream>
using namespace std;
int i,j;
 
void SelectionSort(int A[], int n) 
{
    int count, key;
    for (i=0; i<n-1; i++)
    {
        count=A[i]; key=i;
        for (j=i+1; j<n; j++)
            if (A[j]<A[key]) 
                key=j;
 
        if (key!=i)
            A[i]=A[key],
            A[key]=count;
    }
}
 
int main(){
 
    cout <<"hello, zuck127!"<<endl;
 
    fstream F; 
    F.open("nosort.txt", ios::in);
    if (!F)
        cout << "error: nosort.txt not found" << endl;
 
    int size;
    int x;
    while(!F.eof())
        F>>x,
        size++;
    
    int arr[size];   //<--- detected ugly code
    int i=0;
    F.seekg( 0 , ios::beg );
    while(!F.eof())
        F>>arr[i],
        i++;
    
    F.close();
    SelectionSort(arr, size);
    F.open("sort.txt", ios::out);
 
    if (!F)
        cout << "error: can`t write sort.txt" << endl;
 
    for(i=0;i<=size;i++)
        F<<arr[i]<< endl;
 
    F.close();
}
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 17
24.02.2016, 01:00  [ТС] 5
Не работает. Выводит "Hello, zuck127". Консоль висит. В файл ничего не записывается
p.s. знаю, что код ужасный)
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
24.02.2016, 01:09 6
Цитата Сообщение от zuck127 Посмотреть сообщение
int size;
C++
1
int size = 0;
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 17
24.02.2016, 01:13  [ТС] 7
Так же висит консоль и ничего не меняется
0
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
24.02.2016, 02:21 8
zuck127,

1. Нельзя объявлять в коде вот так массив заведомо-неизвестного размера. Только если size - константа.
C++
1
int arr[size];
Вместо этого используйте
C++
1
2
3
int *arr = new int[size];
<...>
delete []arr;
2. Вторая ошибка - вы не инициализируете переменную size. Задайте ее по-умолчанию равной нулю.

3. Открытие потока можно отслеживать таким кодом. Может быть программа даже не открывает этот файл, потому что не может его найти.
C++
1
2
3
4
5
6
7
8
fstream F;
F.open("nosort.txt", ios::in);
 
if(F.is_open()) {
    //все хорошо, поток открыт для чтения
} else {
    //выводим ошибку и закрываем программу
}
Все, что бросается в глаза на первый взгляд. Тестируйте
0
26 / 26 / 15
Регистрация: 30.12.2015
Сообщений: 95
24.02.2016, 02:38 9
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
#include <iostream>
#include <fstream>
using namespace std;
int i, j;
void SelectionSort(int A[], int n) //сортировка выбором
{
    int count, key;
    for(i = 0; i<n - 1; i++)
    {
        count = A[i]; key = i;
        for(j = i + 1; j<n; j++)
        if(A[j]<A[key]) key = j;
        if(key != i)
        {
            A[i] = A[key];
            A[key] = count;
        }
    }
}
int main(){
    fstream F;
    F.open("nosort.txt", ios::in);
    int size = 0;
    int x;
    while(!F.eof()){
        F >> x;
        size++;
    }
    int *arr = new int[size];
    int i = 0;
    F.seekg(0, ios::beg);
    while(!F.eof()){
        F >> arr[i];
        i++;
    }
    F.close();
    SelectionSort(arr, size);
    F.open("sort.txt", ios::out);
    for(i = 0; i < size; i++){
        F << arr[i] << '\n';
    }
    F.close();
    delete[] arr;
    std::cout << "Done!\n";
    std::cin.get();
    return 0;
}
В первую очередь, как уже выше писали, массив надо создавать динамически. Так же была ошибка в последнем цикле for в проверочном условии, вместо
C++
1
for(i=0;i<=size;i++)
надо
C++
1
for(i=0;i<size;i++)
В первом случае в файл дополнительно записывались случайные данные в памяти за границей массива.
0
24.02.2016, 02:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2016, 02:38
Помогаю со студенческими работами здесь

Не компилируется программа?
не могу откомпелировать программу, смотри рисунок.

Не компилируется программа
// Students.cpp: определяет точку входа для консольного приложения. // #include &lt;stdlib.h&gt; // Для...

Программа не компилируется
На копе в универе писала программу, принесла домой доделать, но она не хочет компилироваться. VS...

Не компилируется программа
Скачал электронный учебник,там код плохо видно,не компилируется Где там ошибка подскажите ...


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

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

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