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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.