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

Не перечисляет массив - C++

Восстановить пароль Регистрация
 
ATAMAN200
 Аватар для ATAMAN200
9 / 9 / 1
Регистрация: 14.08.2010
Сообщений: 148
21.11.2010, 14:18     Не перечисляет массив #1
Извеняюсь за код так как это pawno скриптинг но он похож на C++ поэтму пишю тут.

Код
#include <a_samp>
#include <a_players>
#include <a_vehicles>

forward Func();

main()
{
}

public Func()
{
new bbb=0,
    ddd=0,
	string3[30];

new Float:x1[20],
    Float:y1[20],
    Float:z1[20],
    
    Float:x2[20],
    Float:y2[20],
    Float:z2[20],
    
    Float:streee1[30],
    Float:strfff1[30];

bbb = GetMaxPlayers();

for(new aaa=0; aaa < bbb; aaa++)
{
if(IsPlayerInAnyVehicle(aaa)==1)
{
ddd = GetPlayerVehicleID(aaa);
GetVehiclePos(ddd, x1[aaa], y1[aaa], z1[aaa]); //узнаёт координаты трспорта и запоминает в массивы "x1[aaa], y1[aaa], z1[aaa]"
}
else if(IsPlayerInAnyVehicle(aaa)==0)
{
GetPlayerPos(aaa,x2[aaa],y2[aaa],z2[aaa]);//узнаёт координаты всех игроков и запоминает в массивы "x2[aaa], y2[aaa], z2[aaa]"
}
}

for(new ooo=0; ooo < bbb; ooo++)
{
for(new uuu=0; uuu < bbb; uuu++)
{
streee1[uuu] = x1[uuu] - x2[ooo]; //Ошибка вот тут не перечисляет x2[ooo]
strfff1[uuu] = y1[uuu] - y2[ooo]; //Ошибка вот тут не перечисляет y2[ooo]
}}

for(new rrr=0; rrr < bbb*bbb; rrr++)
{
format(string3[rrr], sizeof(string3), "%f,%f",streee1[rrr],strfff1[rrr]); //форматирует полученные разници между x1[uuu] - x2[ooo] и y1[uuu] - y2[ooo] в вещественное число и передает в строку string3[rrr]
SendClientMessageToAll(0xFFFF00AA, string3[rrr]); //отображает на экран результат вычесления streee1[uuu] = x1[uuu] - x2[ooo]; и strfff1[uuu] = y1[uuu] - y2[ooo]; 
}
return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
SetTimer("Func",1000,1); //каждую секунду запускает на выполнения функцию public Func()
return 1;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2010, 14:18     Не перечисляет массив
Посмотрите здесь:

C++ Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W
C++ Массив: Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию.
C++ Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W
C++ задача записать в массив отрицательные элементы матрицы в массив и вывести их
Массив: Составить массив из двух исходных по заданному принципу заполнения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.11.2010, 15:10     Не перечисляет массив #2
Если рассуждать по сишному, то должно работать. А вы уверены, что вообще не перечисляет, просто значение ooo увеличивается после того, как будут перебраны все значения uuu.
ATAMAN200
 Аватар для ATAMAN200
9 / 9 / 1
Регистрация: 14.08.2010
Сообщений: 148
21.11.2010, 15:14  [ТС]     Не перечисляет массив #3
Всё верно мне надо сначало перебрать все uuu потом увеличить ooo на дин и опять перебрать все uuu

Исправил ошибку но всё равно не помого
Код
for(new ooo=0; ooo < bbb; ooo++)
{
for(new uuu=0; uuu < bbb; uuu++)
streee1[uuu] = x1[uuu] - x2[ooo]; //Ошибка вот тут не перечисляет x2[ooo]
strfff1[uuu] = y1[uuu] - y2[ooo]; //Ошибка вот тут не перечисляет y2[ooo]
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.11.2010, 15:20     Не перечисляет массив #4
Вот, что еще заметил - такой цикл не имеет смысла, т.к. в конечном счете массивы заполняться значениями, которые будут в последнем проходе цикла. Это все можно записать вот в таком виде:
Код
for(new uuu=0; uuu < bbb; uuu++)
{
streee1[uuu] = x1[uuu] - x2[bbb-1]; 
strfff1[uuu] = y1[uuu] - y2[bbb-1]; 
}
Результат этого цикла точно такой же как у ваших двух.

Добавлено через 3 минуты
еще странно: strfff1 и streee1 имеют размерность 30, а x2 и y2 имеют размерность 20. Вы уверены, что в строке
Код
bbb = GetMaxPlayers();
bbb получает корректное значение?
ATAMAN200
 Аватар для ATAMAN200
9 / 9 / 1
Регистрация: 14.08.2010
Сообщений: 148
21.11.2010, 15:20  [ТС]     Не перечисляет массив #5
bbb это не массив это переменная типа int и она имеет один результат у меня в данном случаи 3
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.11.2010, 15:22     Не перечисляет массив #6
Да я понимаю, просто если GetMaxPlayers() вернула бы, например, 25, то могла быть ошибка доступа.
ATAMAN200
 Аватар для ATAMAN200
9 / 9 / 1
Регистрация: 14.08.2010
Сообщений: 148
21.11.2010, 15:22  [ТС]     Не перечисляет массив #7
strfff1 и streee1 там можно посути обойтись и 10 я просто написал с запасом чтобы не думалось
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.11.2010, 15:24     Не перечисляет массив #8
Цитата Сообщение от ATAMAN200 Посмотреть сообщение
Исправил ошибку но всё равно не помого
По-моему раньше со скобками было правильней)
ATAMAN200
 Аватар для ATAMAN200
9 / 9 / 1
Регистрация: 14.08.2010
Сообщений: 148
21.11.2010, 15:25  [ТС]     Не перечисляет массив #9
Цитата Сообщение от Kastaneda Посмотреть сообщение
Да я понимаю, просто если GetMaxPlayers() вернула бы, например, 25, то могла быть ошибка доступа.
да ошибка была бы но я это предусматрел бы потом
там максимум игроков может играть на сервере это 500 вот я бы и поставил
streee1[500]
strfff1[500]
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2010, 15:25     Не перечисляет массив
Еще ссылки по теме:

C++ Массив: Переместить в массив Y все числа, дробная часть которых больше 5.
Массивы и указатели (нужно передать массив I[10] в массив J[10] в обратной последовательности) C++
Сжать массив, выбросив из него отрицательные элементы - массив становится пустым C++

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.11.2010, 15:25     Не перечисляет массив #10
А в отладчике трассировать пробовали?
Yandex
Объявления
21.11.2010, 15:25     Не перечисляет массив
Ответ Создать тему
Опции темы

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