little_greg Опубликовано 19 апреля, 2009 Жалоба Поделиться Опубликовано 19 апреля, 2009 Возникает ошибка "\main.cpp `max' undeclared (first use this function)", хотя массив описан. #include <cstdlib> #include <iostream> using namespace std; int room[7]={102, 107, 109, 112, 115, 116, 123}; int max[7]={12, 43, 23, 12, 20, 15, 16}; int main(int argc, char *argv[]) { int index, answer, choice, num, rooms, flag, found; rooms=7; puts("1. Pokazat vmestimost vseh komnat.\n"); puts("2. Opredelit vmestimost opredelennoi komnati.\n"); puts("3. Naiti komnatu opredelennoi vmestimosti.\n"); printf("Vvedite vash vibor ot 1 do 3: "); scanf("%d", &choice); putchar('\n'); switch(choice) { case 1: for (index=0; index<7; index++) printf("Komnata #%d rasschitana na %d mest.\n", room[index], max[index]); break; case 2: printf("Vvedite nomer komnati: "); scanf("%d", &num); index=0; found=0; while (!found && index<rooms) if (room[index]==num) found=1; else index++; if (!found) puts("Komnati s takim nomerom net v spiske.\n"); else printf("Komnata #%d rasschitana na %d mest.\n", room[index], max[index]); break; case 3: flag=0; printf("Vvedite minimalnoe kolichestvo mest: "); scanf("%d", &num); for (index=0; index<rooms; index++) if (max[index]>=num) { flag=1; printf("Komnata #%d rasschitana na %d mest.\n", room[index], max[index]); } if (flag==0) puts("Komnat s takim kolichestvom mest net.\n"); break; default: puts("Nepravilnyi vvod."); } system("PAUSE"); return EXIT_SUCCESS; } Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 19 апреля, 2009 Жалоба Поделиться Опубликовано 19 апреля, 2009 (изменено) little_greg: Конфликт имен. Убери из программы строку using namespace std; или дай массиву max какое-нибудь не столь громкое имя. Или можешь перенести объявление массивов room и max внутрь функции main. Тогда имя max будет переопределено внутри функции. Изменено 19 апреля, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
little_greg Опубликовано 20 апреля, 2009 Автор Жалоба Поделиться Опубликовано 20 апреля, 2009 А как-то можно узнать какое имя можно использовать, а какое нет, чтобы в будущем такого не было. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Хексем Опубликовано 20 апреля, 2009 Жалоба Поделиться Опубликовано 20 апреля, 2009 А как-то можно узнать какое имя можно использовать, а какое нет, чтобы в будущем такого не было. У нас сопадений не должно быть с ключевыми словами и именами функций. С первым все понятно, а про функции... какие-то ты знаешь, какие-то имена можно проверить на наличие в библиотеке... Я думаю все :bye1: Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 20 апреля, 2009 Жалоба Поделиться Опубликовано 20 апреля, 2009 little_greg: В случае конфликта компилятор сообщит. Но на всякий случай старайся объявлять имена не на глобальном уровне, а внутри функции, особенно имена, подозрительные на совпадение с именами стандартных функций или констант. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Хексем Опубликовано 14 мая, 2009 Жалоба Поделиться Опубликовано 14 мая, 2009 Задача с обычными массивами. Вводится размерность массива a, массив а заполняется случаными числами, далее в массив b записывается максимальный, минимальный элементы массива а, и сумма элементов массива а. Посмотрите пожалуйста праивльность нахождения максимального и минимального элементов, не всегда првильно работает... #include <iostream.h>#include <time.h>#include <math.h>int main(){srand(unsigned(time(NULL))); int N=50, n;cin >> n;float a[N], b[3];cout << "\nMass A: \n\n";for (int i=0; i<n; i++) {a[i]=rand()%201-100;cout << a[i] << " "; }b[0]=a[0];for (int i=0; i<n; i++) if (a[i] < a[i+1]) b[0]=a[i+1];b[1] = a[0];for (int i=0; i<n; i++) if (a[i] > a[i+1]) b[1]=a[i+1];b[2]=0;for(int i=0; i<n; i++)b[2]+=a[i];for(int i=0; i<3; i++)cout << endl << b[i] << " ";cout << "\n";system("pause"); return (0);} Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 14 мая, 2009 Жалоба Поделиться Опубликовано 14 мая, 2009 Хексем: if (a < a[i+1]) b[0]=a[i+1]; if (b[0] < a) b[0]=a; if (a > a[i+1]) b[1]=a[i+1]; if (b[1] > a) b[1]=a; Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Хексем Опубликовано 14 мая, 2009 Жалоба Поделиться Опубликовано 14 мая, 2009 Хексем: if (a < a[i+1]) b[0]=a[i+1]; if (b[0] < a) b[0]=a; if (a > a[i+1]) b[1]=a[i+1]; if (b[1] > a) b[1]=a; хм, как все просто, благодарю :D Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти