Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

RE: Вопросы по C/C++ (Для новичков)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)
Имя
Сообщение << Старые топики   Новые топики >>
RE: Вопросы по C/C++ (Для новичков) - 2010-03-11 15:08:38.236666   
Zmaster

Сообщений: 930
Оценки: 0
Присоединился: 2007-02-09 19:02:43.500000
quote:

bool isPrime(const unsigned int num) { ... return (summary == 1); } ... if(isPrime(c)) { std::cout &lt;&lt; c; }


Это самый нормальный вариант в данной ситуации, т.к. функция, которая определяет простым является число или нет, уже по своему определению должна возвращать BOOL, т.е. "да" или "нет".
Post #: 1281
RE: Вопросы по C/C++ (Для новичков) - 2010-03-11 19:51:59.040000   
messenage

Сообщений: 21
Оценки: 0
Присоединился: 2010-03-03 21:23:49.290000
Пожалуйста помогите! Пишу прогу на С++ по win API
Суть в том что есть BS_AUTOCHECKBOX и BS_AUTORADIOBUTTON.
их 20  штук, расположены в 2 столба параллельно друг другу. если нажимаем на AUTOCHECKBOX то AUTORADIOBUTTON должен тоже находиться в состояние включено и наоборот.
как я понял нужно в IF() и дальше еще несколько функций-я хоть правильно думаю?
Post #: 1282
RE: Вопросы по C/C++ (Для новичков) - 2010-03-11 20:09:43.403333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Ты сам программируешь, какая зависимость должна быть между радио кнопками и чекбоксами.

Конкретизируй вопрос, а то фраза "я хоть правильно думаю" ставит в тупик.
Post #: 1283
RE: Вопросы по C/C++ (Для новичков) - 2010-03-12 18:07:21.570000   
Zmaster

Сообщений: 930
Оценки: 0
Присоединился: 2007-02-09 19:02:43.500000
Для начала, так сказать:
http://progs.biz/winapi/winapi/lessons/020.aspx
http://progs.biz/winapi/winapi/lessons/021.aspx
http://progs.biz/winapi/winapi/lessons/022.aspx

Ну а дальше просто проверяешь какой CheckBox установлен и блокируешь соответственный RadioButton функцией EnableWindow(). А если немного подумать головой, то можно надумать алгоритм посерьезнее, чтобы не было кучи условий.
Post #: 1284
RE: Вопросы по C/C++ (Для новичков) - 2010-03-12 19:17:45.616666   
sanday

Сообщений: 41
Оценки: 0
Присоединился: 2010-02-06 12:52:26.896666
Код
//Изображение квадрата #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int square (int, char); &nbsp;&nbsp; &nbsp;&nbsp; main() { &nbsp;&nbsp;&nbsp; int side; &nbsp;&nbsp;&nbsp; char chars; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; while (side != -1){ &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Введите сторону квадрата и символ(или -1 для завершения): "; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin &gt;&gt; side &gt;&gt; chars; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; square(side, chars); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; system("pause"); return 0; } int square (int a, char fillCaracter) { &nbsp;&nbsp; for (int i = 1; i &lt;= a; i++) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 1; j &lt;= a; j++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; fillCaracter; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; endl; &nbsp;&nbsp; } &nbsp;&nbsp; } В результате вывода результата имеем, к примеру при стороне квадрата 5 и символе № печатает
№№№№№
№№№№№
№№№№№
№№№№№
№№№№№
6
Для продолжения нажмите…
Что за цифра 6 и как от нее избавиться?
Post #: 1285
RE: Вопросы по C/C++ (Для новичков) - 2010-03-12 19:25:24.783333   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
Как это у тебя компилируется вообще? У тебя int square никакого значения не возвращает, а должна возвращать int.Перед main тип не указан, а там тоже int должно быть или void на крайняк.
Post #: 1286
RE: Вопросы по C/C++ (Для новичков) - 2010-03-12 19:26:14.760000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Что ты выводишь в этой строке: cout << square(side, chars); ?

Функция square у тебя должна возвращать тип int, а у тебя в ней нет ниодного return. Как же так?
Post #: 1287
RE: Вопросы по C/C++ (Для новичков) - 2010-03-12 19:54:09.930000   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
И еще ты side используешь в условии while, а она у тебя еще не инициализирована. Поменяй цикл на do {…} while
Post #: 1288
RE: Вопросы по C/C++ (Для новичков) - 2010-03-12 20:00:29.940000   
sanday

Сообщений: 41
Оценки: 0
Присоединился: 2010-02-06 12:52:26.896666
вопрос 2:
при использовании типа void для функции square, компилятор повисает (Dev-C++).
quote:

Что ты выводишь в этой строке: cout &lt;&lt; square (side, chars); ?

Квадрат с заданной стороной и с заданным символом.
quote:

Функция square у тебя должна возвращать тип int, а у тебя в ней нет ниодного return. Как же так?

поэтому вопросу и обратился… не понимаю
Post #: 1289
RE: Вопросы по C/C++ (Для новичков) - 2010-03-12 20:11:18.903333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: sanday
вопрос 2:
при использовании типа void для функции square, компилятор повисает (Dev-C++).

Выкинь компилятор, который повисает.

quote:

ORIGINAL: sanday
quote:

Что ты выводишь в этой строке: cout &lt;&lt; square (side, chars); ?

Квадрат с заданной стороной и с заданным символом.

Квадрат у тебя выводит сама функция square (side, chars);
А вот что ты пытаешься вывести при помощи этого?! - cout &lt;&lt; square (side, chars);
Ответ: ты после вывода квадрата выводишь значение, которое возвращает тебе square.

quote:

ORIGINAL: sanday
quote:

Функция square у тебя должна возвращать тип int, а у тебя в ней нет ниодного return. Как же так?

поэтому вопросу и обратился… не понимаю

Вместо cout << square (side, chars); напиши просто square (side, chars);
И выкинь свой компилятор.
Post #: 1290
RE: Вопросы по C/C++ (Для новичков) - 2010-03-12 20:44:50.930000   
sanday

Сообщений: 41
Оценки: 0
Присоединился: 2010-02-06 12:52:26.896666
quote:

И еще ты side используешь в условии while, а она у тебя еще не инициализирована. Поменяй цикл на do {…} while

не понял, вот так int side; &nbsp;&nbsp; do { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Введите сторону квадрата: "; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin &gt;&gt; side; &nbsp;&nbsp; } &nbsp;&nbsp; while (side != -1) {..}
?
quote:


Вместо cout &lt;&lt; square (side, chars); напиши просто square (side, chars);
И выкинь свой компилятор.

с cout  - понял))))
а вот выкинуть компилятор - это слишком просто, нужно понять почему зависает и устранить. Есть идеи почему компилятор зависает при определении типа функции как void ?
Post #: 1291
RE: Вопросы по C/C++ (Для новичков) - 2010-03-12 22:15:56.780000   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
Если надо выходить по вводу -1 то верно.
quote:


а вот выкинуть компилятор - это слишком просто, нужно понять почему зависает и устранить.


Вот несколько недель назад начал учить Си++. У меня тоже был Dev-C++. Что то у меня там не получилось, запостил тут вопрос и мне посоветовали тоже самое что и тебе.Я так и сделал, и ни чуть не желею об этом.
Post #: 1292
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 02:37:24.690000   
yurket

Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
использование операции дополнения (инвертирования)
#include &lt;stdio.h&gt; int main() { unsigned char x(127); printf("\nX: %d", ~x); getchar(); fflush(stdin); return 0; } не могу понять почему получается -128, а не просто 128….
unsigned char - 1 байт. У меня х = 127, в двоичном коде 01111111 После операции(~) должно получиться 10000000 (128)…
если ставить %u (unsigned) вместо %d, вылазит здоровенное число….
аналогично после выражения 255<<2 вроде как должно получаться 252 (11111111<<2 == 11111100), но опять что-то огромное вылазит… пишу в visual studio 2008… подскажите в чем ошибка…
Post #: 1293
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 16:28:12.323333   
sanday

Сообщений: 41
Оценки: 0
Присоединился: 2010-02-06 12:52:26.896666
Задача
Напишите программу, которая играет в игру «Угадай число» следующим образом: ваша программа выбирает случайное число, которое должно быть отгадано, в диапазоне от 1 до 1000. Затем программа печатает:
   Мое число между 1 и 1000.
   Вы можете его отгадать?
   Пожалуйста, напечатайте вашу первую догадку… Затем игрок печатает свою первую догадку. Программа отвечает одним из следующих вариантов:
     1. Отлично! Вы отгадали число!
     Хотели бы вы сыграть (д или н) ?
     2. Слишком мало. Попытайтесь снова.
     3. Слишком иного. Попытайтесь снова.

Если догадка игрока неверна, ваша программа должна работать циклически до получения верного ответа. Программа должна говорить игроку «Слишком мало» или «Слишком много», чтобы помочь ему угадать правильный ответ.
//Игра "Угадай число" #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; int main() { &nbsp;&nbsp; setlocale(0,""); &nbsp;&nbsp; int a; // вот здесь не нравится &nbsp;&nbsp; cout &lt;&lt; " "; // и здесь &nbsp;&nbsp; while (a != -1) {&nbsp;&nbsp; // а это совсем ужас &nbsp;&nbsp; int number = 1 + rand() % 1000; &nbsp;&nbsp; int guess; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout &lt;&lt; "Мое число между 1 и 1000\n Вы можете его отгадать?\n Пожалуйста, напечатайте первую догадку" &lt;&lt; endl; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin &gt;&gt; guess; &nbsp;&nbsp; &nbsp;&nbsp; while (guess != number){ &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (guess &gt; number) &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout &lt;&lt; "Слишком много. Попытайтесь ещё раз" &lt;&lt; endl; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout &lt;&lt; "Слишком мало. Попытайтесь ещё раз" &lt;&lt; endl; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout &lt;&lt; "Мое число между 1 и 1000\n Вы можете его отгадать?\n Пожалуйста, напечатайте первую догадку" &lt;&lt; endl; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin &gt;&gt; guess; &nbsp;&nbsp; } &nbsp;&nbsp; cout &lt;&lt; "Отлично! Вы отгадали число!\n Хотели бы вы сыграть ещё раз (y или n)?" &lt;&lt; endl; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char YN, y; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cin &gt;&gt; YN; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (YN == y) &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; continue; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp; } &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; system ("pause"); &nbsp;&nbsp; return 0; &nbsp;&nbsp; } Код получился корявый просьба подсказать, как улучшить код.
Post #: 1294
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 18:42:41.860000   
yurket

Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
char YN, y; cin &gt;&gt; YN; if (YN == y) вот это вообще не понял… переменная y не инициализирована… здесь типа нужно нашару угадать значение, которое храниться в y??? )))
если нужно зацикливание организовать, попробуй так:
#include &lt;iostream&gt; using namespace std; int main() { char q = 0; do{ // весь твой код cout&lt;&lt;"\nYou win! Would you like to run this programm again? (y/n)"&lt;&lt;endl; cin&gt;&gt;q; }while (q == 'y' || q == 'Y'); return 0; }
Post #: 1295
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 19:08:01.600000   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
Вот еще варянт решения задачи:
#include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;windows.h&gt; using namespace std; char bufRus[256]; char* Rus(const char*text){ CharToOem(text, bufRus); return bufRus; } int n = rand()%(1000-1+1) +1; void s(){ int h; cout&lt;&lt;Rus("Введите ваше число (1-1000): "); cin&gt;&gt;h; if(h==n) { cout&lt;&lt;Rus("Вы угодали\n"); exit(1); } else if(h&lt;n){ cout&lt;&lt;Rus("Велико\n"); } else if(h&gt;n){ cout&lt;&lt;Rus("Мало\n"); } } int main(){ for(;;) { s(); } getch(); return 0; }
Post #: 1296
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 19:17:08.940000   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
Не знаю насколько он прямей написан, ну хотяб компилится и работает:

//Игра "Угадай число" #include &lt;iostream&gt; using namespace std; int number; char YN; int main() { setlocale(0,""); do{ system("cls"); number=1 + rand() % 1000; cout &lt;&lt; "Мое число между 1 и 1000\n Вы можете его отгадать?\n Пожалуйста, напечатайте первую догадку" &lt;&lt; endl; int guess; cin &gt;&gt; guess; do{ system("cls"); if (guess &gt; number) cout &lt;&lt; "Слишком много. Попытайтесь ещё раз" &lt;&lt; endl; else cout &lt;&lt; "Слишком мало. Попытайтесь ещё раз" &lt;&lt; endl; cout &lt;&lt; "Мое число между 1 и 1000\nВы можете его отгадать?\nПожалуйста, напечатайте догадку" &lt;&lt; endl; cin &gt;&gt; guess; }while (guess != number); system("cls"); cout &lt;&lt; "Отлично! Вы отгадали число!\n Хотели бы вы сыграть ещё раз (y или n)?" &lt;&lt; endl; cin &gt;&gt; YN; }while((YN == 'y') || (YN == 'Y' )); return 1; }

Хотя там есть ЗЛО! внутренний do {…} while;
надо поменять на while {…}; так будет лучше, ибо вдруг пользователь сразу отгадает, в первом случае цикл все равно выполниться один раз, а во втором нет. так что:
//Игра "Угадай число" #include &lt;iostream&gt; using namespace std; int number; char YN; int main() { setlocale(0,""); do{ system("cls"); number=1 + rand() % 1000; cout &lt;&lt; "Мое число между 1 и 1000\n Вы можете его отгадать?\n Пожалуйста, напечатайте первую догадку" &lt;&lt; endl; int guess; cin &gt;&gt; guess; while (guess != number){ system("cls"); if (guess &gt; number) cout &lt;&lt; "Слишком много. Попытайтесь ещё раз" &lt;&lt; endl; else cout &lt;&lt; "Слишком мало. Попытайтесь ещё раз" &lt;&lt; endl; cout &lt;&lt; "Мое число между 1 и 1000\nВы можете его отгадать?\nПожалуйста, напечатайте догадку" &lt;&lt; endl; cin &gt;&gt; guess; }; system("cls"); cout &lt;&lt; "Отлично! Вы отгадали число!\n Хотели бы вы сыграть ещё раз (y или n)?" &lt;&lt; endl; cin &gt;&gt; YN; }while((YN == 'y') || (YN == 'Y' )); return 1; }
Post #: 1297
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 20:06:29.566666   
sanday

Сообщений: 41
Оценки: 0
Присоединился: 2010-02-06 12:52:26.896666
quote:

int n = rand()%(1000-1+1) +1;


почему или зачем (1000-1+1) ?
exit(1) - что это ?


что такое system("cls") ?
Post #: 1298
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 20:10:36.983333   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
quote:

что такое system("cls") ?


таким образом можно очистить экрен консоли.
Post #: 1299
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 22:07:30.500000   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666

quote:

ORIGINAL: Kadead

quote:

что такое system("cls") ?


таким образом можно очистить экрен консоли.

clrscr(); не проще? без подключения хедера stdlib.h

quote:

exit(1) - что это ?

Аварийное завершение программы, также можно функцию abort() использовать… тут у кого на сколько изврата хватает…

quote:

почему или зачем (1000-1+1) ?

Это приделы в которых будет сгенерированно псевдослучайное число…
Post #: 1300
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 22:22:21.636666   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
quote:


clrscr(); не проще? без подключения хедера stdlib.h

не проще и не сложнее.у меня и не подключается ничего.
Post #: 1301
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 22:28:03.806666   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
А сорь, чет я ступил ))
Post #: 1302
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 22:34:18.873333   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
А кстати, sanday ты для каких целей у себя подключал stdlib.h ?
Post #: 1303
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 22:58:34.640000   
sanday

Сообщений: 41
Оценки: 0
Присоединился: 2010-02-06 12:52:26.896666
quote:

А кстати, sanday ты для каких целей у себя подключал stdlib.h ?

функция rand().
Post #: 1304
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 23:01:17.383333   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
Если ты непроинициализировал его вот так, то смысла в нем нет: srand(time(NULL));
Ps надо еще <ctime> подключить…
Post #: 1305
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 23:15:06.270000   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
А у меня без нее норм все работало. одного iostream хватило
Post #: 1306
RE: Вопросы по C/C++ (Для новичков) - 2010-03-14 23:19:35.640000   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
Ну эт для того чтобы если ты не один раз будеш запускать rand() и будут нужны разные числа, вот для этого…, но с тем условием что тебе за один запуск программы нужно всего один раз генерировать число то stdlib ненужен!
Post #: 1307
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 01:39:49.273333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: yurket

использование операции дополнения (инвертирования)
#include &lt;stdio.h&gt; int main() { unsigned char x(127); printf("\nX: %d", ~x); getchar(); fflush(stdin); return 0; } не могу понять почему получается -128, а не просто 128….
unsigned char - 1 байт. У меня х = 127, в двоичном коде 01111111 После операции(~) должно получиться 10000000 (128)…
если ставить %u (unsigned) вместо %d, вылазит здоровенное число….
аналогично после выражения 255&lt;&lt;2 вроде как должно получаться 252 (11111111&lt;&lt;2 == 11111100), но опять что-то огромное вылазит… пишу в visual studio 2008… подскажите в чем ошибка…


%u
Post #: 1308
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 02:16:35.940000   
yurket

Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333

quote:

ORIGINAL: _SaZ_


%u

я же писал
quote:

если ставить %u (unsigned) вместо %d, вылазит здоровенное число….

в частности у меня выдает 4294967168
Post #: 1309
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 07:44:03.243333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: yurket
использование операции дополнения (инвертирования)
#include &lt;stdio.h&gt; int main() { unsigned char x(127); printf("\nX: %d", ~x); getchar(); fflush(stdin); return 0; } не могу понять почему получается -128, а не просто 128….
unsigned char - 1 байт. У меня х = 127, в двоичном коде 01111111 После операции(~) должно получиться 10000000 (128)…
если ставить %u (unsigned) вместо %d, вылазит здоровенное число….
аналогично после выражения 255&lt;&lt;2 вроде как должно получаться 252 (11111111&lt;&lt;2 == 11111100), но опять что-то огромное вылазит… пишу в visual studio 2008… подскажите в чем ошибка…

Почему получается -1 – понятно, когда число запихивается в printf, char автоматически конвертируется в int. В стек нельзя один байт положить. Кстати, если бы можно было бы, то printf тебе бы весь стек перепахал бы, поскольку видя %d он из стека забирал бы sizeof(int) байт.
Напиши %hhu – это спецификатор для short short unsigned, то есть для unsigned char. Или явно приводи тип к unsigned int.
Post #: 1310
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 08:43:22.776666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: sanday
а вот выкинуть компилятор - это слишком просто, нужно понять почему зависает и устранить. Есть идеи почему компилятор зависает при определении типа функции как void ?

Я не разу не наблюдал за gcc склонности зависать. Подозреваю что твоё описание ситуации неточно.
1. Ты в двух местах меняешь int на void?
2. Удаляешь ли cout из строчки cout << square (…);? cout не умеет выводить значение типа void.
Post #: 1311
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 09:51:06.870000   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
Подскажите пожадуйста. Вот я перенаправляю поток ввода вместо клавы что бы с файла читал вот таким образом:
freopen("E:\\olimp_var\\labirint.txt","r",stdin); А потом, в дальнейшем мне надо опять использовать ввод с клавиатуры, как мне обратно перенаправить?
Post #: 1312
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 10:02:38.566666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Не стоит так делать. Либо просто делай так:FILE *old_stdin = stdin; stdin = fopen ("...", "r"); /*читаем*/ fclose (stdin); stdin = old_stdin;Но лучше всё-таки пользоваться функциями fscanf, fread, а stdin оставить в покое.
Post #: 1313
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 10:17:42.290000   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
Блин = ( не долюбливаю я этот форматированный вывод! Нихера не шарю в нем потому что
Post #: 1314
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 11:22:06.480000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
У нас в технаре, тем, кто недолюбливал форматированный вывод давали на защите лаб задачу, написать свой printf. Все вопросы после этого отпадали.
Post #: 1315
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 11:24:02.893333   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
= ))) В чем то, жаль я не учился в твоем технаре!
Post #: 1316
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 11:32:54.703333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Я к тому, что тебе стоит попробовать написать свой printf - тогда все вопросы сами отпадут. А наш технарь тут ни при чём.
Post #: 1317
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 11:40:08.383333   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
Обязательно попробую.Прям сейчас и начну, тольку найду подробное описание как он вообще работает, и какие спецификаторы и форматы что значат!
Post #: 1318
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 13:13:58.580000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Не мудри сильно. Для начала добавь поддержку %d и %s. И почитай про функции с переменным числом параметров.
Post #: 1319
RE: Вопросы по C/C++ (Для новичков) - 2010-03-15 13:30:12.543333   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
Да я и не собирался мудрить.Я постараюсь сделать так.Консольное приложение, запускаю, ввожу строку параметров которые по идее передаются в printf(), к примеру такую: ("Погода в г. %s %i градуса цельсия" , "Санкт-Петербург" ,24)
Программка обрабатывает эту строку и выводит так как надо не используя при этом printf. Я верно понял задание?
Post #: 1320
Страниц:  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.