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

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Double2

    Double2 Banned

    Joined:
    9 Jan 2010
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    Если не ошибаюсь, то округляется тогда, когда после точки идет число больше 5. Извиняюсь, если не прав
     
  2. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
     
    1 person likes this.
  3. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Не прав )

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

    Double2 Banned

    Joined:
    9 Jan 2010
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    А почему while? Вроде бы это повтор кода пока условие исполняется... Не будет ли этот цикл бесконечным?
     
  5. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Ну что-то вроде "Выполнять какой-нибудь кусок кода, пока числа не будут введены верно".Хотя, признаться честно, я твой код смотрел по диагонали )))
     
  6. Smapt

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

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    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 - Старейшина

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

    [Life] Banned

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

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

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    "(C) Ra$cal" в конце забыл
     
  10. Smapt

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

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    3

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

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

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

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

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

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

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    1. Скажите что хранит переменная а
    int& a=b; а ссылается на б,но что хранит а? Адрес? Вроде нет...

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

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

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

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

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Указатель - это адрес памяти, если переходить на делетанский язык. А ссылки - это, так сказать, псевдонимы. Используются, в основном, для передачи в функции вместо указателей.

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

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

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Часто ли юзаются/нужны соединения?
    Оч похожи соединения на структуры..
     
  15. Ra$cal

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

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    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

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    4. Какую точку ставить?О.О

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

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

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    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 Jan 2010
    Last edited: 10 Jan 2010
  18. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Ты еще больше меня запутал( напиши в аську мне плз.
     
  19. Ra$cal

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

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    не, по асе не консультирую. ибо вместо того, чтобы попробовать учиться, писать код, компилить, наблюдать за работой, понимать, предпочитают сразу спрашивать. в этом плане форум самое то. я те пример кода привел. бери его и дебаж до просветления. будут доп вопросы по поводу конкретного кода - пиши на форум.
     
  20. Fata1ex

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

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    охохох вот он ваш php
     
    1 person likes this.
Thread Status:
Not open for further replies.