Вопрос № 104689: Уважаемые эксперты!
Возникла проблема уже во второй програмке (подщет символов) , приведенныэ ранеее решения по вопросу № 73.844 не помогли :(
курсор в консоли просто переходит на другую строчку и ничего не протсходит
использую Borland c+...Вопрос № 104707: Имеется небольшая программка для перевода дюймов в сантиметры. MS Visual Studio 2005 находит в ней такие ошибки:
c:subjectsc++122.cpp(9) : error C3861: 'clrscr': identifier not found
c:subjectsc++122.cpp(10) : error C2065: 'cout' : unde...Вопрос № 104738: Уважаемые эксперты, помогите составить список ответов на следующие вопросы.
1. Структура программы на языке С/С++. Функции и операторы.
2. Потоки ввода/вывода С++. Пример использования.
3. Файловые потоки С++ и работа с ними. Посимво...
Вопрос № 104.689
Уважаемые эксперты!
Возникла проблема уже во второй програмке (подщет символов) , приведенныэ ранеее решения по вопросу № 73.844 не помогли :(
курсор в консоли просто переходит на другую строчку и ничего не протсходит
использую Borland c++ v3.1
Пример взят из книги "Язык программирования C
Б. Керниган, Д. Ритчи " исходник прилагаю
Отвечает: Maxim V.G.
Здравствуйте, Сергей Богданович!
Cимвол ЕOF состоит из 2 байт (в windows Ctrl+D), а при чтении со стандартного потока макрос getchar() считывает 1 символ размером в 1 байт. В Макрос getchar() вернёт значение ЕOF при завершении стандартного потока ввода либо при возникновении ошибки (это будет либо по завершению приложения либо никогда). Насколько я понял из обяснения, то Вы хотите чтобы подсчёт символов производился при переходе на новую строку (после нажатия клавиши Enter). Для этого Вам нужно отслеживать появление символа возврат каретки
'
'. И тогда цикл будет выглядеть примерно так: while (getchar() != '
') ++nc;. В приложении исправленный код!
P.$.
Прошу меня извинить, если не в полной мере ответил на поставленный вопрос. Просто в тексте вопроса сам вопрос отсутствует!
Приложение:
--------- Жить вредно - от неё умирают
Ответ отправил: Maxim V.G. (статус: 5-ый класс)
Ответ отправлен: 08.10.2007, 17:04 Оценка за ответ: 5
Отвечает: Виктор Пырлик
Надо либо определить EOF (define) - в примере это STOP, либо, проверять непосредственно в коде введенный символ getchar() != '
'. (см. пример)
Приложение:
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Практикант)
Ответ отправлен: 08.10.2007, 17:21 Оценка за ответ: 5 Комментарий оценки: большое спасибо !!! теперь остается вопрос почему пример в книге не правильный ))
Отвечает: kool
Здравствуйте, Сергей Богданович!
Здравствуйте, Сергей Богданович!
Дык она ждет пока вы нажмете какую-нибудь клавишу.
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 08.10.2007, 19:03
Отвечает: Гальцов Андрей Михаилович
Здравствуйте, Сергей Богданович!
Насколько я понял, вам нужно нажать какую нибудь клавишу...уж извините если не правильно понял...
Имеется небольшая программка для перевода дюймов в сантиметры. MS Visual Studio 2005 находит в ней такие ошибки:
c:subjectsc++122.cpp(9) : error C3861: 'clrscr': identifier not found
c:subjectsc++122.cpp(10) : error C2065: 'cout' : undeclared identifier
c:subjectsc++122.cpp(11) : error C2065: 'cin' : undeclared identifier
c:subjectsc++122.cpp(13) : error C3861: 'getch': identifier not found
Что исправить?
Приложение:
Отправлен: 08.10.2007, 16:15
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Хватов Сергей
Здравствуйте, Blackie!
Вы используете устаревший интерфейс для iostreams
Надо включать iostream (без суффикса)
Вообще-то порядочные SDK в этом случае ругаются, но делают что требуется, но похоже MS Visual Studio к таким не относится :-).
Кроме того вы используете вперемешку несколько механизмов I/O (iostream & stdio) которые работать вместе вовсе не обязаны.
Приложение:
Ответ отправил: Хватов Сергей (статус: Студент)
Ответ отправлен: 08.10.2007, 17:37
Отвечает: Виктор Пырлик
Здравствуйте, Blackie!
функция очистки экрана clrscr() определена в conio.h, но это в реализации Borland, в реализации MS VS данная функция не определена (по крайней мере, я не смог её нигде найти).
Поэтому, есть простой способ очистки экрана, использовать DOS функцию cls. (см. приложение)
Так же, откройте файл stdafx.h и в конец запишите файл conio.h
должно быть так:
#pragma once
#define WIN32_LEAN_AND_MEAN
#include "stdio.h"
#include "tchar.h"
#include "conio.h" // <- надо добавить
только кавычки заменить угловыми скобками <>.
Приложение:
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Практикант)
Ответ отправлен: 08.10.2007, 17:40
Отвечает: Aristos
Здравствуйте, Blackie!
Функция clrscr() - очишает консоль. В бибиотеке conio поставляемой со студией такой функции нет. В общем то, вполне можно обойтись без неё. При запуске консольного приложениявсе равно создается новая пустая консоль (если конечно запускать в студии или по иконке/ярлыку, а не в консоле).
2005 студия в соответствии со стандартом, содержит заголовчный файла <iostream>, и использует неймспейс std для библиотеки stl. Поэтому надо обращаться к потокам как std::cout/std::cin, либо объявлять использование неймспейса - using namespace std;
В соответствии со стандартом функция getch() имеет имя _getch()/
Так же необходимо заголовочный файл "stdafx.h" включать перед остальными заголовками (если вы используете предкомпиляцию заголовков, которая по умолчанию включена в студии).
К сожаленью, как примеры к учебным пособиям, так и компиляторы, не соответствуют в полной мере стандарту, и приходтся вносить в код подобные измениния.
В приложении ваш код с указанными исправлениями.
Приложение:
--------- нет ничего невозможного
Ответ отправил: Aristos (статус: 7-ой класс)
Ответ отправлен: 08.10.2007, 18:50
Отвечает: Гальцов Андрей Михаилович
Здравствуйте, Blackie!
Тут ошибка с дерикториями!...зайдите в optionsdirectories и поставте там пути к папке lib и h (Ваш путь к папке, где находится MS)...
--------- Да здравтствует С++!!!...;)
Уважаемые эксперты, помогите составить список ответов на следующие вопросы.
1. Структура программы на языке С/С++. Функции и операторы.
2. Потоки ввода/вывода С++. Пример использования.
3. Файловые потоки С++ и работа с ними. Посимвольный и построчный ввод/вывод.
4. Базовые (встроенные) типы данных С/С++. Объявление переменных и констант.
5. Объявление и использование массивов в С/С++. Одномерные и многомерные массивы.
6. Строки как массив символов. Основные функции для работы со строками.
7. Условные операторы и операторы цикла. Циклы и массивы.
8. Указатели. Массивы указателей. Примеры использования указателей.
9. Функции. Определение пользовательских функций. Передача параметров.
10. Рекурсия и ее использование при разработке функций. Рекурсивные алгоритмы.
11. Работа с командной строкой. Аргументы функции main.
12. Структуры. Описание и использование структур. Доступ к элементам структур.
13. Динамическая память. Создание динамических переменных, массивов. Использование динамической памяти.
14. Динамические связанные списки. Основные операции над элементами списков.