Форум программистов, компьютерный форум CyberForum.ru

Вопросы начинающего - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не работают конструкторы.... http://www.cyberforum.ru/cpp-beginners/thread192736.html
Помогите, кому не трудно... Не работают конструкторы наследования (заккоментил подсказки на них...): #include <iostream.h> #include <iomanip.h> #include <string.h> #include <stdio.h> class basecl {
C++ вложенные циклы вывод на экран натуральных чисел лежащих в интервале и делящихся нацело на 5 http://www.cyberforum.ru/cpp-beginners/thread192732.html
C++ Выбросить из записи числа n цифры 0 и 5
Помогите найти ошибку. Дано натуральное число n. Выбросить из записи числа n цифры 0 и 5, оставив прежним порядок остальных цифр. Например из числа 59015509 должно получиться 919. Вот мой код: #include<math.h> #include<stdio.h> int main(){ unsigned long int a,b,i,k; scanf("%d",&a); i=0;
запись в файл C++
Здравствуйте. Написала программу, никак не получается ее переделать так, чтобы записать в файл. Подскажите пожалуйста как ее подправить, чтобы можно было записать в текстовый файл. и еще никак не пойму, когда файл включаешь в программу, его лучше в одну папку с кодом помещать или можно из любого места на диске и поностью прописывать его местонахождение? #include <cstring> #include...
C++ Создать таблицу с определенным форматированием http://www.cyberforum.ru/cpp-beginners/thread192718.html
Всем доброго времени суток. Подскажите пожалуйста, как бы написать программу которая вносила бы данные в следующую таблицу вида:| №подпункта|№Комнаты|Ф.И.О|Дата| Буду благодарен за любые задумки по этой теме.
C++ перегрузка степенным полиномом Здравствуйте помогите плз, как осуществить перегрузку степенным полиномом ??? за ранее спасибо подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,268
18.11.2010, 23:23     Вопросы начинающего
Даже не знаю что и сказать. Вопрос поставлен правильно, не вина автора что книги друг от друга отличаются и реализации компиляторов тоже. Я когда-то писал для себя талмуты по этой теме. Потом стало всё равно. Так-то всё верно, вот упрощённый код (компилятор GCC)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "conio.h"
#include "stdio.h"
 
int main(){
 int c;
 printf("Make input>\n");
 c=getchar();
 while (c != EOF){
  printf("kkkkkkkkkkkk\n");
  putchar(c);
  c=getchar();
 }
 printf("ggggggggggg\n");
_getch();
  
}
Да, действительно, когда пишем 1234<конец файла><Enter> происходит следующее:
1) Во-первых надо знать, что когда программа походит к функции getchar (строка 7), она проверяет- а не пустой ли буфер? (о буфере ниже) Если пустой, она останавливается (как в строке 7) и ждёт чё будет дальше. Если буфер непустой, она считывает с него символ

2) Буфер- область памяти, в которую вы всю эту херь запихиваете. Итак, мы подошли к строке 7, прога остановилась. Самое время запихать чё-нибудь в буфер. ПИшем: 1234<конец_потока><Enter>

всю эту херь, все эти 6 символов Вы запихали в буфер (<конец файла> это символ -1). Щас буфер выглядит так:

00110001 00110010 00110011 00110100 <-1> 0001000

Сосредоточтесь и постарайтьесь самостоятельно определить, почему 1 выладит как 00110001 и для всех остальных символов тоже. Если не справитесь, спрашивайте. Как -1 представить в двоичном коде, я позабыл
Последняя это число 10. ПРи нажатии на <Enter> в буфер попадает число 10.

3) Так, вот как только в буфер попало число 10 (нажали на <Enter>) прога НАЧИНАЕТ СЧИТЫВАТЬ БУФЕР ПО ОДНОМУ СИМВОЛУ

Сперва "1". После этого в переменную c попадает считанный символ "1" и там наверное внутри прожки есть двигатель-указатель какой-нибудь, который перемещается к следующему символу. А он "2"
Так, потом прога снова подходит к getchar () (строка 11 или какая там.) Ага, проверяет, пуст или нет буфер. Не пуст. Следующий на очереди символ "2". ОНа его считывает и благополучно выводит

И так далее.
А когда она должна дойти до : ^Z, она должна выйти из цикла. Должна да не обязана, у меня тоже так происходит. Что можно сказать? Может, компилятор так реализован. Может, система НЕ КЛАДЁТ в буфер -1- не знаю. Но вот если вводить <^Z><Enter> БЕЗ СИМВОЛОВ ВПЕРЕДИ, тогда прога РАСПОЗНАЕТ конец файла и не будет заходить в цикл а сразу напечатает, что там за циклом "gggggggg\n"

Я всё же думаю, чо это постарались разработчики Windows То есть при 1234<^Z><Enter> ^Z в буфер не попадает (на консоль выводится, а в буфер не попадает) и поэтому прога при считывании просто не видит этого символа. По моему скромному опыту смею предположить что это так.

Разбирайся давай. Пиши если чё.

Добавлено через 4 минуты
Да, и ещё. Если тебе нужно будет сделать, чтобы всё-таки прога распознавала как-нибудь конец входного потока ты можешь вместо EOF использовать ту же десятку.
То есть вот так:
C++
1
 while (c != 10)
Помни: в буфере окажется 10 по нажатию на <Enter>! Ну а Ctrl+Z можно не задействовать
 
Текущее время: 22:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru