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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2012, 15:16   #1
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию Использование 1го массива 2 раза, ошибка?

есть код

Код:
#include <iostream>
using namespace std;
int main()
{
	const int m=10;
	int i[m],a=0,min,max,g,k,fl, puz,kl=0,kl1=0,t;
	while (cin >> i[a])
		a=a+1;
	for (int z=0; z<=a; z++)
	{
		for (int t=0; t<=a; t++)
		{
			if (i[z]<i[t])
			{
				kl=kl+1;
				puz=i[t];
				i[t]=i[z];
				i[z]=puz;
			}
		}
	}
	for (int u=1; u<=a; u++)
		cout <<i[u] <<" ";
	cout <<endl <<kl <<" obmen, kol-vo perestanovok" <<endl;


	for (k=0; k<=a-1; k++)
	{
		min=i[k];
		for( g=k; g<=a-1; g++)
			{
				if(i[g]<min)
				{
				min=i[g];
				fl=g;
				}
			}
		kl1=kl1+1;
		max=i[k];
		i[k]=i[fl];
		i[fl]=max;
	}
	for (int p=0; p<=a-1; p++)
		cout <<i[p] <<" ";
	cout <<endl <<kl1 <<" viborom, kol-vo perestanovok" <<endl;
	system ("pause");
	return 0;
}
компилируется без ошибок, но при запуске..."нарушение прав доступа при чтении"
как быть?

Последний раз редактировалось Stilet; 19.02.2012 в 09:28.
zaki вне форума Ответить с цитированием
Старый 18.02.2012, 16:03   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от zaki Посмотреть сообщение
как быть?
Искать, в каких местах индекс выходит за пределы фактической размерности.
Vago вне форума Ответить с цитированием
Старый 18.02.2012, 16:31   #3
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Переписать программу заново! Ваша программа "беззащитна". Где вы проверяете, что пользователь не введёт больше 10 элементов. И пользователей надо уважать. Выводить приглашение для них.

Обычно массив называют буквой a (от слова array - массив), а индекс буквой i (от слова index), но никак ни наоборот. И константы можно с большой буквы писать. Перепишите с комментариями и осмысленно назовите переменные. Тогда разбираться остальным будет легче. Вам быстрее помогут.

Хотя бы так:
Код:
#include <iostream>
using namespace std;

int main()
{
    const int NELEM = 10;
    int a[NELEM], i = 0, val;

    setlocale(LC_ALL, "Russian");

    cout << "Введите не более 10 элементов:" << endl;
    while (cin >> val) {
        if (i < NELEM) {
            a[i] = val;
            i++;
        }
        else {
            cout << "Вы ввели больше 10 элементов! Перезапустите программу!" << endl;
            return 0;
        }
    }
    return 0;
}
8Observer8 вне форума Ответить с цитированием
Старый 19.02.2012, 07:04   #4
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию

8Observer8, - это не важно.
zaki вне форума Ответить с цитированием
Старый 19.02.2012, 07:05   #5
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

То есть проблема решена?
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шаблоны и мат 1го числа. pinkiller Общие вопросы C/C++ 6 01.01.2012 16:51
Матрицы, конец 1го семестра по программированию kazzz Помощь студентам 31 28.12.2010 23:21
Использование массива в цикле motorway Microsoft Office Excel 4 17.08.2009 21:13
PHP: использование элемента массива как массива Sudia Помощь студентам 1 20.02.2009 20:48