Помощь - Поиск - Пользователи - Календарь
Полная версия: Неисправная программа на СИ++
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Екатерина
Здравствуйте! Делаю лабораторную работу и не получается.
Сформировать одномерный массив целых чисел, используя датчик случайныхчисел.
Распечатать получившийся массив.
Поменять местами минимальный и максимальный элементы.
Удалить из массива все элементы, превышающие его среднее значение более, чем на 10 %.
Распечатать полученный массив.
Подскажите, где у меня неправильно написано. Выдает ошибку.
#include <iostream.h>
#include <conio.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
#include <locale.h>

int main()
{
int mas[10];
randomize();
cout<<"Massiv imeet vid: ";
for(int i = 0; i < 10; i++)
{
mas[i] = random(10); //заполняем
cout << mas[i] <<" "; //выводим
}
{
int max=mas[0];

for (int i=1; i < 10; i++)
{
if (mas[i]>max) max=mas[i];
}
cout<<"\n max="<<max<<"\n";
}
{
int min=mas[0];
for (int i=1; i < 10; i++)
{
if (mas[i]<min) min=mas[i];
}
cout<<"\n max="<<min<<"\n";
}
//----------------------------------------------
int max=mas[0], maxPos=0;
for (int i=1; i < 10; i++)
if (mas[i]>max)
{max=mas[i];
maxPos=i;
}
//-----------------------------------------------
int min=min[0], minPos=0;
for (int i=1; i < 10; i++)
if (mas[i]<min)
{min=mas[i];
minPos=i;
}
//--------------------------------------------
//меняем местами
mas[maxPos]=min;
mas[minPos]=max;

getch();
return 0;
}

IUnknown
Вот тут:
Цитата
int min=min[0], minPos=0;

Возможно, имелось в виду min = mas[0]?
sheka
Вот (Показать/Скрыть)

Екатерина, а ты смотришь на то, на что компилятор ругается? Он все сам рассказывает! smile.gif
Желательно использовать константу для размера массива:
#default n 10
легче потом менять будет если вдруг придется.

Всем:
random - есть такая штука в Сях?
ни conio.h ни conio у меня не находит. (Пишу в geany под ubuntu) Библиотеки поставляться же должны вместе с компилятором?
Катя, у меня что-то ни random ни conio не работало: conio убрал, а рандом заменил.
IUnknown
Цитата
random - есть такая штука в Сях?
ни conio.h ни conio у меня не находит. (Пишу в geany под ubuntu)
Есть еще Турбо С++ под ДОС, судя по randomize() - это именно оно. Так что все внесенные исправления будут неправильными с точки зрения того компилятора
Екатерина
Рассказывать то он конечно рассказывает, но не по русски, а английский я читать не умею. А где это #default n 10 прописывается
Ребята. Вот код, который был составлен вначале работы и он работает как часы! Но потом я стала фантазировать и кажется сделала совсем не то. Наподключала библиотек (думала так лучше будет). Теперь у меня вообще ничего не работает mega_chok.gif

#include <iostream.h>
#include <conio.h>

int main()
{
int mas[10];
randomize();
cout<<"Massiv imeet vid: ";
for(int i = 0; i < 10; i++)
{
mas[i] = random(10); //заполняем
cout << mas[i] <<" "; //выводим
}
{
int max=mas[0];

for (int i=1; i < 10; i++)
{
if (mas[i]>max) max=mas[i];
}
cout<<"\n max="<<max<<"\n";
}
{
int min=mas[0];

for (int i=1; i < 10; i++)
{
if (mas[i]<min) min=mas[i];
}
cout<<"\n max="<<min<<"\n";
}
getch();

return 0;
}



IUnknown
Не надо просто так ничего подключать. Подключай только тогда, когда компилятор начинает ругаться, что не видит какого-то определения... Смотри:

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
const int n = 10;
int mas[n];

randomize();
cout<<"Massiv imeet vid: ";
for(int i = 0; i < n; i++)
{
mas[i] = random(10); // заполняем
cout << mas[i] << " "; // выводим
}
cout << endl;

int indexMin = 0, indexMax = 0;
for(int i = 0; i < n; i++) // ищем мин/макс
{
if(mas[i] < mas[indexMin]) indexMin = i;
if(mas[i] > mas[indexMax]) indexMax = i;
}
cout << "min = " << mas[indexMin] << endl;
cout << "max = " << mas[indexMax] << endl;

// Меняем местами
int t = mas[indexMin];
mas[indexMin] = mas[indexMax];
mas[indexMax] = t;

// Результат ...
for(int i = 0; i < n; i++)
{
cout << mas[i] << " ";
}
cout << endl;
getch();
return 0;
}
Ты бы все-таки сказала, каким компилятором пользуешься. Между ними есть разногласия обычно.
Екатерина
Класс! Не ожидала что тут супер-специалисты подсказывают!!! Работает! Спасибо!
А вообще, подключение лишних библиотек не является грубой ошибкой?
Цитата
Ты бы все-таки сказала, каким компилятором пользуешься. Между ними есть разногласия обычно
- я и сама не знаю. А как это узнать?
Krjuger
Как программа называется которую ты запускаеш?Visual Studio ??Если да,то какого года выпуска,там пишут обычно 2008 2010 и тд.Есть еще вариант Borland C++.На самом деле их превеликое множество,но основных немного.
Цитата

А вообще, подключение лишних библиотек не является грубой ошибкой?

Ну это смотря что понимать под лишними и под ошибкой.....
Но то,что написано в стандартных библиотеках почти всегда лучше того,что ты придумать можеш сам(в расчет не берутся моменты,когда ты уже опытный программист и сам способен реализовать те или иные необходимые средства на уровне или лучше стандартных библиотек).
А так, если под лишними подразумеваются библиотеки, которые подключаются ,но вообще не используются,то ошибкой это назвать нельзя,это просто бесполезные строчки кода,единсвенное,что они делают это захламляют программу и возможно(точно не уверен) увеличивают время сборки проекта.На работоспособность они никак не влияют.(Ну или я с этим не сталкивался).

Кстати IUnknown,если не секрет, каким компилятором ты пользуешся?Еще вопрос почему не используется using namespace std; Кстати я пробовал ввести твой код он скомпилировался но в консоль ничего не выводится)))
IUnknown
Цитата
но вообще не используются,то ошибкой это назвать нельзя,это просто бесполезные строчки кода,единсвенное,что они делают это захламляют программу и возможно(точно не уверен) увеличивают время сборки проекта.На работоспособность они никак не влияют
Это неверное утверждение. Даже порядок подключения хидеров влияет на работоспособность, особенно в С++. Если интересно - подберу несколько ярких примеров. Но об этом - не здесь smile.gif

Цитата
я и сама не знаю. А как это узнать?
В любой IDE в меню Help есть пункт About, там это и написано...

Цитата
если не секрет, каким компилятором ты пользуешся?Еще вопрос почему не используется using namespace std; Кстати я пробовал ввести твой код он скомпилировался но в консоль ничего не выводится)))
Не секрет. Вообще у меня GCC, и чтобы проверить я написал программу по всем правилам: и с iostream (без .h), и с using namespace, все как положено. Но я достаточно много писал под ДОС на Турбо С++, и в курсе, что тот компилятор принимает, а что - нет. Так что потом я просто заменил в своем коде все что нужно...
Krjuger
Цитата

Это неверное утверждение. Даже порядок подключения хидеров влияет на работоспособность, особенно в С++.

Да я сталкивался с подобным.Более простой пример,это если пишется функция, в которой используется другая функция, описываемая после первой,пишет дескать незнаю я такой.С хидерами я думаю таже петрушка.Но разве для стандартных библиотек это принципиально.... Не знал.
Но все таки если подключаются вообще не используемые,то их присутствие или отсутствие реально влияет???
Екатерина
Понятно! Но хочется все-таки верить в то что они лишь захламляют программу и почти не влияют на её работоспособность. Ведь это лучше чем такая ошибка как отсутствие нужной библиотеки и отказ программы работать.
По поводу компилятора. У меня установлен DELPHI/C++ BUILDER 2009.
Надеюсь я ответила.
А вот с этим не поможете: Удалить из массива все элементы, превышающие его среднее значение более чем на 10% ?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.