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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
Sezz
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 26
#1

Программа выводит только первую строку текста - C++

31.05.2012, 12:19. Просмотров 2551. Ответов 65
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// yourcat.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(void)
{
    int fleas;
    cout<<"how many fleas does yourcat have\n";
    cin>>fleas;
    cout<<"well,that's"<<fleas<<"fleas doo many!\n";
    cin.get();
    return 0;
}
Вот код программы должно выдасть
how many fleas does yourcat have
112
well,that's 112 fleas doo many!
А выдает только первую строку
how many fleas does yourcat have
IDE
Visual Studio 2008 express.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 12:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа выводит только первую строку текста (C++):

Программа считывает только первую строку файла,как сделать чтобы она считывала все строки - C++
#include &lt;fstream&gt; #include &lt;iostream&gt; using namespace std; int main(int argc, char* argv) { setlocale(LC_ALL, &quot;rus&quot;); ...

Программа считывает строку текста, выводит число слов и количество вхождений каждой буквы - C++
Напишите программу, считывающую строку текста и выводящую число слов в этой строке, а также количество вхождений каждой буквы. Под словом...

Списки. Не выводит первую вводимую строку - C++
Здравствуйте, проблема с списками, после ввода элементов в список, не выводит первый добавленный. вот код: #include &quot;stdafx.h&quot; #include...

Ifstream считывает только первую строку - C++
я написал короткую программу, с водом имена в файл и выводом. проблема заключается в том что ifstream выводит только первую строку, а...

Функция fopen() для большого текстового файла читает только первую строку - C++
Есть текстовой файл 4.5 мб, нужно его открыть для чтения из него строк. FILE *f = fopen(&quot;C:\\members.txt&quot;, &quot;r&quot;); Это мне...

Программа выводит только одно значение - C++
Здравствуйте. Есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; using namespace std; #define nil NULL; ...

65
alkagolik
Заблокирован
31.05.2012, 13:48 #31
-=ЮрА=-, Toshkarik, попусту холиварите.
C++
1
#include "stdafx.h"
насколько я помню, то тут еще тот салат хедеров.
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
31.05.2012, 13:51 #32
alkagolik, да тут дело не в "салате", а в том, что все компиляторы реализованы по разному. А вот в стандарте ясно сказано где лежит прототип какой либо функции.
0
alkagolik
Заблокирован
31.05.2012, 13:56 #33
тем не менее код из 1 поста безошибочный и почему он не работает не ясно. Могу порекомендовать поставить тот же кодблокс и опробовать код на нем. Разумеется без stdafx.h.
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
31.05.2012, 14:10 #34
Цитата Сообщение от Sezz Посмотреть сообщение
Вот код программы должно выдасть
how many fleas does yourcat have
112
well,that's 112 fleas doo many!
А выдает только первую строку
how many fleas does yourcat have
Есть у меня сильное подозрение, что выводиться должна первая строчка, вторую строчку нужно ввести, и тогда появится третья строчка.
Но никак не 3 строки одновременно
0
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 14:26 #35
Цитата Сообщение от Toshkarik Посмотреть сообщение
Да только потому что реализовал так MS свой компилятор, где то в заголовках используется cstdlib.
- ты читаешь что я пишу!using namespace std; вот что делает пространство глобальным!И благодаря этой "закарлючке" компилятор сам без всяких объявлений заголовков подключает всё что имеет отношение к СТД
Alternatively, you can write the declaration:
using namespace std;
which brings all library names into the current namespace.
Чё ты блин полез в isotream ума не приложу?Ты блин привык если нету хедера значит он не подключен ну вот смотри
начало iostream
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// iostream standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _IOSTREAM_
#define _IOSTREAM_
#include <istream>
 
#ifdef  _MSC_VER
#pragma pack(push,8)
#endif  /* _MSC_VER */
[COLOR="Red"]_STD_BEGIN[/COLOR]
        // OBJECTS

C++
1
2
3
4
5
6
7
8
9
10
// cstdlib standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _CSTDLIB_
#define _CSTDLIB_
#ifdef [COLOR="red"]_STD_USING[/COLOR]
 #undef _STD_USING
Надеюсь видно что красным выделено. Почему в твою голову не может даже прийти мыысль что компилятор будет считать включёнными все файлы с вот этим дефайном _STD_USING .Мы поставили закарлючку using namespace std; и этим сказали компилятору - "Мне влом подключать что там надо я хочу всё из СТД, потруйдись найди". А вот он уже и находит и подключает и выбирает нужный прототип функции - всё без твоего участия.

Добавлено через 3 минуты
Ещё раз
Sezz, обращаюсь к тебе, скомпилируй пожалуйста мой проект - он 100% работает (экзешник как подтверждение). Поэтому если слинкованый код не будет работать как надо то дело не в коде а в твоём компиляторе

Добавлено через 4 минуты
Цитата Сообщение от diagon Посмотреть сообщение
Есть у меня сильное подозрение, что выводиться должна первая строчка, вторую строчку нужно ввести, и тогда появится третья строчка.
Но никак не 3 строки одновременно
- Ну это так и должно быть - точно скорее всего наш ТС именно ничего не вводит, а мы тут все голову ломаем

Sezz, ты производишь ввод тех цифирей, которые потом увидеть вконце вводишь???
Вывод 1-й строки означает что программа ждёт когда ты осуществишь ввод (наберёшь цифры и нажмёшь Энтер)
Цитата Сообщение от Sezz Посмотреть сообщение
cin>>fleas;
- вот это означает ввод.
0
alkagolik
Заблокирован
31.05.2012, 14:30 #36
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
и этим сказали компилятору - "Мне влом подключать что там надо я хочу всё из СТД, потруйдись найди". А вот он уже и находит и подключает и выбирает нужный прототип функции - всё без твоего участия.
я правильно понимаю что такой код должен работать? или я тебя неправильно понял?
C++
1
2
3
4
5
6
7
8
9
10
//никаких инклудов
using namespace std;
 
int main(){
 
    string str;
    cin >> str;
    cout << str << endl;
    return 0;
}
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
31.05.2012, 14:32 #37
Да что Вы несете за бред то, using namespace совершенно для других вещей предназначен. Какое полное включение всех функций из std? Вы пробовали вообще без включений каких либо заголовков написать using namespace std;? Пробовали без включения заголовка vector создать объект данного класса? Пространство имен std ничем не отличается от остальных других. И каждый заголовок ВНОСИТ в него свои классы, объекты и функции только при включении этого заголовка. А запись using namespace std; лишь делает их глобальными, позволяя опускать std:: перед каждым обращением. Но если они не были добавлены туда, то есть не было включения заголовка, то и обратиться к ним нельзя.

Добавлено через 58 секунд
alkagolik, ну я был до сих пор уверен, что это он и имел ввиду, потому что так он и доказывал это.
0
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 14:32 #38
alkagolik, без iostream никуда он нужен там ведь
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
_STD_BEGIN
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
31.05.2012, 14:36 #39
Пробуйте:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
using namespace std;
 
int main() {
    vector< int > b;
 
    return 0;
}
Добавлено через 1 минуту
Или даже вот так:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
using namespace std;
 
int main() {
    cout << setw( 5 ) << 200;
 
    return 0;
}
0
alkagolik
Заблокирован
31.05.2012, 14:40 #40
-=ЮрА=-, очевидно скорее всего ты ошибаешься. Видимо просто мс компиль так реализован чего не скажешь про Clang, GCC, Intell C++
0
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 15:02 #41
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Toshkarik, вектор подключи, файл мы тоже не считаем без fstream. Вектор - отдельный класс, манипуляторы тоже, понятное дело без объявления класса никуда, другое дело файлы с наборами функций. Мы можем использовать strcpy сразу а вот std::string только подключив string. Ещё раз обращаю внимание на момент - файлы с дефайном _STD_USING подключаются сами. Файлы же с _STD_BEGIN обязательны с подключению в хедерах!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// vector standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _VECTOR_
#define _VECTOR_
#include <climits>
#include <memory>
#include <stdexcept>
#include <xutility>
 
#ifdef  _MSC_VER
#pragma pack(push,8)
#endif  /* _MSC_VER */
_STD_BEGIN
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// string standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _STRING_
#define _STRING_
#include <istream>
 
#ifdef  _MSC_VER
#pragma pack(push,8)
#endif  /* _MSC_VER */
_STD_BEGIN
Чтобы было понятно strcpy из string.h нам доступно сразу так как в cstring идёт USING, а вот класс std::string его надо подключать именно string в котором идёт BEGIN. Кто не верит берёт и проверяет вручную дефайны!

Добавлено через 4 минуты
Чуть не забыл об STDLIB
C++
1
2
3
4
5
6
7
8
9
10
11
// cstdlib standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _CSTDLIB_
#define _CSTDLIB_
#ifdef _STD_USING
 #undef _STD_USING
 #include <stdlib.h>
#define _STD_USING
C++
1
2
3
4
#else
 #include <stdlib.h>
#endif /* _STD_USING */
#endif /* _CSTDLIB */
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
31.05.2012, 15:18 #42
Теперь уже подключить что то нужно, пару страниц назад Вы совершенно другое говорили. И данная реализация MS компилятора никакого отношения к стандарту не имеет, о чем Вы так же говорили пару страниц назад.
0
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 15:31 #43
Toshkarik, я не ведущий системный разработчик у мелкософта. Ясно и чётко написал что функции stdlib идут сразу потому как в нём
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
_STD_USING
об этом и говорит также возможность использовать system не подключая stdlib остальное нужно смотреть - где нет _STD_BEGIN то подключиться без нашего участия, где есть и хотим использовать в программе, надо делать инклуд. И пару страниц назад я писал лишь одно для system в VS подключать stdlib нет необходимости!Всё остальное уже было сказано выше.

Добавлено через 6 минут

Не по теме:

Разговор с ТС вконтакте - подтвердил слова diagon : в программе не соуществлялся ввод числа

0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
31.05.2012, 15:32 #44
А теперь, пожалуйста, посмотрите мое сообщение о непереносимости данного кода и Ваш ответ на него.
0
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 15:56 #45
Toshkarik, ну и посмотри мой ответ на него. Да любую функцию СТД простарнства, если мы говорим о std::string vector то мы имеем методы данного конктретного класса(функции присущие именно данному классу), их да надо объявлять в коде посредством инклуда. Возьмём скажем strcpy (а чем блин не любая функция СТД пространства) то она доступна сразу, даже сам по себе string str; тоже можно записать без #include <string>, а вот методы std::string надо подключать. Ну и что я написал не так?Повторюсь
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
об этом и говорит также возможность использовать system не подключая stdlib остальное нужно смотреть - где нет _STD_BEGIN а есть _STD_USING то подключиться без нашего участия, где есть и хотим использовать в программе, надо делать инклуд. И пару страниц назад я писал лишь одно для system в VS подключать stdlib нет необходимости!
Добавлено через 14 минут
Toshkarik, ещё раз вернусь к нашему спору:
Итак strcpy объявлена где,ммм?Правильно в string.h исходя из твоей логики чтобы эта функция была доступна и как ты говоришь код свободно переносимым был, то после iostream мы должны написать cstring ну так ведь?
Ладно VS по твоему вне стандарта, тогда значит кодпад который реалзует твой GCC компилятор врёт http://codepad.org/a7gvFvGj
Хммм, а может всё таки дело в дефайнах о которых я говорил выше
Посмотри на досуге cstring
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// cstring standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _CSTRING_
#define _CSTRING_
#ifdef _STD_USING
 #undef _STD_USING
 #include <string.h>
 #define _STD_USING
#else
 #include <string.h>
#endif /* [COLOR="Red"][B]_STD_USING[/B][/COLOR] */
#endif /* _CSTRING_ */
Выделенное красным хорошо видно?Ну вот также и с stdlib!
Ну давай опровергни свои же слова
0
31.05.2012, 15:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2012, 15:56
Привет! Вот еще темы с ответами:

Программа на С, которая вводит число типа int с клавиатуры, преобразует ее в строку (str), выводит на дисплей число и строку. - C++
Задача направленная на усвоение следующих понятий: прототип функции; заголовок функции; тело функции; параметры, принимаемые функцией...

Программа выводит только целую часть числа - C++
//Найти среднее арифметическое среди // простых чисел, расположенных после минимального значения. #include &lt;iostream.h&gt; //...

Программа, которая считывает текст из файла, и выводит на экран только цитаты - C++
Написать программу, которая считывает текст из файла и выводит на экран только цитаты, то есть предложения, заключенные в кавычки. не...

Программа выводит только 1 знак после запятой, хотя должна выводить больше - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; int main(){ setlocale(LC_ALL, &quot;Russian&quot;); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru