Здравствуйте Xenia, Вы писали:
R>>да вот беда ейчас надо по заданию напечатать примерно таким образом
R>>F R>>FE R>>FED R>>FEDC R>>FEDCB R>>FEDCBA
R>>что то не пойму ,как зто сделать,,,,, R>>помогите,, X>
X>#include <iostream.h>
X>#include <conio.h>
X>const R = 7;
X>void main()
X>{
X> clrscr(); //очистка экрана
X> char ch = 'F';
X> for(int i=1;i<R;i++)
X> {
X> for (int j=ch;j>ch-i;j--)
X> cout<<char(j); // это вывод на экран
X> cout<<endl; //перевод каретки на новую строку
X> }
X>}
X>
Здравствуйте Xenia, Вы писали:
X>Здравствуйте Аноним, Вы писали:
А>>это вообще не программа на C++ X>Обоснуйте :shuffle:
Инструкция
const R = 7;
неправильная, т.к. в C++ нет больше неявного int. В C99 его тоже нет.
void main() это тоже ошибка и в C и в C++. Функция main() всегда должна возвращать int.
Я не помню, к сожалению, есть ли в стандартной библиотеке заголовок <iostream.h>, но я бы его все-таки не стал использовать.
Здравствуйте Аноним, Вы писали: А>Инструкция А>const R = 7; А>неправильная, т.к. в C++ нет больше неявного int. В C99 его тоже нет. А>void main() это тоже ошибка и в C и в C++. Функция main() всегда должна возвращать int. А>Я не помню, к сожалению, есть ли в стандартной библиотеке заголовок <iostream.h>, но я бы его все-таки не стал использовать.
На счет const — пожалуй вы правы. С остальным не соглашусь. Цитата из MSDN:
Alternatively, the main and wmain functions can be declared as returning void (no return value). If you declare main or wmain as returning void, you cannot return an exit code to the parent process or operating system using a return statement; to return an exit code when main or wmain are declared as void, you must use the exit function
А вот пример от туда же:
The following example shows how to use the argc, argv, and envp arguments to main:
[code] #include <iostream.h>
#include <string.h> void main( int argc, char *argv[], char *envp[] )
{
int iNumberLines = 0; // Default is no line numbers.
// If more than .EXE filename supplied, and if the
// /n command-line option is specified, the listing
// of environment variables is line-numbered.
// Walk through list of strings until a NULL is encountered.
for( int i = 0; envp[i] != NULL; ++i )
{
if( iNumberLines )
cout << i << ": " << envp[i] << "\n";
}
}
[\code]
Что касается iostream.h, то лично я не понимаю, почему бы его не использовать. Он есть и в Borland C++ и в VC++. И вот что по этому поводу написано у Пауля Киммела (точная цитата):
...Теперь рассмотрим, что случится, когда мы захотим напечатать целое число. Вот версия С:
int num = 10;
printf("%d",num); А вот эквивалент С++:
int num = 10;
cout<<num;
Здравствуйте Xenia, Вы писали:
X>На счет const — пожалуй вы правы. С остальным не соглашусь. Цитата из MSDN:
X>Alternatively, the main and wmain functions can be declared as returning void (no return value). If X>...
MSDN описывает нестандартные особенности (расширения) компилятора VC. 'void main' — одно из таких расширений. С точки зрения С и С++ объявление функци 'main' с типом возврата 'void' — некорректно.
X>Что касается iostream.h, то лично я не понимаю, почему бы его не использовать. Он есть и в Borland C++ и в VC++. И вот что по этому поводу написано у Пауля Киммела (точная цитата): X>...Теперь рассмотрим, что случится, когда мы захотим напечатать целое число. X>Вот версия С: X>int num = 10; X>printf("%d",num); X>А вот эквивалент С++: X>int num = 10; X>cout<<num;
Здравствуйте Андрей Тарасевич, Вы писали:
АТ>MSDN описывает нестандартные особенности (расширения) компилятора VC. 'void main' — одно из таких расширений. С точки зрения С и С++ объявление функци 'main' с типом возврата 'void' — некорректно.
А на что это влияет? Мне теперь уже интересно. Серьезно.
АТ>И где же здесь 'iostream.h' ???
Он тут подразумевается. Еще одна цитата из Киммела:
Объекты cin и cout — это экземпляры классов istream_withassign и ostream_withassign соответственно. Это означает, что где-то существуют спецификация этих классов и определение этих двух объектов. Это "где-то" находится в заголовочном файле iostream.h Включив его (директивой #include) в программу, вы даете ей возможность осуществлять ввод-вывод.
По моему, библиотеки для того и существуют, чтобы облегчить жизнь программисту, и их использование не является отступлением от правил языка. Иначе можно до маразма дойти. И кстати, у то Киммела во ВСЕХ примерах main возвращает void.
Здравствуйте Xenia, Вы писали:
АТ>>MSDN описывает нестандартные особенности (расширения) компилятора VC. 'void main' — одно из таких расширений. С точки зрения С и С++ объявление функци 'main' с типом возврата 'void' — некорректно. X>А на что это влияет? Мне теперь уже интересно. Серьезно.
На портабельность проекта, разумеется. MSVC проглотит и вернет системе 0. Другой компилятор выдаст предупреждение и вернет системе мусор. Третий компилятор вообше откажется компилировать.
АТ>>И где же здесь 'iostream.h' ??? X>Он тут подразумевается. Еще одна цитата из Киммела: X> X>Объекты cin и cout — это экземпляры классов istream_withassign и ostream_withassign соответственно. Это означает, что где-то существуют спецификация этих классов и определение этих двух объектов. Это "где-то" находится в заголовочном файле iostream.h Включив его (директивой #include) в программу, вы даете ей возможность осуществлять ввод-вывод. X> X>По моему, библиотеки для того и существуют, чтобы облегчить жизнь программисту, и их использование не является отступлением от правил языка. Иначе можно до маразма дойти.
Объекты 'cin' и 'cout' в С++ — это экземпляры класс-типов 'istream' и 'ostream'. Которые, в свою очередь, являются typedef-ами для специализаций шаблонов 'basic_istream' и 'basic_ostream'. Описаны эти экземпляры в загловочном файле <iostream>. Именно <iostream>, а не <iostream.h>. А <iostream.h> — это один из заголовочных файлов старинной версии I/O билиотеки С++, которая была выброшена на свалку и заменена нынешней ее версией. Нет больше в библиотеке С++ файла <iostream.h>. Об этом, собственно, и речь.
X>И кстати, у то Киммела во ВСЕХ примерах main возвращает void.
Тем хуже для Киммела.
Best regards,
Андрей Тарасевич
Re[9]: Помогите со вложенными циклами!!!!!!!!!!!!
От:
Аноним
Дата:
15.05.02 05:13
Оценка:
Здравствуйте Xenia, Вы писали:
X>Здравствуйте Андрей Тарасевич, Вы писали:
АТ>>MSDN описывает нестандартные особенности (расширения) компилятора VC. 'void main' — одно из таких расширений. С точки зрения С и С++ объявление функци 'main' с типом возврата 'void' — некорректно. X>А на что это влияет? Мне теперь уже интересно. Серьезно.
На переносимость. Дело в том, что в C и в C++ main() всегда должна была возвращать int, с первого дня существования этих языков. Например компилятор g++ (по карайней мере последняя версия) выдает сообщение об ошибке, когда видит void main().
АТ>>И где же здесь 'iostream.h' ??? X>Он тут подразумевается. Еще одна цитата из Киммела: X> X>Объекты cin и cout — это экземпляры классов istream_withassign и ostream_withassign соответственно. Это означает, что где-то существуют спецификация этих классов и определение этих двух объектов. Это "где-то" находится в заголовочном файле iostream.h Включив его (директивой #include) в программу, вы даете ей возможность осуществлять ввод-вывод. X> X>По моему, библиотеки для того и существуют, чтобы облегчить жизнь программисту, и их использование не является отступлением от правил языка. Иначе можно до маразма дойти. И кстати, у то Киммела во ВСЕХ примерах main возвращает void.
Давным-давно этот заголовок действительно назывался iostream.h. Но потом его переименовали в iostream. Это было связано с тем, что теперь все имена стандартной библиотеки находятся в пространстве имен std, а раньше этого не было. Если изменилось поведение, должно было измениться и имя.
Что касается цитат из книг, то существует огромное количество книг по C++, которые либо устарели, либо написаны людьми, которые сами плохо знают C++, либо и то и другое одновременно. А с тем, что нужно пользоваться библиотеками, никто не спорит.
Кстати, в стандарте ничего не сказано о том, как должны быть реализованы стандартные заголовки. Поэтому называть iostream заголовочным файлом тоже неверно.