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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2010, 17:16   #1
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию сортировка массива

У меня ошибку выдает. Помогите исправить

Код:
#include "stdafx.h"
#include <conio.h>
#include <time.h>
#include <math.h>
using namespace std;
int main(){
	srand(time(0));
int a[99];
for (i=0;i<=99;i++)
	a[i]=(rand mod 1000)+1;
	int k=1;
	while (k<=100){
		for (i=k;i<=100;i++){
			if a[i]<a[k]
			{
				int temp=a[k];
				a[k]=a[i];
				a[i]=temp;
			}
			cout << a[k];
			inc(k);
		}
	}
	return 0;
}
Я хотел сделать это, сделано на Delphi
Вложения
Тип файла: rar Сортировка массива.rar (167.0 Кб, 7 просмотров)
Skype: Lotles-XXXX

Последний раз редактировалось Superlotles; 04.04.2010 в 17:20.
Superlotles вне форума Ответить с цитированием
Старый 04.04.2010, 19:13   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Во-первых, сразу указывайте, какие ошибки выдает компилятор! Вот мне не лень каждый такой код загонять то в VS, то в билдер, то еще Бог весть во что и пытаться скомпилировать, чтобы найти ошибки!
Ладно, к делу. Вот навскидку:
Код:
a[i]=(rand mod 1000)+1;
Нет такого слово в C++ как mod, а есть оператор %:
Код:
a[i]=(rand() % 1000)+1;
Кроме того, rand - это функция, поэтому писать надо со скобочками.
То же самое:
Код:
inc(k);
Оператор инкремента ++ префиксный и постфиксный (++k и k++ соответственно). В данном случае без особой разницы, можете выбрать любой вариант.
Также у вас выход за пределы массива:
Код:
int a[99];
for (i=0;i<=99;i++)
	a[i]=(rand mod 1000)+1;
//...
	while (k<=100){
//...
			if a[i]<a[k]
У вас массив с индексами 0..98, а вы пытаетесь получить доступ вплоть до элемента с индексом 100.
Да и вообще общепринято в цикле for использовать оператор <, а не <=, хотя это и не является ошибкой:
Код:
int a[10];
for (int i = 0; i < 10; i++)
 a[i] = i;
Вот вам навскидку, без компилятора, может быть чего и упустил.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 05.04.2010, 10:21   #3
evgn
Разрабатываюсь....
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 68
По умолчанию

Код:
#include "stdafx.h"
#include <conio.h>
#include <time.h>
#include <math.h>
using namespace std;
int main(){
	srand(time(0));
int a[99];
for (int i=0;i<99;i++)
	a[i]=(rand() % 1000)+1;
	int k=0;
	while (k<99){
		for (int i=k;i<99;i++){
			if (a[i]<a[k])
			{
				int temp=a[k];
				a[k]=a[i];
				a[i]=temp;
			}
			cout << a[k];
			k++;
		}
	}
	return 0;
}
evgn вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с++ сортировка массива ioda1986 Общие вопросы C/C++ 13 07.03.2010 19:32
Сортировка массива Jasper92 Общие вопросы C/C++ 8 27.12.2009 19:47
Сортировка массива ttjke Помощь студентам 0 01.12.2009 20:03
сортировка массива Dimati87 Паскаль, Turbo Pascal, PascalABC.NET 6 03.06.2009 09:17
Сортировка массива Dagmaria Общие вопросы C/C++ 5 05.07.2008 00:23