Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для 5pliT

Новый участник


Сообщения: 21
Благодарности: 9

Профиль | Отправить PM | Цитировать


Цитата Drongo:
1. Хочу, чтобы массив перебирался и вычислялось число у которого чисел в разрядах наибольшее количество, пример: "7" = 1 разряд в числе, "243" - 3 раряда в числе, "23888" - 5 разрядов, "24" - 2 разряда, и т.д. Это нужно для вычисления проходов в цикле for, Чтобы в первом цикле for можно было подставлять вычисленное число, а не вручную, как сейчас "5", мне кажется нужна функция: которая принимает число и переводит его в строку, но я не знаю эту функцию, подскажете?! »
Число в строку приобразует функция:
char * itoa ( int value, char * str, int base );
обычно её можно найти в stdlib.h.
Или можно написать самому примерно так:
Код: Выделить весь код
char* itoa(int val, int base) { 
	char buf[32] = {0}; 
	int i=30; 
	for(;val&&i;--i,val/=base) 
	buf[i]="0123456789abcdef"[val%base]; 
	return &buf[i+1]; 
}
Количество разрядов можно подсчитать ещё проще примерно так:
Код: Выделить весь код
int rzr(int nn) {
	int n=nn,x=0;
	while (n<>0) { 
		n/=10;
		x++;
	}
	return x;
}
Цитата Drongo:
2. И ещё почему при размере массива в 20000 функция работает, а с размером уже больше 20 тысяч вылетает в ошибку?! Проверял только до 100000 и выставлял, число в разрядах "6". Что не так?! »
Думаю дело в диапозонах значений стандартных типов. Попробуйте использовать не int, а long long например.

Цитата Drongo:
Прочитал тему на форуме Последовательность чисел Подумал, а нельзя ли как-нибудь использовать исключающее "И" или "или"?! Для сортировки. Как решено в этой теме 5pliT-ом, если можно то как?! »
Исключающее ИЛИ можно использовать для обмена значений. Я не думаю что алгоритм блочной сортировки не меняет элементы массива местами, поэтому тот код также подойдёт.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:19, 04-01-2008 | #2