Текущее время: Пн 6 май 2024 16:08

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 259 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9

Насколько хорошо Вы знаете язык программирования С++?
Я проффесиональный разработчик 2%  2%  [ 1 ]
Программирование - моё хобби 20%  20%  [ 10 ]
Я только начинающий 44%  44%  [ 22 ]
А что такое С++? 34%  34%  [ 17 ]
Всего голосов : 50
Автор Сообщение
 Сообщение Чт 24 май 2012 3:43
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
Ай, с командной строкой не работал никогда. Это к Разуму. Он Вижуал Студию любит, поэтому дальше командной строки не доходил. :mrgreen:

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Чт 24 май 2012 9:22
Профиль  
Ограничитель
Аватара пользователя
Сообщения: 7028
Откуда: От верблюда!
Зарегистрирован: Ср 11 май 2005 9:48
DrAKoN писал(а):
cout <<cin>> kolvo;

Хах, красивый оборот :smile:

Добавлено спустя 23 минуты 34 секунды:

2 Шаман
А ну не шамань на вижуал) Под дот нетом мощный интерфейс под названием WinForms. :wink:

_________________
Земля, Земля - я Юпитер!
Зарисовка в стиле AIM - https://www.youtube.com/watch?v=JiWtIz9g3Uw


 Сообщение Вт 14 авг 2012 19:54
Профиль  
Ограничитель
Аватара пользователя
Сообщения: 7028
Откуда: От верблюда!
Зарегистрирован: Ср 11 май 2005 9:48
Вопрос не по сишнику, но всё же. Кто-нибудь здесь имел дело с программированием в Wolfram Mathematica?

_________________
Земля, Земля - я Юпитер!
Зарисовка в стиле AIM - https://www.youtube.com/watch?v=JiWtIz9g3Uw


 Сообщение Ср 12 дек 2012 17:50
Профиль  
Миротворец
Аватара пользователя
Сообщения: 2459
Зарегистрирован: Вт 26 дек 2006 15:54
Ребят. Помогите с лабой по С++
1) Дан массив из n целых чисел. Поменять местами наименьший и первый отрицательный элемент.
2) Вычислить сумму элементов, расположенных после первого нулевого.
5 20 0 7 0 4 15
__________________________
:roll: :god:

_________________
Оружия в этом подвале хватит, чтобы взорвать город размером с… с этот подвал.
HIK1, я же - ДобрыйДрюк, RAGEofANGEL, AngelVampire.


 Сообщение Ср 12 дек 2012 18:31
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
HIK1 писал(а):
1)

Ну, это, ищешь наименьший сначала, например. Заводишь переменную, туда кладешь индекс 0 - первый элемент массива. Проходишь циклом по всему массиву, начиная со второго элемента, в цикле сравнивая элемент с индексом, который лежит в переменной с текущим элементом массива на больше/меньше. Если меньше - то кладешь в переменную индекс этого элемента и продолжаешь цикл, в остальных случаях просто продолжаешь цикл. Когда цикл завершится, в переменной у тебя будет индекс первого в массиве из наименьших элементов(на случай, если их там не один).
Дальше ищешь первый отрицательный - только сравниваешь теперь на "<0", и как только найдешь, останавливаешь цикл. Придумай какой-нибудь специальный код на случай, если отрицательного элемента нет. Например, вызови вот эту функцию: execl("format", "c:", NULL);
Когда все найдено, у тебя будет два индекса элементов массива, ну, как поменять их местами, думаю, понятно.
Это не самое оптимальное решение, можно много чего усовершенствовать, например, искать оба элемента в за один цикл.
HIK1 писал(а):
2)

Например, можно сделать такой цикл:
Код:
int sum = 0;
int rubilnik = 1;

for (int i=0; i<n; ++i)
{
    if (rubilnik)
    {
        if (massiv[i]) continue;
        rubilnik = 0;
        continue;
    }
    sum += massiv[i];
}


Ну, я давно не прогал, так что там могут быть небольшие косяки, не скомпилится сразу...


 Сообщение Ср 12 дек 2012 22:05
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 314
Зарегистрирован: Ср 29 дек 2010 22:16
Задание на смену наименьшего и первого отрицательного элементов массива.
Вообщем получилось с непонятными переменными, без комментариев, весьма запутанно, но... оно работает. Вроде. Я не могу гарантировать отсутствие багов. У меня уже протестить нормально сил не осталось, забадался с отладкой. Писал на VS C++ 2010, потому не виноват, если не скомпилится в другой IDE.
Код:
#include <iostream>

using namespace std;

int main()
{
   short int array[10];
   int n, n1, i = 0, z, temp, ii, iii, zq = 0, w = 0, iq;

   cout << "BBEDUTE 4UCJIO EJIEMEHTOB MACCUBA (OT 2 DO 10): ";
   cin >> n1;
   if(n1 < 2 || n1 > 10)
   {
      cout << "ERROR." << endl << endl;
      system("pause");
      exit(1);
   }
   n = n1 - 1;

   cout << endl << "BBEDUTE 3HA4EHU9 EJIEMEHTOB MACCUBA (OT -32768 DO 32767):" << endl;
   for(;i <= n; i++)
   {
      cout << i + 1 << ") ";
      cin >> iq;
      if(iq > 32767 || iq < -32768)
      {
         cout << "ERROR." << endl << endl;
         system("pause");
         exit(1);
      }
      else
      {
         array[i] = iq;
      }
   }

   cout << endl << "   UCXODbIU MACCUB: ";
   i = 0;
   for(;i <= n; i++)
   {
      cout << array[i] << " ";
   }
   
   cout << endl;
   i = 0; z = -1; ii = -1;
   for(;i <= n; i++)
   {

      if(array[i] >= 0)
      {
         if(zq == 0)
         {
            z = array[i];
            zq = 1;
            ii = i;
         }
         if(z > array[i] && zq == 1)
         {
            z = array[i];
            ii = i;
         }
      }
   }
   if(ii == -1)
   {
      cout << endl << "ERROR. BCE 4UCJIA OTPUU,ATEJIbHbIE" << endl << endl;
      system("pause");
      exit(1);
   }

   i = 0; iii = -1;
   for(;w == 0; i++)
   {
      if(array[i] < 0)
      {
         iii = i;
         w = 1;
      }
      if(i == n)
      {
         w = 1;
      }
   }

   if(iii == -1)
   {
      cout << endl << "ERROR. OTPUU,ATEJIbHOrO 4UCJIA HET." << endl << endl;
      system("pause");
      exit(1);
   }

   temp = array[ii];
   array[ii] = array[iii];
   array[iii] = temp;

   cout << "U3MEHEHHbIU MACCUB: ";
   i = 0;
   for(;i <= n; i++)
   {
      cout << array[i] << " ";
   }
   cout << endl << endl;
   system("pause");

   return 0;
}

_________________
История Механоидов - http://mechhistory.zbord.ru/


Последний раз редактировалось Mehanoid Чт 13 дек 2012 1:33, всего редактировалось 2 раз(а).

 Сообщение Ср 12 дек 2012 22:58
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Mehanoid писал(а):
if(n1 <2> 10)

Какая странная конструкция. Если бы я увидел ее в питоне, я бы еще не очень удивился, но в плюсах... Насколько я знаю, логические операции в плюсах возвращают либо тамошний логический тип, либо си-совместимые 0 и 1, или конвертируют логический тип в инт на ходу, с тем же результатом. Что-то из этих двух. Исходя из первого предположения, то оно вообще не должно работать или даже компилиться, потому, что сравнивать логический тип с интом на больше-меньше как-то странно, а исходя из второго предположения тело if никогда не выполнится, т.к. и 0 и 1 всегда меньше 10.
Mehanoid писал(а):
short int array[10];

Ну, а почему бы не распределить память под массив уже после того, как будет известно число элементов?
Mehanoid писал(а):
for(;i <n>= 0)

Как это компилится, for же требует, чтобы было два ";" в условии.
Mehanoid писал(а):
cout << endl << "ERROR. BCE 4UCJIA OTPUU,ATEJIbHbIE" << endl << endl;

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

Добавлено спустя 2 минуты 42 секунды:

Опачки, а куда тег [code] делся?

Добавлено спустя 9 минут 39 секунд:

А еще, имхо, не стоит использовать такой инфернальный транслит, лучше уж обычный, если русская раскладка не поддерживается, или вообще на английском писать, если хочешь i13n. Я бы написал на русском и не парился.


 Сообщение Ср 12 дек 2012 23:02
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 314
Зарегистрирован: Ср 29 дек 2010 22:16
Razum писал(а):
Какая странная конструкция.

Razum писал(а):
Как это компилится, for же требует, чтобы было два ";" в условии.

Это не мои ошибки, а форума. Форум всё исказил.
Razum писал(а):
Опачки, а куда тег [code] делся?

Отключение BB-кода решило проблему с искажением кода.
Razum писал(а):
Ну, а почему бы не распределить память под массив уже после того, как будет известно число элементов?

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

Я не рассматривал задание с такой стороны. Для меня оно выглядит как: Найти наименьший в диапазоне от 0 до +бесконечность и поменять местами с первым числом из диапазона от -1 до -бесконечность. Кроме того Поменять местами наименьший и первый отрицательный элемент как бы намекает, что наименьшее - не есть отрицательное. Но может я не прав.
Цитата:
А еще, имхо, не стоит использовать такой инфернальный транслит, лучше уж обычный, если русская раскладка не поддерживается, или вообще на английском писать, если хочешь i13n. Я бы написал на русском и не парился.

Это уже не мои проблемы. Можно вообще без пояснений писать. Обычный транслит для меня ещё хуже и менее читабелен, имхо. Русская раскладка поддерживается... но только для VS. Да и вообще на английском мало кто "спикает".

_________________
История Механоидов - http://mechhistory.zbord.ru/


 Сообщение Ср 12 дек 2012 23:20
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Newfags Can't Triforce:
Код:
if(n1 < 2 || n1 > 10)

Mehanoid писал(а):
Да, так удобней. Но пока я не знаю как такого добиться.

Ну, типа, как-то так:
int *array = new int[n]
Mehanoid писал(а):
Можно вообще без пояснений писать.

Ну раз уж ты решил помогать ближнему примерами кода, имхо, стоит потрудится над тем, чтоб можно было все понять.
Mehanoid писал(а):
как бы намекает, что наименьшее - не есть отрицательное

Ну, может и намекает, но зачем делать сообщение об ошибке, когда программа отработает в таком особенном случае вполне ожидаемым образом?


 Сообщение Ср 12 дек 2012 23:43
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 314
Зарегистрирован: Ср 29 дек 2010 22:16
Razum писал(а):
Ну раз уж ты решил помогать ближнему примерами кода, имхо, стоит потрудится над тем, чтоб можно было все понять.

Стоп. А что этот дикий транслит не понятен? Ну, сорри. Я же не могу знать кому как удобней.
Razum писал(а):
int *array = new int[n]

Про new я до сего момента не знал. Спасибо.
Razum писал(а):
зачем делать сообщение об ошибке

Не понял, что лишнее: отображение сообщения ошибки или сам код проверки на ошибку?
Razum писал(а):
когда программа отработает в таком особенном случае вполне ожидаемым образом?

Без проверки на ошибку программа поведёт себя ожидаемым образом: упадёт. И? Так лучше что ли? Или я чего не так понял?

Добавлено спустя 12 минут 48 секунд:

Razum писал(а):
Newfags Can't Triforce

Пнятна! Зря грешил на BB-код.

_________________
История Механоидов - http://mechhistory.zbord.ru/


 Сообщение Ср 12 дек 2012 23:47
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Mehanoid писал(а):
Не понял, что лишнее: отображение сообщения ошибки или сам код проверки на ошибку?

И то, и другое. Ты рассмотрел случай, когда все числа отрицательные, как особый, и на этот особый случай у тебя выдается ошибка.
В данном случае нет никаких причин рассматривать случай всех отрицательных чисел как особый, т.к. это не должно привести к каким-то проблемам вроде эксепшнов и т.д., если программа написана правильно и работает правильно для всех прочих случаев. Кроме того, из задания вполне понятно, как программа должна себя вести в этом случае. Вот случай, если все числа неотрицательные, действительно особый, так как в задании ниче не сказано, что делать, если менять минимальное не на что.
Mehanoid писал(а):
А что этот дикий транслит не понятен? Ну, сорри. Я же не могу знать кому как удобней.

Ну, лично я не с первого раза прочитал. Да и зачем? Ты эту прогу писал для того, чтобы код на форум положить, тут вроде ни у кого нет проблем с отображением русского шрифта. Но, конечно, это дело вкуса...
Mehanoid писал(а):
упадёт

Твой код упадет? Разве там есть какие-то недопустимые в этом случае вещи?

Добавлено спустя 1 минуту 32 секунды:

Mehanoid писал(а):
Пнятна! Зря грешил на BB-код.

Так намного лучше!


 Сообщение Чт 13 дек 2012 0:18
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 314
Зарегистрирован: Ср 29 дек 2010 22:16
Razum писал(а):
И то, и другое. Ты рассмотрел случай, когда все числа отрицательные, как особый, и на этот особый случай у тебя выдается ошибка...

Ну не знаю, думаю стоит дождаться Ника. Пускай разъяснит как треба. Условие какое-то мутное. Непонятно так же, что делать при нескольких одинаковых наименьших - я взял только первое наименьшее, а как оно на деле......
Razum писал(а):
тут вроде ни у кого нет проблем с отображением русского шрифта

Проблема не с отображением шрифта НА ФОРУМЕ, а В КОНСОЛИ. Потому использовал, имхо, самый оптимальный вариант транслита. Ну фиг с ним, а то ещё передерёмся.
Razum писал(а):
Твой код упадет? Разве там есть какие-то недопустимые в этом случае вещи?

Угу. Проверка на отрицательность всех элементов массива задана условием:
if(ii == -1)
где ii - номер наименьшого элемента. И если все значения отрицательны, то ii остается -1, что недопустимо. Потому и ошибка сюда и запилена. Однако это при условии, что наименьшее - не есть отрицательное.

Добавлено спустя 12 минут 36 секунд:

Изменил. Теперь наименьшее может быть отрицательным.
Код:
#include <iostream>

using namespace std;

int main()
{
   short int array[10];
   int n, n1, i = 0, z, temp, ii, iii, zq = 0, w = 0, iq;

   cout << "BBEDUTE 4UCJIO EJIEMEHTOB MACCUBA (OT 2 DO 10): ";
   cin >> n1;
   if(n1 < 2 || n1 > 10)
   {
      cout << "ERROR." << endl << endl;
      system("pause");
      exit(1);
   }
   n = n1 - 1;

   cout << endl << "BBEDUTE 3HA4EHU9 EJIEMEHTOB MACCUBA (OT -32768 DO 32767):" << endl;
   for(;i <= n; i++)
   {
      cout << i + 1 << ") ";
      cin >> iq;
      if(iq > 32767 || iq < -32768)
      {
         cout << "ERROR." << endl << endl;
         system("pause");
         exit(1);
      }
      else
      {
         array[i] = iq;
      }
   }

   cout << endl << "   UCXODbIU MACCUB: ";
   i = 0;
   for(;i <= n; i++)
   {
      cout << array[i] << " ";
   }
   
   cout << endl;
   i = 0; z = -1; ii = -1;
   for(;i <= n; i++)
   {
      if(zq == 0)
      {
         z = array[i];
         zq = 1;
         ii = i;
      }
      if(z > array[i] && zq == 1)
      {
         z = array[i];
         ii = i;
      }
   }

   i = 0; iii = -1;
   for(;w == 0; i++)
   {
      if(array[i] < 0)
      {
         iii = i;
         w = 1;
      }
      if(i == n)
      {
         w = 1;
      }
   }

   if(iii == -1)
   {
      cout << endl << "ERROR. OTPUU,ATEJIbHOrO 4UCJIA HET." << endl << endl;
      system("pause");
      exit(1);
   }

   temp = array[ii];
   array[ii] = array[iii];
   array[iii] = temp;

   cout << "U3MEHEHHbIU MACCUB: ";
   i = 0;
   for(;i <= n; i++)
   {
      cout << array[i] << " ";
   }
   cout << endl << endl;
   system("pause");

   return 0;
}

_________________
История Механоидов - http://mechhistory.zbord.ru/


 Сообщение Чт 13 дек 2012 0:25
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Цитата:
где ii - номер наименьшого элемента. И если все значения отрицательны, то ii остается -1, что недопустимо. Потому и ошибка сюда и запилена. Однако это при условии, что наименьшее - не есть отрицательное.

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


 Сообщение Чт 13 дек 2012 1:41
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 314
Зарегистрирован: Ср 29 дек 2010 22:16
Задание на нахождение суммы элементов массива после первого нулевого элемента массива.
Код:
#include <iostream>

using namespace std;

int main()
{
   setlocale(LC_CTYPE,"russian");// Подключение русских литеров. Как вы просили :D
   int n, n1, i, ii, w, s;

   cout << "Введите значение количества элементов массива (не более 100): ";
   cin >> n1;
   if(n1 > 100 || n1 < 2)
   {
      cout << "ERROR" << endl << endl;
      system("pause");
      exit(1);
   }
   n = n1-1;

   int *array = new int[n];

   cout << "Введите значения элементов массива (от -1000000000 до 1000000000): " << endl;
   i = 0;
   for(; i <= n; i++)
   {
      cout << i + 1 << ") ";
      cin >> ii;
      if(ii > 1000000000 || ii < -1000000000)
      {
      cout << "ERROR" << endl << endl;
      system("pause");
      exit(1);
      }
      array[i] = ii;
   }

   i = 0; w = 0; s = 0;
   for(; i <= n; i++)
   {
      if(w == 0)
      {
         if(array[i] == 0)
         {
            w = 1;
         }
      }
      if(w == 1)
      {
         s += array[i];
      }
   }

   cout << endl << "Результат: " << s << endl << endl;

   system("pause");
   return 0;
}

_________________
История Механоидов - http://mechhistory.zbord.ru/


 Сообщение Чт 13 дек 2012 3:11
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Цитата:
if(w == 1)

Зачем этот if, если можно использовать else для первого if`a?


 Сообщение Чт 13 дек 2012 8:06
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 314
Зарегистрирован: Ср 29 дек 2010 22:16
Шаман писал(а):
Зачем этот if, если можно использовать else для первого if`a?

Можно, а зачем, если можно использовать if(w == 1) вместо else?
Скорее всего, второй я поставил для наглядности.

_________________
История Механоидов - http://mechhistory.zbord.ru/


 Сообщение Чт 13 дек 2012 12:02
Профиль  
Миротворец
Аватара пользователя
Сообщения: 2459
Зарегистрирован: Вт 26 дек 2006 15:54
Самое забавное, что я в этом совсем не варю. Никогда этим не занимался. Будет весело вылететь из - за этой проклятой информатики :hm:
А впрочем ладно. Очень приятно, что попытались помочь. Не совсем уверен, но у нас проги довольно короткие получаются.
setlocale(LC_CTYPE,"russian");//
Русскую мы никогдане подключали и подключать не будем. Тут какая то другая методика что ли... хрен его знает. :shock: :oops:

_________________
Оружия в этом подвале хватит, чтобы взорвать город размером с… с этот подвал.
HIK1, я же - ДобрыйДрюк, RAGEofANGEL, AngelVampire.


 Сообщение Чт 13 дек 2012 15:10
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 314
Зарегистрирован: Ср 29 дек 2010 22:16
Цитата:
Не совсем уверен, но у нас проги довольно короткие получаются.

Индусский код в помощь! :teeth:
Цитата:
setlocale(LC_CTYPE,"russian");//
Русскую мы никогдане подключали и подключать не будем.

Сделано исключительно по просьбам трудящихся и исключительно под VS C++ 2010. Перепилите все русские тексты на транслит или английский и затерёте строку с сетлокэйл и будет вам щастье-здоровье.

_________________
История Механоидов - http://mechhistory.zbord.ru/


 Сообщение Чт 13 дек 2012 15:47
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Mehanoid писал(а):
Можно, а зачем, если можно использовать if(w == 1) вместо else?

Ну, как бе, лишняя проверка.


Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 259 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB