[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Обсуждение в разделе «С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby», начал(-а) _Great_, 26.05.2007.

Статус темы:
Тема закрыта для ответов.
  1. Double2

    Double2 Banned

    Регистрация:
    9.01.2010
    Сообщения:
    20
    Одобрения:
    0
    Репутация:
    0
    Если не ошибаюсь, то округляется тогда, когда после точки идет число больше 5. Извиняюсь, если не прав
     
  2. herfleisch

    herfleisch Elder - Старейшина

    Регистрация:
    7.01.2009
    Сообщения:
    579
    Одобрения:
    203
    Репутация:
    13
     
    Это одобряет 1 пользователь.
  3. herfleisch

    herfleisch Elder - Старейшина

    Регистрация:
    7.01.2009
    Сообщения:
    579
    Одобрения:
    203
    Репутация:
    13
    Не прав )

    В Вашем случае я бы заменил на цикл while() {}
     
  4. Double2

    Double2 Banned

    Регистрация:
    9.01.2010
    Сообщения:
    20
    Одобрения:
    0
    Репутация:
    0
    А почему while? Вроде бы это повтор кода пока условие исполняется... Не будет ли этот цикл бесконечным?
     
  5. herfleisch

    herfleisch Elder - Старейшина

    Регистрация:
    7.01.2009
    Сообщения:
    579
    Одобрения:
    203
    Репутация:
    13
    Ну что-то вроде "Выполнять какой-нибудь кусок кода, пока числа не будут введены верно".Хотя, признаться честно, я твой код смотрел по диагонали )))
     
  6. Smapt

    Smapt Elder - Старейшина

    Регистрация:
    29.01.2008
    Сообщения:
    31
    Одобрения:
    32
    Репутация:
    3
    Code:
    do
    {
      int a, b, c;
      std::cout << "Введите первое число \n";
      std::cin >> a;
      std::cout << "Введите второе число \n";
      std::cin >> b;
      c=a+b;
      if(a!=0 && b!=0)
    {
      std::cout << "Сумма a и b =";
      std::cout << c;
    }
      else
    {
      std::cout << "Какое-то из чисел равно нулю! Введите другие числа!";
    }
    
    }while(a==0 && b==0)
    
    попробуй так)
     
  7. herfleisch

    herfleisch Elder - Старейшина

    Регистрация:
    7.01.2009
    Сообщения:
    579
    Одобрения:
    203
    Репутация:
    13
    Объявления переменных a, b, c вынести за пределы цикла. И в условии цикла заменить && на ||. Не путайте людей, изучающих С++ второй день ))
     
  8. [Life]

    [Life] Banned

    Регистрация:
    7.01.2010
    Сообщения:
    74
    Одобрения:
    3
    Репутация:
    0
    очередное горе, желающее, чтобы программа выполнялась за 0.00001с а не за 0.00005с. Мне лень вразумлять о преждевременной оптимизации, о том, что пишется код не для компьютера, а для программиста, и о прочих деталях пром кодинга, а не коленочного под пиво. Читайте книжки, или кодьте на асме. С++ сделали не для переписывания на нем си программ. Когда поймете, почему делают новые языки, такие как C++, Java, C#, тогда велкам.
     
  9. Ra$cal

    Ra$cal Elder - Старейшина

    Регистрация:
    16.08.2006
    Сообщения:
    670
    Одобрения:
    185
    Репутация:
    78
    "(C) Ra$cal" в конце забыл
     
  10. Smapt

    Smapt Elder - Старейшина

    Регистрация:
    29.01.2008
    Сообщения:
    31
    Одобрения:
    32
    Репутация:
    3

    Ну я примерно написал... а вообще ты прав конечно)
     
  11. herfleisch

    herfleisch Elder - Старейшина

    Регистрация:
    7.01.2009
    Сообщения:
    579
    Одобрения:
    203
    Репутация:
    13
    А мне лень вразумлять о том, что человек, ИЗУЧАЮЩИЙ С++, должен знать о более оптимальных алгоритмах и приёмах. По-моему преимущество С++, заключающееся в возможности доступа к аппаратным средствам на уровне языка ассемблера, ещё никто не отменял. Иначе, может быть есть смысл фигачить кучи "высокоуровневых" программ на Delphi?

    Человек ИЗУЧАЕТ С++. Вдумайтесь в смысл этих слов. Я вот сейчас очень доволен тем, что мои преподаватели по программированию не стали с ранних курсов загружать меня классами и объектами, а начали с самых основ.

    К тому же, раз уж Вы заговорили о том, что С++ создан для облегчения жизни программисту, заявлю: метки только ухудшают понимание программы! Размывают чёткий алгоритм и структуру! А про оптимизацию, товарищ, я даже и не заикнулся.

    [Life], таких как Вы послушать, так зарезервированных слов, как оказывается, не стоит знать и понимать. "Главное - классы! Рабочие классы, батенька!"
     
    #4611 herfleisch, 10.01.2010
    В последний раз редактировалось: 10.01.2010
  12. Krist_ALL

    Krist_ALL Banned

    Регистрация:
    14.01.2009
    Сообщения:
    436
    Одобрения:
    193
    Репутация:
    24
    1. Скажите что хранит переменная а
    int& a=b; а ссылается на б,но что хранит а? Адрес? Вроде нет...

    2. Show (int& a) {
    ... } что поступает на вход в функцию? Адрес а? Копия значения? Непойму никак...

    3. Написано что нельзя сравнивать значения ссылой,а как же быть если это надо сделать?

    4. Зачем придуманны ссылки когда есть указатели?

    5. Если массив передается как аргумент в функцию ,то он передается по ссылке или передается адрес первого элемента?
     
  13. herfleisch

    herfleisch Elder - Старейшина

    Регистрация:
    7.01.2009
    Сообщения:
    579
    Одобрения:
    203
    Репутация:
    13
    Указатель - это адрес памяти, если переходить на делетанский язык. А ссылки - это, так сказать, псевдонимы. Используются, в основном, для передачи в функции вместо указателей.

    Т.е., а будет хранить 1, как и б. Отсюда и отталкиваетесь.

    Книга Б.Страуструпа по С++ в помощь. Супер-вещь!
     
  14. Krist_ALL

    Krist_ALL Banned

    Регистрация:
    14.01.2009
    Сообщения:
    436
    Одобрения:
    193
    Репутация:
    24
    Часто ли юзаются/нужны соединения?
    Оч похожи соединения на структуры..
     
  15. Ra$cal

    Ra$cal Elder - Старейшина

    Регистрация:
    16.08.2006
    Сообщения:
    670
    Одобрения:
    185
    Репутация:
    78
    жжоте товарищи. первое - цитата моя. несколькими страницами раньше написана, и для другого контекста. второе - тут классы просто некуда приписать, так что все herfleisch подсказывал правильно. третье - ставьте копирайты етиж их налево

    Krist_ALL
    1 - ссылку на b. по сути типа указатель на блок памяти переменной b. только читать a можно без разыменовывания. вот и вся разница. т.е. пишем a = 1 => b тоже = 1. пишем b = 5 => a тоже равно 5
    2 - аналогично с первым случаем. адрес переменной, с которым можно работать без * и ->.
    3 -
    Code:
    int main(){
    	int a = 5;
    	int b = 7;
    	int &c = a;
    	int &d = b;
    	cout << ((c == a) ? "true\n" : "false\n");
    }
    4 - для удобства. постепенно поймешь, когда придется писать много кода с классами. со ссылкой тебе не нужно держать в памяти какая переменная указатель, а какая ссылка. везде ставишь точку и все. ну и как параметр, в который возвращает функция знчение используется. когда функция должна вернуть больше одной величины.
    5 - массив передается по умолчанию как указатель. можно передать массив по ссылке.

    не соединения а объединения. юзаются весьма редко.
     
  16. Krist_ALL

    Krist_ALL Banned

    Регистрация:
    14.01.2009
    Сообщения:
    436
    Одобрения:
    193
    Репутация:
    24
    4. Какую точку ставить?О.О

    а чем отличается
    s(char a[]) {
    ... }
    и
    s(char* a[]) {
    ...}
    ?
    Второй код писать когда из функции я буду изменять массив?
    Тогда надо передать массив так s(&a) да?
    Или..
    Вообще написано что если в функцию передан массив ,то когда в функции делается ++ ,то с++ просто сдвигает на нужную ячейку и все. => в функцию передается адрес начала массива.
    Когда массив из цифр,то чтоб передать массив в функцию,надо еще и передать ск элементов в нем,а когда массив чар из букв,то не нада размер т.К. Функция определит конец по нул байту..
    Блин ппц с этими указателями.. После пхп с++ оч сложно учить.
     
  17. Ra$cal

    Ra$cal Elder - Старейшина

    Регистрация:
    16.08.2006
    Сообщения:
    670
    Одобрения:
    185
    Репутация:
    78
    не на том внимание заостряешь. массивы по ссылке передавать смысл есть только если тебе нужно в переменную вернуть массив. вообще используют std::vector, чтобы нагляднее все было.

    s(char a[]) {
    ... }
    и
    s(char* a[]) {
    ...}

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

    по поводу инкремента и прочего - вот кто тебе мешает сделать проект и проверить все глазами и руками. делаешь массив. передаешь его в функцию. там инкрементишь. выходишь из функции и смотришь, изменилось ли значение исходной переменной, которую передал.

    Code:
    void s(char* a){
    	a++;
    	*a = '_';
    }
    
    void s2(char* &a){
    	a++; // очень плохо ибо delete не сработает -> утечка памяти
    	*a = '_';
    }
    
    void s3(char* &a){
    	delete [] a; // иначе утечка памяти
    	a = new char [strlen("foobar") + 1];
    	strcpy(a, "foobar");
    }
    int main(){
    	char* a = new char [5];
    	strcpy(a, "test");
    	s3(a);
    	cout << a;
    }
    PS: для уменьшения бардака есть такое слово как typedef. Определив char* как pchar ты упростишь читаемость кода. s(pchar &a) - ссылка на массив символов
     
    #4617 Ra$cal, 10.01.2010
    В последний раз редактировалось: 10.01.2010
  18. Krist_ALL

    Krist_ALL Banned

    Регистрация:
    14.01.2009
    Сообщения:
    436
    Одобрения:
    193
    Репутация:
    24
    Ты еще больше меня запутал( напиши в аську мне плз.
     
  19. Ra$cal

    Ra$cal Elder - Старейшина

    Регистрация:
    16.08.2006
    Сообщения:
    670
    Одобрения:
    185
    Репутация:
    78
    не, по асе не консультирую. ибо вместо того, чтобы попробовать учиться, писать код, компилить, наблюдать за работой, понимать, предпочитают сразу спрашивать. в этом плане форум самое то. я те пример кода привел. бери его и дебаж до просветления. будут доп вопросы по поводу конкретного кода - пиши на форум.
     
  20. Fata1ex

    Fata1ex Elder - Старейшина

    Регистрация:
    12.12.2006
    Сообщения:
    703
    Одобрения:
    300
    Репутация:
    38
    охохох вот он ваш php
     
    Это одобряет 1 пользователь.
Статус темы:
Тема закрыта для ответов.