Форум программистов, компьютерный форум CyberForum.ru

Ошибка после компиляции и ввода - C++

Восстановить пароль Регистрация
 
 
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 429
Завершенные тесты: 1
20.05.2013, 22:54     Ошибка после компиляции и ввода #1
Компилирую программу,ввожу переменные и выбивает "Unhandled exception at 0x00000001 in Lab 5 1.exe: 0xC0000005: Access violation reading location 0x00000001."
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
20.05.2013, 22:58     Ошибка после компиляции и ввода #2
код?


P.S. не все телепаты
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 429
Завершенные тесты: 1
20.05.2013, 23:03  [ТС]     Ошибка после компиляции и ввода #3
Я только начал писать программу.Решил откомпилировать начало и выбило ошибку.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int B[13];
     for(int i=0;i<14;i++)
     {cout<<"Input B["<<i<<"]\n";
     cin>>B[i];}
     system ("cls");
 
getch();
return 0;
}
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
20.05.2013, 23:06     Ошибка после компиляции и ввода #4
C++
1
i<14
поменяйте на
C++
1
i<13
Добавлено через 30 секунд
индексация в массив [0;size)
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 429
Завершенные тесты: 1
20.05.2013, 23:41  [ТС]     Ошибка после компиляции и ввода #5
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
i<14
поменяйте на
C++
1
i<13
Добавлено через 30 секунд
индексация в массив [0;size)
Я думал,что оно будет обращаться и к 14 элементу,если я бы написал i<=14.
henecs
 Аватар для henecs
16 / 16 / 0
Регистрация: 19.05.2013
Сообщений: 135
20.05.2013, 23:50     Ошибка после компиляции и ввода #6
если размер массива 1 то обращаться надо к 0 элементу массива а не к 1
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
20.05.2013, 23:55     Ошибка после компиляции и ввода #7
Цитата Сообщение от triadec_96 Посмотреть сообщение
Я думал,что оно будет обращаться и к 14 элементу
будет, но такого элемента нет. Индексы в массиве начинаются с нуля.
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 429
Завершенные тесты: 1
21.05.2013, 00:37  [ТС]     Ошибка после компиляции и ввода #8
Цитата Сообщение от Croessmah Посмотреть сообщение
будет, но такого элемента нет. Индексы в массиве начинаются с нуля.
Получается i<14 и i<=14 одно и то самое и наличие знака "=" не влияет на результат программы?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
21.05.2013, 07:47     Ошибка после компиляции и ввода #9
Цитата Сообщение от triadec_96 Посмотреть сообщение
Получается i<14 и i<=14 одно и то самое и наличие знака "=" не влияет на результат программы?
Почему это?
У Вас последний элемент в массиве B[12]
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 429
Завершенные тесты: 1
21.05.2013, 22:08  [ТС]     Ошибка после компиляции и ввода #10
Цитата Сообщение от Croessmah Посмотреть сообщение
У Вас последний элемент в массиве B[12]
У меня в задании написано массив с 14 элементов.
Почему 12,если
C++
1
int B[13]
?
vetal0007
27 / 27 / 0
Регистрация: 11.02.2012
Сообщений: 299
21.05.2013, 22:19     Ошибка после компиляции и ввода #11
Потому что массив начинается с 0!
0 1 2 3 4 5 6 7 8 9 10 11 12 13
А теперь считайте кол-во элементов
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.05.2013, 22:21     Ошибка после компиляции и ввода #12
triadec_96, в объявлении массива указывается количество элементов. А при доступе к элементам задается индекс, который начинается с нуля.
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
21.05.2013, 22:28     Ошибка после компиляции и ввода #13
Цитата Сообщение от triadec_96 Посмотреть сообщение
У меня в задании написано массив с 14 элементов.
Почему 12,если
C++
1
int B[13]
?
Тебе нужно создать массив из 14 элементов. при объявлении массива тебе нужно писать int array[14]. 14 - действительное количество элементов. а непосредственно при работе с этим массив обращаться к элементам нужно с 0-13.
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 429
Завершенные тесты: 1
21.05.2013, 22:32  [ТС]     Ошибка после компиляции и ввода #14
У меня здесь зацикливание?
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int B[14],max,id;
     for(int i=0;i<13;i++)
     {cout<<"Input B["<<i<<"]\n";
     cin>>B[i];}
 
     system ("cls");
 
      max=B[0];
     for(int i=1;i<14;i++)
       for(int j=1;j<14;i++)
           if(B[j]>B[j-1]) 
           {max=B[j];
            B[j]=B[j-1];
            B[j-1]=max;}
 
 
      for(int i=0;i<13;i++)
     cout<<B[i]<<" ";
getch();
return 0;
}
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,210
Завершенные тесты: 1
21.05.2013, 22:34     Ошибка после компиляции и ввода #15
из того что бросается в глаза:
строка 15
Цитата Сообщение от triadec_96 Посмотреть сообщение
C
1
for(int j=1;j<14;i++)
возможно должно быть
C
1
for(int j=1;j<14;j++)
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.05.2013, 22:42     Ошибка после компиляции и ввода #16
triadec_96, заведите константу:
C++
1
const int size = 14;
и используйте ее и при объявлении массива и во всех циклах.
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 429
Завершенные тесты: 1
21.05.2013, 22:56  [ТС]     Ошибка после компиляции и ввода #17
Цитата Сообщение от schdub Посмотреть сообщение
возможно должно быть
Код C
1
for(int j=1;j<14;j++)
А что у меня с первыми двумя элементами?
Вроде нормально отсортированный массив выводит,но там 12 элементов и перед ними чепуха какая-то.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.05.2013, 23:05     Ошибка после компиляции и ввода #18
Цитата Сообщение от triadec_96 Посмотреть сообщение
А что у меня с первыми двумя элементами?
Говорю же Вам, заведите константу. У Вас при вводе/выводе меньше на 1 элемент используется.
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 429
Завершенные тесты: 1
21.05.2013, 23:39  [ТС]     Ошибка после компиляции и ввода #19
Цитата Сообщение от Tulosba Посмотреть сообщение
Говорю же Вам, заведите константу. У Вас при вводе/выводе меньше на 1 элемент используется.
Не пойму:что не так?
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    const int size = 14;
    int B[14],max,id;
     for(int i=0;i<13;i++)
     {cout<<"Input B["<<i<<"]\n";
     cin>>B[i];}
 
     system ("cls");
 
      max=B[0];
     for(int i=1;i<14;i++)
       for(int j=1;j<14;j++)
           if(B[j]>B[j-1]) 
           {max=B[j];
            B[j]=B[j-1];
            B[j-1]=max;}
 
 
      for(int i=0;i<14;i++)
     cout<<B[i]<<" ";
getch();
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2013, 23:48     Ошибка после компиляции и ввода
Еще ссылки по теме:

C++ Ошибка компиляции модульной программы ввода вывода
Ошибка очистки памяти после ввода динамического массива char C++
Bind (Soket) - ошибка при компиляции после подключения boost C++

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

Или воспользуйтесь поиском по форуму:
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,210
Завершенные тесты: 1
21.05.2013, 23:48     Ошибка после компиляции и ввода #20
triadec_96, какой из алгоритмов сортировки Вы пытаетесь закодировать? Вот пузырек:
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
#include <iostream>
 
void bubble_sort(int * items, int count) {
    int a, b, t;
    for (a = 1; a < count; ++a) {
        for (b = count - 1; b >= a; --b) {
            if (items[b - 1] > items[b]) {
                t = items[b - 1];
                items[b - 1] = items[b];
                items[b] = t;
            }
        }
    }
}
 
int main(int argc, char **argv) {
    // input array
    int B[14];
    int count = sizeof(B) / sizeof(*B);
    for(int i = 0; i < count; ++i) {
        std::cout << "B["<<i<<"]=";
        std::cin  >> B[i];
    }
    
    // sort array
    bubble_sort(B, count);
    
    // print array
    for(int i = 0; i < count; ++i) {
        std::cout<<B[i]<<" ";
    }
    std::cout << std::endl;
}
Yandex
Объявления
21.05.2013, 23:48     Ошибка после компиляции и ввода
Ответ Создать тему
Опции темы

Текущее время: 03:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru