Последние новости

YoungCoder теперь и на Stepikе. Записывайтесь: https://vk.cc/75rISy

Чтобы записаться на курс, необходимо зарегистрироваться на Степике: https://vk.cc/75rIC4

Это моя личная ссылка-приглашение на Stepik для вас. Регистрируясь по этой ссылке, записываясь на курсы и решая задачи, Вы помогаете автору данного сайта принять участие в конкурсе платформы Stepik! Подробности конкурса здесь: https://vk.cc/75rKuS

понедельник, 17 октября 2011 г.

Занятие 3. Ввод и вывод данных.Справочники функций. Уроки программирования для чайников. Язык Си.


Добрый день уважаемые читатели.

В данном уроке мы подробно остановимся на вводе и выводе данных. Узнаем что такое стандартный поток ввода и вывода. Поговорим о том, зачем нужна стандартная библиотека функций. А так же научимся работать со справочниками по функциям. Это очень полезное умение. Рассмотрим на простом примере, который как раз будет в тему нашего урока.

Прочитайте улучшенную версию этого урока "Ввод/вывод в языке Си".

В новой версии:

  • Дополнительные материалы
  • Задачи с автоматической проверкой решения
  • Исследовательские задачи


Пусть нам требуется ввести с клавиатуры в программу какое-то число. Дело в том, что в языке нет никаких специальных конструкций, определяющих ввод-вывод. Если вы внимательно читали первый урок, то я уже вскользь упоминал об этом (помните для того чтобы вывести на экран строчку, нам надо было включить в программу заголовочный файл stdio.h) . Так вот, в самом языке нет даже такой операции как возведение в степень числа, или вычисление квадратного корня. Но обычно, сам по себе язык и не используется. Вместе с языком программирования поставляется и стандартная библиотека функций. Это набор файлов с расширением *.h, в которых описаны различные дополнительные функции, которые любая программа может использовать. Как вы уже догадались, функции ввода вывода описаны в файле stdio.h. Помимо стандартной библиотеки функции, программисты пишут и свои библиотеки функции, и еще существует много других библиотек функций, написанных для какого-то определенного круга задач. Таким образом, разных готовых функций для языка Си очень-очень много, и знать их все вряд ли возможно, а учитывая то, что знать надо не только название функции, но и какие данные она принимает, какие возвращает, что она делает, то это становится почти невозможно задачей. Но к счастью, этого и не требуется. Для стандартной библиотеки функции существуют куча различных справочников и там подробно описано всё это. И вот именно работать с этими справочниками мы сегодня научимся. Так, приступим же.



Символьный ввод и вывод данных. 

Стандартная библиотека включает несколько функций для чтения и записи одного символа. Простейшие из них мы сегодня и рассмотрим. Функции getchar и putchar.

Теперь пришло время научиться работать со справочником функции. В интернете можно найти много различных справочников, можно купить так же справочник в книжном магазине, часто в конце различных учебников по программированию есть небольшие справочники по функциям стандартной библиотеки. В общем, не суть важно, какой использовать, содержание везде примерно одинаковое. Для примера используем справочник сайта CodeNet. Никакого скрытого смысла тут нет, просто если в google набрать «справочник по функциям С» то он будет на первой позиции. Выберем там функцию getchar. Вот её описание:

Листинг 3.1


getchar

Функция            Вводит символ из потока stdin.

Синтаксис          #include <stdio.h>
                   int getchar(void);

Файл, содержащий   stdio.h
прототип

Описание           getchar -  это  макрокоманда,  вводящая  символ из
                   потока stdin.  Она определена  следующим  образом:
                   getc(stdin).

Возвращаемое       При успешном завершении функция getchar возвращает
значение           считанный символ      после       предварительного
                   преобразования  его  в целое без расширения знака.
                   При возникновении ситуации EOF или при ошибке  она
                   возвращает EOF.

Переносимость      Функция поддерживается на системах UNIX, описана
                   Керниганом и Ритчи. Поддерживается стандартом ANSI
                   C. Функция не совместима с Windows.

Смотрите также     fdetc, fgetchar, getch, getche, gets, putc,
                   putchar, scanf, ungetc.

Пример:

И примерно такое же описание будет в любом из справочников. Остановимся поподробнее.
  • Блок «функция». 
Содержит краткое описание для чего предназначена функция. В нашем случае, функция getchar вводит символ из потока stdin. Кратко о потоках. Когда мы вводим символы с клавиатуры, они попадают, в так называемый стандартный поток вводаЕго можно представить себе просто как последовательность символов. Существует еще стандартный поток вывода ( называется stdout), это как вы уже догадались монитор компьютера.
Небольшой материал  о стандартных потоках ввода и вывода в новой версии урока.

Таким образом, получается, что функция getchar просто берет первый символ из стандартного потока ввода, т.е. с клавиатуры.
  • «Синтаксис». 
Описано как использовать в программе. Указано, какой файл нужно подключить чтобы использовать, каких типов должны быть входные параметры, и какое значение функция возвращает. В нашем случае:

Листинг 3.2.
#include <stdio.h>
int getchar(void);


Любая функция имеет общий формат:


Формат прототипа функций в языке Си

Следовательно, мы узнали, что необходимо подключить сначала файл stdio.h. И функция возвращает значение типа int. При этом не имеет параметров (это значит, что когда мы будем её использовать, в скобочках ничего писать не нужно), об этом говорит тип void в скобочках.
  • «Файл, содержащий прототип» 
Это имя файла где описана функция, именно этот файл и нужно подключить чтобы с ней работать.
  • «Описание». 
Представлено более полное описание того, что делает функция.
  • «Возвращаемое значение» 
Описывает что функция возвращает после своей работы. В нашем случае, getchar возвращает значение целого типа, или если произошла ошибка значение EOFEOF (аббревиатура от end of file - конец файла) - это константа целого типа. Она означает, что в потоке больше нет данных для считывания. Её значение определено в файле stdio.h.
  • «Переносимость» 
Описывается в каких операционных системах работает данная функция ( в нашем случае getchar). Не удивляйтесь тому, что написано функция getchar не работает в Windows, формально мы сейчас создаем консольные приложения для MS DOS, поэтому у нас она будет работать.
  • «Смотри так же» 
Здесь список функций выполняющих похожие действия, что и данная функция.
  • «Пример» 
Обычно, небольшой пример использования в программе. Могут быть какие-то пояснения.

Для того, чтобы не было сомнений в том, что во всех справочниках примерно одинаковое содержание, вот картинка из одного учебника по программированию:
Описание функции getchar из справочника функций

Как видите, все основные данные о функции есть и тут.

Функция putchar.

Описана в файле stdio.h.
Формат: int putchar(int d)
Предназначена для вывода символа d в стандартный поток вывода, т.е. на экран монитора. Значение d должно быть целого типа. Если вывести символ удалось, то возвращается значение d, если нет – EOF.

Небольшая программка для показания примера работы функций getchar и putchar.

Листинг3.3
#include <stdio.h>
int main()
{
   int a,b;
   a=getchar();
   b=150;
   b=a;
   putchar(b);
   return(0);
}

Разберем как она работает. Сначала подключаем файл, потом объявляем переменные целого типа a и b. Переменной b присваиваем значение 150. Потом в переменную a с помощью функции getchar читаем один символ из стандартного потока ввода (с клавиатуры), переменной b присваиваем значение переменной a, выводим с помощью функции putchar значение переменной b.
Результат работы программы можно увидеть на рисунке:
Программа демонстрирующая работу функций посимвольного ввода getchar и putchar

Как видим программа работает. Значение в переменной b изменилось со 150 на то, чтовы введете. В моём случае 3. Теперь надо убедиться что программа читает всего один символ, попробуем ввести несколько символов подряд и нажать Enter.Вот что получится:
Программа демонстрирующая работу функций посимвольного ввода getchar и putchar.

Как видите считался только один символ, что и требовалось докзать.


//UPD (5 июля 2012):
Сегодня, отвечая на комментарии к этому уроку заметил, свой недочет. Я принял несколько программ по заданию 3 и сказал, что они выполнены правильно, хотя это не так. Никто из сдавших не организовал ввод чисел с клавиатуры, а почему-то пропустил. Ну и заметил, что пропустил в уроке несколько важных моментов. Сейчас будем это исправлять.

Как уже говорилось раньше, функция getchar берет первый символ из стандартного потока вывода. Посмотрим что будет, если мы в предыдущей программе поставим две функции getchar  подряд.


Листинг3.4
#include <stdio.h>
int main()
{
   int a,b,с;
   a=getchar();
   с=getchar();
   b=150;
   b=a;
   putchar(b);
   printf("\n");
   putchar(c);
   return(0);
}



Такая программа сначала считает в переменную а первый символ, а потом считает следующий символ, в переменную с. Пример, работы программы показан на рисунке ниже.
Добавьте подпись
Не стоит забывать, что пробелы, переносы строк, табуляции и т.д., это тоже символы которые записываются во входной поток. Так например, если в программе листинга 3.4 ввести "2 865", то, в переменную с сохранился бы пробел. Убедитесь в этом самостоятельно.
Если надо с помощью getchar считать несколько символов, записанных через пробел, то можно например, использовать дополнительную переменную, в которую будем считывать пробел.Либо писать, несколько раз считывание одного символа.
Пример:

a=getchar();
b=getchar();
b=getchar();


При таком считывании, например, строки "v 4", в переменную а считаем v, далее в переменную b считаем, пробел, и потом еще раз считаем в переменную b следующий символ, то есть 4. В итоге получим, то что нам и требуется.

Теперь перейдём к нашим функциям форматного ввода и вывода данных printf и scanf.

Называются они так, потому, что выводят и считывают данные в соответствии со строкой формата. Про это я уже говорил в конце второго урока. Основной принцип их работы разбирался там же. Сегодня мы рассмотрим специальный символы (начинаются со значка %) которые существуют, их еще называют спецификаторами формата. А так же поговорим о модификаторах формата, это такие значки, которые позволят задавать число знаков после запятой, или, например, по какому краю выравнивать символы.

Подробный разбор функции printf() в новой версии курса.

И так существуют следующие спецификаторы формата:
  • %d или % i для целых чисел
  • %c для отдельный символ.
  • %f для вещественных чисел ( с точкой) Выводятся в привычном виде. Например, 23.40000 Количество знаков после запятой задается точностью. По умолчанию точность равна 6.

  • %e для вещественных чисел. Выводится в научном виде например, 23.4 будет выведено как 2.340000e+001. Это означает что число 2.34 надо умножить на 10 в степени +1. Тут тоже количество знаков после запятой задается точностью. По умолчанию точность равна 6.
  • % если никаких аргументов нет, то не преобразуются и печатается просто %.


Для примера рассмотрим простейшую программу.

Листинг 3.5.


#include <stdio.h>

int main()
{
      int a=25;
      float b=23.4;
      double c=217.876;
      char d='a';
     
      printf("Dva chelih %i %d \n",a,a);
      printf("Odin simvol %c \n",d);
      printf("Vewestvennoe obychnoe %f \n",b);
      printf("vewestvennoe v nauchnom vide %e \n",b);
      printf("Vewestvennoe obychnoe %f \n",c);
      printf("vewestvennoe v nauchnom vide %e \n",c);
     
      return(0);
}


Вот результат её работы.
Программа демонстрирующая работу различных спецификаторов формата.

Теперь стоит поговорить о модификаторах формата. Модификаторы формата пишутся после знака % перед спецификатором формата. Примеры:
%-8.5f     %4.6f      %-2d

Итак, пойдем по порядку. После % может стоять символ  это значит надо выровнять число по левому краю, если минуса нет, то значение выравнивается по правому краю. Дальше идет цифра, означающая ширину поля на экране предназначенного для вывода этой переменной. Если указанного количества не хватит, то оно будет само расширено. Дальше точка, это просто разделитель первой и второй цифры. Вторая цифра применяется для вещественных чисел, она указывает, количество знаков после запятой.

Рассмотрим на примерах:

Листинг 3.6


#include <stdio.h>
int main()
{
      int a=777;
     
      //никаких модификаторов нет, выведет используя минимальную ширину поля
      printf("|%i|\n", a);
      //ширина 8 позиций, выравнивание по левому краю     
      printf("|%-8i|\n", a);
      //ширина 8 позиций, выравнивание по правому краю    
      printf("|%8i|\n", a);
      //число позиций 2, но в числе 777 больше двух цифр, поэтомк расширяется до минимального значения
      printf("|%2i|\n", a);

      double b=150.37;
     
      //никаких модификаторов нет, выведет используя минимальную ширину поля и стандартную точность 6 знаков
      printf("|%f|\n", b);
      //ширина 8 позиций, выравнивание по левому краю, 3 знака после запятой
      printf("|%-8.3f|\n", b);
      //ширина 8 позиций, 2 знака после запятой, выравнивание по правому краю    
      printf("|%8.2f|\n", b);
      //число позиций 4, 3 знака после запятой, но этого мало и поэтому расширяется до минимального значения ширина
      printf("|%4.3f|\n", b);
      return(0);
}


Результат работы:
Программа иллюстрирующая работу модификаторов формата для целых и вещественных чисел.

И на последок, помните мы говорили об управляющих последовательностях (например, \n) , их еще называют escape последовательности. Вот вам список некоторых из этих последовательностей:

 сигнал-звонок
\f перевод-страницы
\n новая-строка
\t горизонтальная-табуляция
\v вертикальная-табуляция
\\ обратная наклонная черта
\? знак вопроса
\' одиночная кавычка
\" двойная кавычка

Пожалуй всё на сегодня.

//UPD (5 июля 2012):
И еще один небольшой, но важный комментарий. Рассмотрим простой пример.


Листинг3.7
#include <stdio.h>
int main()
{
   int a;
   a=getchar();
   printf("a=%d",a);
   return(0);
}


Ниже представлен результат её работы.


Как видите, ввели мы f, а на выходе получили 102. Чудеса, да и только.
На самом деле все просто. Когда функция getchar считывает символ входного потока, она возвращает значение int этого символа, равное коду символа в таблице кодов ASCII.
Каждому символу в этой таблицей ставится в соответствие его порядковый номер. Например, символу f соответствует номер 102, а цифре 1, номер 49. Т.е. если вы введете 1, то в переменную сохранится не 1, а 49. Таблицу кодов ASCII вы легко найдете в интернете. 
А как же быть, спросите вы.
Да легко, можно воспользоваться для вывода символов функцией putchar, как мы уже это делали выше, а можно в спецификаторе формата использовать не %d, а %c. Тогда всё встанет на свои места. 


Резюме урока:


  • Научились работать со справочниками функций
  • Изучили функции посимвольного ввода и вывода
  • Изучили спецификаторы и модификаторы формата для функции printf
  • Немножко поговорили о потоках в программировании
Задание для практической работы:
  1. Поэкспериментируйте с модификаторами формата для спецификатора %e.
  2. Напишите программу которая будет использовать различные escape-последовательности.Посмотрите и на сколько символов вправо сдвигает  курсор последовательность \t, посмотрите на сколько строчек вниз сдвигает курсор последовательность \v.
  3. Напишите программу которая считывает с клавиатуры 6 чисел, записанных через пробел. (1 2 64.3 0.624 25.07 43900) причем первые два числа считываются с помощью функции getchar. Для вывода запрещено использовать пробелы, все сдвиги оформляйте через табуляцию и с помощью модификаторов формата. Программа выводит данные на экран в виде такой таблицы:

Задачи с автоматической проверкой решения из новой версии курса.
Задачи на форматированный вывод Си.
Задачи на ввод данных в Си.


Если Вам понравился этот урок, расскажите о нем вашим друзьям. В этом  Вам могут помочь кнопки основных социальных сетей, расположенные ниже. Вам остается всего лишь кликнуть по любой из них.

214 комментариев :

  1. //3.4
    #include
    int main()
    {
    int a,b,f;
    a=1;
    b=2;
    f=439000;
    float c,d,e;
    c=64.3;
    d=0.624;
    e=25.07;
    printf("\t");
    printf(" |=========|=========| \n");
    printf("\t");
    printf(" |%-9d|%9.2f| \n",a,c);
    printf("\t");
    printf(" |%-9d|%9.3f| \n",b,d);
    printf("\t");
    printf(" |%-9d|%9.2f| \n",f,e);


    return(0);
    }
    Как эту таблицу по центру расположить? С помощью printf("\t"); я хоть как то сместил, но все же не так как нужно...

    ОтветитьУдалить
  2. Ну как вариант используйте несколько \t =))
    А вообще, опять невнимательно прочитали задание. Никаких пробелов, использовать нельзя, я понимаю, что тут не критично, но это дисциплинирует.
    И как совет, на одну строку таблицы используйте один вызов функции printf(...); не стоит разбивать на несколько строк.

    ОтветитьУдалить
  3. #include
    int main(void)
    {
    int a,b,f;
    a=1;
    b=2;
    f=439000;
    float c,d,e;
    c=64.3;
    d=0.624;
    e=25.07;
    printf("\t\t\t|=========|=========|\n\t\t\t");
    printf("|%-9d|%9.2f|\n\t\t\t",a,c);
    printf("|%-9d|%9.3f|\n\t\t\t",b,d);
    printf("|%-9d|%9.2f|\n",f,e);
    return(0);
    }
    Я понял что вы имели ввиду. Вот, 4 строки 4вызова printf().

    ОтветитьУдалить
  4. Здравствуйте, вот что получилось. Правда, первая строка громоздкая. И о getchar не очень поняла, к сожалению. Если функция заменяет значения тем, что вводит пользователь, как с ее помощью можно заранее заданные значения ввести? Может быть, я снова не пойму основного :(

    //пятая программа
    #include "stdio.h"
    int main()
    {
    int a='=', b=1, d=2, f=439000;
    double c, g, e;
    c=64.3;
    g=25.07;
    e=0.624;

    printf("\t\t\t |%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c|", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c", a);
    printf("%c| \n", a);
    printf("\t\t\t |%-9d|", b);
    printf("%9.2f| \n", c);
    printf("\t\t\t |%-9d|", d);
    printf("%9.3f| \n", e);
    printf("\t\t\t |%-9d|", f);
    printf("%9.2f| \n", g);
    return (0);

    ОтветитьУдалить
  5. Доброго времени суток, Милана. По поводу getchar. Не уверен что полностью понял, что вы имели ввиду, но объясню так. getchar это функция, как мини-альтернатива функции printf. Только printf считывает данные согласно формат-строке, а getchar просто считывает первый символ из стандартного потока. Например вы ввели 235235, функция getchar считает в переменную 2. Если в программе будет, после getchar сразу еще одна функция getchar, то она считает следующий символ, т.е. в нашем случае 3. =)
    Теперь про программу.
    В принципе, работает правильно, и вывод соответствует образцу. Но зачем же было так извращаться? Посмотрите на код Камиля, почему вы не стали так делать? =)

    ОтветитьУдалить
    Ответы
    1. не понимаю зачем задавать b=150, а потом заменять на число введенное? удалил строку b=150, работает так-же

      Удалить
    2. И не ясно 5 задание...
      Напишите программу которая считывает с клавиатуры 6 чисел, записанных через пробел. (1 2 64.3 0.624 25.07 43900) причем первые два числа считываются с помощью функции getchar.
      Прописал "1 2" с помощью getchar(3 ячейки), остальные как я понял scanf. но функции не выполняются одновременно. Если все считывать getchar получается в 26 переменных.

      Удалить
    3. И getchar не форматируется? Получается только так, с считыванием введенных чисел.
      #include
      int main(void)
      {
      int q,w,y;
      float e,r,t;

      scanf ("%d %d %f %f %f %d", &q,&w,&e,&r,&t,&y);


      printf("\t\t\t|=========|=========|\n");


      printf("\t\t\t|%-9d",q);
      printf("|%9.2f|\n",e);


      printf("\t\t\t|%-9d",w);
      printf("|%9.3f|\n",r);


      printf("\t\t\t|%-9d",y);
      printf("|%9.2f|\n",t);


      return(0);
      }

      Удалить
    4. b=150; нужна только для того, чтобы показать, что до считывания в переменную там хранилось значение 150. Если бы считывание не сработало, мы бы увидели на экране 150.

      В программе не использовали getchar. Посмотрите как сделали другие и разберитесь.

      Удалить
  6. Вопрос к KaDeaT (2. Если в программе будет, после getchar сразу еще одна функция getchar, то она считает следующий символ, т.е. в нашем случае 3.)

    Это потипу так , или иначе. (23345544654)
    #include
    int main()
    {
    int a,b;
    a=getchar();
    b=getchar();
    putchar(a);
    putchar(b);
    printf("\n");
    return(0);
    }

    то считывает первые два числа 23

    ОтветитьУдалить
    Ответы
    1. Да. Именно так. А если например, вы введете 2 потом нажмете энтер, а потом 3, то у вас только 2 считается, а в другую переменную будет занесено значение int, соответствующее коду клавиши Enter, в таблице символов ASCII.

      Удалить
  7. #include
    int main()
    {
    int a=1,b=2;
    float c=64.3,d=0.624,e=25.07;
    int f=439000;
    printf("\t\t\t\t|---------|---------|\n");
    printf("\t\t\t\t|%-9d|%9.2f|\n",a,c);
    printf("\t\t\t\t|%-9d|%9.3f|\n",b,d);
    printf("\t\t\t\t|%-9d|%9.2f|\n",f,e);
    return(0);
    }


    Я вот только не понял где тут getchar использовать , или тут надо было сначало все цифры с компьютера ввести и потом таблицу?

    ОтветитьУдалить
    Ответы
    1. Нет, не правильно.
      Да, вы все правильно поняли. Сначала надо ввести.=)

      Удалить
  8. у меня сделано так

    #include
    int main(void)
    {
    int a,b,e;
    float c,d,f;
    a=1;
    b=2;
    c=64.3;
    d=0.624;
    e=439000;
    f=25.07;

    printf("\t\t\t|==========|==========|\n");
    printf("\t\t\t|%-10i|\t %.2f|\n", a,c);
    printf("\t\t\t|%-10i|\t %.3f|\n", b,d);
    printf("\t\t\t|%-10i|\t %.2f|\n", e,f);


    return(0);
    }

    это верно?

    ОтветитьУдалить
  9. Подскажите, пожалуйста, я не могу понять escape последовательность \v – вертикальная табуляция. Если ее вставить в функцию printf в формат-строку, то никакого перемещения символов по вертикале не происходит, а только появляется значок “♂”. Что эта последовательность делает и зачем она нужна?

    ОтветитьУдалить
    Ответы
    1. Внимательность это очень хорошо. Я ждал этого вопроса. Когда-то я и сам им задавался, около года назад наверное.
      Это не ваша ошибка. Такова уж реализация консоли в системе Windows. А вообще, такая последовательность смешает курсор на несколько строк вниз, стандартно вроде три.

      Удалить
    2. Да и вообще она редко где используется сейчас.

      Удалить
  10. Здрасьте. А у меня правильно?
    #include
    int main()
    {
    int a, b, f;
    float c, d, e;
    a=getchar();
    b=getchar();
    b=getchar();
    c=getchar();
    scanf("%f %f %f %i", &c, &d, &e, &f);
    printf("Chisla: ");
    putchar(a);
    printf(", ");
    putchar(b);
    printf(", %1.1f, %1.3f, %1.2f, %d. \n", c, d, e, f);
    printf(" \t \t \t |=========|=========| \n");
    printf(" \t \t \t |%-9c|%-9.1f| \n", a, c);
    printf(" \t \t \t |%-9c|%-9.3f| \n", b, d);
    printf(" \t \t \t |%-9d|%-9.2f| \n", f, e);
    printf(" \t \t \t |=========|=========| \n");

    }

    ОтветитьУдалить
    Ответы
    1. Добрый день.
      Скомпилируйте готовое решение, и сравните со своим. Если итоговая табличка точно такая же и расположена в нужном месте, значит у вас всё абсолютно верно. =)

      Удалить
  11. А почему не получается файл.exe, который появляется в папке нашего проекта после компиляции программы, запустить на компьютере самому, запуская его через интерепретатор командной строки. Почему он только запускается через Визиал С++?

    ОтветитьУдалить
    Ответы
    1. Странно, только что проверил у себя, на задании из первого занятия, все запустилось.

      Удалить
  12. #include
    int main()
    {
    int q,w;
    float a,b,c,d;
    q=getchar();
    w=getchar();
    w=getchar();
    scanf("%f%f%f%f",&a,&b,&c,&d);
    printf("\t\t\t|#######|#######|\n\t\t\t|");
    putchar(q);
    printf("\t|%7.2f|\n\t\t\t|",a);
    putchar(w);
    printf("\t|%7.3f|\n\t\t\t|%-7.0f|%7.2f|\n",b,d,c);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Добрый день Олег.
      Скомпилируйте готовое решение, и сравните со своим. Если итоговая табличка точно такая же и расположена в нужном месте, значит у вас всё абсолютно верно. =)

      Удалить
  13. #include
    //странно stdio.h не выводит тут-)
    int main ()

    {
    int a,b,f;
    float c,d,e;

    printf("Введите данные через пробел: a=1, b=2, c=64.3, d=0.624, e=25.07, f=439000\n");
    a = getchar ();
    b = getchar ();
    b = getchar ();
    scanf ("%f%f%f%d", &c, &d, &e, &f);

    printf ("\n\t\t\t|=======|=======|\n\t\t\t|");
    putchar(a);
    printf("\t|%7.2f|\n\t\t\t|", c);
    putchar(b);
    printf("\t|%7.3f|\n\t\t\t|%-7.0d|%7.2f|\n", d, f, e);

    return 0;

    }

    ОтветитьУдалить
    Ответы
    1. Добрый день.
      Скомпилируйте готовое решение, и сравните со своим. Если итоговая табличка точно такая же и расположена в нужном месте, значит у вас всё абсолютно верно. =)

      Удалить
  14. #include
    int main()
    {
    int a,b,c;
    float d,e,f;
    a=1;
    b=2;
    c=439000;
    d=64.3;
    e=0.624;
    f=25.07;
    printf("%2d%2d%2.1f%2.3f%2.2f%2d\n",a,b,d,e,f,c);


    system("PAUSE");
    return(0);

    Начал вот так и понял что всё запорол

    ОтветитьУдалить
    Ответы
    1. Посмотрите как решают другие. Разберитесь досконально что и зачем они пишут. А потом попробуйте повторить, без подглядывания. =)

      Удалить
  15. Долго мучился, но все же получилось ;)

    Решение задачи:

    //Третий урок
    #include
    int main()
    {
    int a=getchar(),b=getchar(),c=getchar(),f;
    float d,e,g;
    scanf("%f %f %f %d", &d,&e,&g,&f);
    printf("\t\t\t |=========|=========| \n");
    printf("\t\t\t |%-9c|%9.2f| \n", a,d);
    printf("\t\t\t |%-9c|%9.3f| \n", c,e);
    printf("\t\t\t |%-9d|%9.2f| \n", f,g);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. что-то совсем не понял и не нашел описания - почему берется в строке int a=getchar(),b=getchar(),c=getchar(),f;

      f,оно как последнее введенное число?
      Поясните, пожалуйста. Кирилл.

      Удалить
    2. упс, заметил ввод числа F. Тогда вопрос - зачем в конце строки находится буква F??? Или это перевод страницы? int a=getchar(),b=getchar(),c=getchar(),f;

      Удалить
    3. эта строка строка объявления переменных. То есть мы говорим, что в нашей программе будут использоваться переменные a,b,c и f целочисленного типа. Кроме того мы сразу инициализируем (присваиваем им значения) переменные a,b и с.
      Данную строку мы могли бы заменить вот таким куском кода.
      int a,b,c,f;
      a=getchar();
      b=getchar();
      c=getchar();

      Кажется я в прошлом уроке писал, что так можно делать.

      Удалить
    4. Большое спасибо! Теперь понял :) А по программированию микропроцессоров и т.п. можете посоветовать что-нить? Это для дальнейшего развития. Буду очень Вам признателен! С наступающими Вас Новым Годом и Рождеством! Желаю, чтобы мечты сбывались!
      Кирилл.

      Удалить
  16. Читаю уроки, и прозреваю... Хорошие уроки правда тяжко даються, темному аборигену на пути истины.. Как то подлавливаю себя на мысли что читая 1-урок кое что не понял. И эврика!! Когда читаешь 2-ой начинаешь понимать 1-ый... И так далее. Сранно как то написанно ... Хотелось более полно и обширно...То перечитываю по 5 раз...или я один такой ? До меня как до утки на пятые сутки..
    С ув. Сергей

    ОтветитьУдалить
    Ответы
    1. Добрый день, Сергей.
      Если вам вдруг что-то становится не понятно в уроке, задавайте вопрос в комментариях. Возможно этот вопрос возникнет еще у кого-то после вам, и он сможет найти на него ответ в комментариях. =)

      Нельзя все сразу давать. В начальной школе, никто не говорит о замкнутости множества чисел относительно сложения. А лишь учат складывать числа. Я стараюсь писать только о том, что необходимо, не вдаваясь в мельчайшие подробности.

      Удалить
    2. Такой вопрос, а для того чтоб писать html, php обязательно проходить эти основы на С???

      Удалить
  17. Еще один вопрос, на какое время рассчитан 1 урок, для полного усвоения?? Я как бы пытаюсь это все освоить, чисто для саморазвития. Работаю вахтой, и пк доступен только 15 дней, остальные 15 сижу со смарта. И каждый день вне пк, полностью перечитываю с самого начала уроки, прокручиваю все в голове. И 15 уже провожу на практике.Извините может это чуть глупо. На сколько рассчитан Ваш данный курс??

    ОтветитьУдалить
    Ответы
    1. Это очень индивидуально. Главное, когда бываете за компьютером, побольше практикуйтесь.

      Удалить
  18. Листинг3.3
    #include
    int main()
    {
    int a,b;
    a=getchar();
    b=150;
    b=a;
    putchar(b);
    return(0);
    }

    MVS выдает ошибку.
    1>c:\users\admin\documents\visual studio 2008\projects\листинг 3,4\листинг 3,4\листинг 3,4.cpp(11) : error C2065: c: необъявленный идентификатор

    ОтветитьУдалить
  19. #include
    int main()
    {
    int a=1,b=2,f=439000;
    double c=64.3,d=0.624,e=25.07;
    printf("%d %d %-1.1f %-1.3f %-1.2f %d \n",a,b,c,d,e,f);
    printf("\t\t\t|=========|=========|\n\t\t\t");
    printf("|%-9d|%9.2f|\n\t\t\t|%-9d|%9.3f|\n\t\t\t|%-9d|%9.2f|\n",a,c,b,d,f,e);
    return(0);
    }
    при всем старании не смог понять как Написать программу которая считывает с клавиатуры 6 чисел, записанных через пробел причем первые два числа считываются с помощью функции getchar.
    И чтоб всё оставалось в таблице как в задании.
    Автор подскажите немного.

    ОтветитьУдалить
    Ответы
    1. Посмотрите готовое решение или решения других участников. Разберитесь, как это делается. Там не сложно.

      Удалить
  20. Два вечера разбирался,но всё таки задание выполнил сам даже и не знаю справлюсь ли дальше.Спасибо Вам.
    #include
    int main()
    {
    int a,b,c; //a=1,b=2,d=64.3,e=0.624,f=25.07,c=439000
    float d,e,f;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d",&d,&e,&f,&c);
    printf("\t\t\t:---------:---------:\n");
    printf("\t\t\t|%-9c|%9.2f|\n",a,d);
    printf("\t\t\t|%-9c|%9.3f|\n",b,e);
    printf("\t\t\t|%-9i|%9.2f|\n",c,f);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Сергей, если я правильно разобрался, то у Вас все верно :)
      только вот почему Вы "a" и "b" в итоге выводите как символы?
      и при копировании кода сюда в комментарии название файла stdio.h берите в кавычки, ибо как Вы видите перенося его в < > он не отображается

      Удалить
    2. Павел в коде что я написал в коменте не хватает
      #include ,ну "a" и "b" -это имена переменных.

      Удалить
    3. Павел, спасибо вам, что Вы помогаете мне. =)))

      Сергей, замечание Павла по делу.
      printf("\t\t\t|%-9c|%9.2f|\n",a,d);
      вот здесь вы выводите a как символьную перменную, использую спецификатор %с. Для целых чисел нужно использовать %d.

      Удалить
    4. Кадет, если использовать спецификатор %d, то в итоге в табличке вместо 1 и 2 появляются 49 и 50. кажется, это из-за функции гетчар. вы написали, что в таких случаях нужно использовать либо спецификатор %c, либо путчар. но можно ли в нашем случае использовать путчар? там же модификатором необходимо пользоваться

      извиняюсь, если непонятно сформулировал или напутал. или и то, и другое

      Удалить
  21. Привет, мне получилось вроди бы :

    // урок 3
    #include
    int main (void)
    {
    int a , b, f=439000;
    float c=64.3, d=0.624, e=25.07;
    a=getchar();
    printf("\t\t\t|=========|=========|\n");
    printf ("\t\t\t|%-9c|%9.2f|\n",a,c);
    b=getchar();
    b=getchar();
    printf("\t\t\t|%-9c|%9.3f|\n",b,d);
    printf("\t\t\t|%-9i|%9.2f|\n",f,e);
    return (0);
    }

    ОтветитьУдалить
  22. странный такой вопрос.
    "На самом деле все просто. Когда функция getchar считывает символ входного потока, она возвращает значение int этого символа, равное коду символа в таблице кодов ASCII.
    Каждому символу в этой таблицей ставится в соответствие его порядковый номер. Например, символу f соответствует номер 102, а цифре 1, номер 49. Т.е. если вы введете 1, то в переменную сохранится не 1, а 49. Таблицу кодов ASCII вы легко найдете в интернете. "
    так вот в найденной мной таблице (первая ссылка в гугле на запрос "таблица символов ascii" - http://ascii.org.ru/) 1 соответствует 31. кто где не прав?)

    ОтветитьУдалить
    Ответы
    1. сам разобрался) там же 16тиричная система)
      пы.сы. спасибо вам за уроки)

      Удалить
  23. опять же появился вопрос) правда теперь так просто я не разберусь.
    при использовании escape-последовательности \v мне показывает лишь символ ♂ а при \f соответственно ♀
    что я делаю не так?
    пример:
    #include "stdio.h"
    int main()
    {
    int a;
    a=getchar();
    printf("\f");
    printf("a=%d",a);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. да тоже такая же фигня насчет слешов

      Удалить
    2. Это не ваша беда. Это просто так обрабатывает эти последовательности вижуалка. Вы все делаете правильно. ))) Я уже где-то писал по этому поводу.

      Удалить
  24. Добрый вечер! Я после стандартного решения через printf решил подзаморочиться и реализовать через putchar. Вот что получилось

    #include
    int main()
    {
    int a,b,f;
    float c,d,e;
    char z='|';
    printf("Vvedite 6 chisel cherez probel \n");
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d", &c,&d,&e,&f);
    printf("\t");
    printf("\t");
    printf("\t");
    printf("\t");
    printf("|---------|---------|\n");
    printf("\t\t\t\t");
    printf("|");
    putchar(a);
    printf("%9c%9.2f|\n", z,c);
    printf("\t\t\t\t");
    printf("|%-9c|%9.3f|\n", b,d);
    printf("\t\t\t\t");
    printf("|%-9d|%9.2f|\n", f,e);
    return(0);
    }

    Будьте внимательны присваивая char значение! Я вместо одинарных ковычек пытался присвоить двойными и 20 минут не мог понять, почему не работает %)))

    P.S. Спасибо Кадету за старания!

    ОтветитьУдалить
  25. #include
    int main()
    {
    int a,b,f,z;
    //a=1;
    //b=2;
    //f=439000;
    a=getchar();
    z=getchar();
    b=getchar();
    scanf("%d", &f);
    float c,d,e;
    //c=64.3;
    //d=0.624;
    //e=25.07;
    scanf("%f %f %f", &c,&d,&e);
    printf("\t\t\t\t|==================| \n", a);
    printf("\t\t\t\t|%-8c| %8.1f| \n", a,c);
    printf("\t\t\t\t|%-8c| %8.3f| \n", b,d);
    printf("\t\t\t\t|%-8d| %8.2f| \n", f,e);
    return(0);
    }

    ОтветитьУдалить
  26. В общем вот что получилось, в работе вроде похоже на то что нужно:

    #include
    int main()
    {
    int a,b,c; //a=1, b=2, c=439000
    float d,e,f; //d=64.3, e=0.624, f=25.07
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f%f%f%i", &d,&e,&f,&c);
    printf("\t\t\t\t|========|========|\n");
    printf("\t\t\t\t|%-8c|%8.2f|\n", a,d);
    printf("\t\t\t\t|%-8c|%8.3f|\n", b,e);
    printf("\t\t\t\t|%-8i|%8.2f|\n", c,f);
    printf("\t\t\t\t|========|========|\n");
    return(0);
    }

    ОтветитьУдалить
  27. здарсти я только начал и тут у меня не один из ваших примеров по getchar не получилось компилировать (смысле показывает пустую строку) почему так случается?

    ОтветитьУдалить
  28. Мой вариант:
    #include
    int main()
    {
    int a,b,f;
    float c,d,e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d",&c,&d,&e,&f);
    printf("%-24c|---------|---------|\n");
    printf("%-24c|");
    printf("%-9c|%9.2f|\n",a,c);
    printf("%-24c|");
    printf("%-9c|",b);
    printf("%9.3f|\n",d);
    printf("%-24c|");
    printf("%-9d|",f);
    printf("%9.2f|\n",e);
    return(0);
    }

    ОтветитьУдалить
  29. Доброе время суток, очень очень понравиличь твои уроки=)
    Проверь, пожалуйста!
    #include "stdio.h"
    int main()
    {
    int a, b, f;
    a=1;
    b=2;
    f=439000;
    float c, d, e;
    c=64.3;
    d=0.624;
    e=25.07;
    printf ("%d %d %.2f %.3f %.2f %d \n",a,b,c,d,e,f);
    printf ("\t\t\t|=========|=========| \t\t\t\n");
    printf("\t\t\t|%-9d|%9.2f|\t\t\t\n\v\t\t\t|%-9d|%9.3f|\t\t\t\n\v\t\t\t|%-9d|%9.2f|\n", a,c,b,d,f,e);
    return(0);
    }
    Спасибо за твои труды=))

    ОтветитьУдалить
  30. #include
    int main()
    {
    int c,d;
    c=10;
    d=14;
    float f,g;
    f=2.1;
    g=33.6;
    printf("c=%-5d,\nd=%-5d\a\n",c,d);
    printf("f=%2f,\ng=%2f \f",f,g);
    printf("\v");
    printf("\\,\n");
    printf("c=%8d,\?");
    return (0);
    }

    ОтветитьУдалить
  31. //Urok 3
    #include
    int main(void)
    { int a,b;
    float c,d,y;
    printf("Vash massiv a=1 b=2 c=64.3 d=0.624 y=25.07 x=439000 \n");
    printf("\n vvedite a, b cherez probel \n");
    a=getchar();
    b=getchar();
    b=getchar();
    printf("vvedite c d y cherez probel \n");
    scanf("%f %f %f",&c,&d,&y);
    double x=439000;
    printf("\n \n \n");
    printf("\t \t \t |==========|==========| \n");
    printf("\t \t \t |%-10c|%10.2f| \n",a,c);
    printf("\t \t \t |%-10c|%10.3f| \n",b,d);
    printf("\t \t \t |%-10f|%10.2f| \n",x,y);
    printf("\n \n \n");
    return(0);
    }

    ОтветитьУдалить
  32. //вторая программа
    #include "stdio.h"
    int main(void)
    {
    int a=1,b=2,f=439000;
    float c=64.3,d=0.624,e=25.07;
    printf("%d %d %d %f %f %f \n",a,b,f,c,d,e);
    printf("\t\t\t");
    printf(" |=========|=========| \n");
    printf("\t\t\t");
    printf(" |%-9d|%9.2f| \n",a,c);
    printf("\t\t\t");
    printf(" |%-9d|%9.3f| \n",b,d);
    printf("\t\t\t");
    printf(" |%-9d|%9.2f| \n",f,e);
    return(0);
    }

    ОтветитьУдалить
  33. //вторая программа
    #include "stdio.h"
    int main(void)
    {
    int a=1,b=2,f=439000;
    float c=64.3,d=0.624,e=25.07;
    printf("%d %d %d %f %f %f \n",a,b,f,c,d,e);
    printf("\t\t\t|=========|=========| \n");
    printf("\t\t\t|%-9d|%9.2f| \n",a,c);
    printf("\t\t\t|%-9d|%9.3f| \n",b,d);
    printf("\t\t\t|%-9d|%9.2f| \n",f,e);
    return(0);
    }

    ОтветитьУдалить
  34. #include
    int main(void)
    {
    int a,b,f;
    a=1;
    b=2;
    f=439000;
    double c,d,e;
    c=64.3;
    d=0.624;
    e=25.07;
    printf("%-2d%-2d%-5.1f%-6.3f%-6.2f%d\n",a,b,c,d,e,f);
    printf("\t\t\t|==========|==========|\n");
    printf("\t\t\t|%-10d|%10.2f|\n",a,c);
    printf("\t\t\t|%-10d|%10.3f|\n",b,d);
    printf("\t\t\t|%-10d|%10.2f|\n",f,e);
    }

    ОтветитьУдалить
  35. Очень понравились уроки!ошибок не находит,но не компилирует,что это может быть?

    ОтветитьУдалить
  36. // начало
    #include
    int main ()
    {
    int a,b,c;
    char j;
    float d,e,f;
    a=getchar();
    j=getchar();
    b=getchar();
    j=getchar();
    // использовал "j" в качестве пробела
    scanf("%f",&d);
    j=getchar();
    scanf("%f",&e);
    j=getchar();
    scanf("%f",&f);
    j=getchar();
    scanf("%d",&c);

    printf("%c%c%c%c%0.1f%c%0.3f%c%0.2f%c%d\n",a,j,b,j,d,j,e,j,f,j,c);
    printf("\t\t\t|========|========|\n");
    printf("\t\t\t|%-8c|%8.2f|\n",a,d);
    printf("\t\t\t|%-8c|%8.3f|\n",b,e);
    printf("\t\t\t|%-8d|%8.2f|\n",c,f);

    return(0);
    }

    Приблизил задание 3 максимально к идеалу, с вводом 6 чисел через пробел. Первые 2 через getchar.
    PS. Автору огромное спасибо за старания!

    ОтветитьУдалить
  37. Здравствуйте
    кто нибудь подскажите. не могу вывести на печать число 439000.
    прочитал в предыдущих коментариях что в функции scanf нужно ввести пробел. Вводил во всех доступных местах еффект тот же только цифры иногда разные. 4 знака печатает правельно а если ставишь 5 и более то получается лабуда.
    Где конкретно надо ставить пробел
    scanf("%d",&c);

    ОтветитьУдалить
  38. Добрый день.
    Покажите пожалуйста весь код.

    ОтветитьУдалить
  39. Здравствуйте KaDeaT
    Благодарю за быстрый ответ.
    Когда у меня не получилось число 439000, я тупо переписал Вашу в надежде обнаружить свою ошибку. Результат был тот же
    #include
    int main()}
    int a,b,f;
    int c,d,e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f",&c);
    scanf("%f",&d);
    scanf("%f",&e);
    scanf("%d",&f);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|",a,c);
    printf("\t\t\t|-%9c|%9.3f|",b,d);
    printf("\t\t\t|-%9d|%9.2f|",f,e);
    return(0);
    }
    Получается
    1 2 64.3 0.624 25.07 439000
    |=========|=========|
    | 1 | 64.30|
    | 2 | 0.624|
    |-19752 | 25.07|
    Если число в четыре знака 4390 То распечатывает правельно.
    Заранее благодарен
    Олег



    ОтветитьУдалить
  40. Извените KaDeat
    Напечатал с ошибкой в printf пропустил \n
    В программе у меня этой ошибки нет

    Олег

    ОтветитьУдалить
    Ответы
    1. Добрый вечер.
      Я разобрался. Вашей ошибки тут нет. Вы, стоит полагать, используете в качестве среды программирования Borland C++ 3.1, да?
      Вот в чем дело. В прошлом уроке я уже писал, что диапазон значений различных типов данных будет разным, в зависимости от компилятора.
      Так вот, для хранения переменной типа int компилятор Borland выделяет 2 байта, а вижуал студия 4 байта.

      2 байтами можно закодировать 2^16 = 65536 цифр. Так как у нас есть еще и отрицательные числа, то делим пополам и получаем 32 тысячи с копейками. Т.е. если вы попытаетесь больше этого числа сохранить в целую переменную то, у вас туда ничего не запишется, а будет мусор. Вы уже в этом убедились.

      Вот такие вот дела. =))
      Спасибо вам за бдительность, я внесу изменения в домашнее задание, чтобы его можно было бы выполнить и на вашем компиляторе.

      Удалить
  41. #include;
    int main()
    {
    int a,b,k;
    float c,d,m;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf(" %f %f %f %d",&c,&d,&m,&k);
    printf("\t\t\t|*********|*********|\n");
    printf("\t\t\t|%-9c|%9.2f|\n\t\t\t|%-9c|%9.3f|\n\t\t\t|%-9d|%9.2f|\n",a,c,b,d,k,m);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Спасибо за уроки! у меня получилось))) написала это за полчаса (см.выше).

      Удалить
    2. В строке scanf перед первым значком % - 4 пробела.

      Удалить
  42. здравствуйте.
    #include
    int main()
    {
    int a,b,f;
    float c,d,e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%d %f %f %f",&f,&c,&d,&e);

    printf("\t\t\t|--------||--------|\n");
    printf("\t\t\t|%-8d||%8.3f|\n",a,c);
    printf("\t\t\t|%-8d||%8.3f|\n",b,e);
    printf("\t\t\t|%-8.4d||%8.3f|\n",f,d);
    return(0);
    }
    вот мой вариант.всё вроде работает как надо тока вместо 1 и2 в таблице появляется 49 и 50.почему?

    ОтветитьУдалить
    Ответы
    1. Ответ написан в самом конце урока. Прочитайте внимательно. )))

      Удалить
  43. Не работает ни один листинг! Пишет ошибка в построении, но я все копирую как написанно у вас.

    ОтветитьУдалить
    Ответы
    1. Очень странно. У всех же работает.
      Опишите подробнее, что именно не работает? Что выводит компилятор?

      Удалить
  44. Здравствуйте!
    Проверьте, пожалуйста!

    #include
    int main ()
    {
    int a, b, c=439000;
    float d=64.3, e=0.624, f=25.07;
    a=getchar();
    b=getchar();
    b=getchar();
    printf("%c %c %2.1f %1.3f %2.2f %d\n", a,b,d,e,f,c);
    printf("|========|========|\n");
    printf("|%-8c|%8.1f|\n", a,d);
    printf("|%-8c|%8.3f|\n", b,e);
    printf("|%-8d|%8.2f|\n", c,f);
    return(0);
    }

    ОтветитьУдалить
  45. Здравствуйте!
    #include
    int main()
    {
    char a,b;
    float c,d,e,f;
    printf("vvedite shest chisel cherez probel\n");
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f%f%f%f", &c,&d,&e,&f);
    printf("\t\t\t|---------|---------|\n\t\t\t|%-9c|%9.2f|\n\t\t\t|%-9c|%9.3f|\n\t\t\t|%-9.0f|%9.2f|\n", a,c,b,d,f,e);
    return(0);
    }
    Работает)))

    ОтветитьУдалить
  46. Добрый день. Во первых, благодарствую за ваши уроки, раньше думал, что программирование это не мое, а теперь, хоть и с трудом, начинаю хоть что-то понимать. Два дня промучался с этой задачей, но всё-таки решил:
    #include "stdio.h"
    int main()
    {
    int a,b,c; /*a=1, b=2, c=439000*/;
    float d,e,f;/*d=64.3, e=0.624, f=25.07*/;
    char t; /*t - пробел*/

    a=getchar();
    t=getchar();
    b=getchar();
    scanf("%f%f%f%d",&d,&e,&f,&c);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|");
    putchar(a);
    printf("\t%2c|%9.2f|\n",t,d);
    printf("\t\t\t|");
    putchar(b);
    printf("\t%2c|%9.3f|\n",t,e);
    printf("\t\t\t|%-9d|%9.2f|\n",c,f);

    return (0);
    }
    Не слишком много всего понаписал? По-моему можно даже было не вводить переменную, считывающую пробел, а просто написать
    printf("-9%c",a); вместо
    putchar(a);
    printf("\t%2c",t); ,но я не ищу лёгких путей:). Во всяком случае решил сам, без подсказок.

    ОтветитьУдалить
  47. #include
    int main()
    {
    int a,b,c;
    a=1;
    b=2;
    c=439000;
    double d,e,f;
    d=64.3;
    e=0.624;
    f=25.07;
    printf("%d,%d,%d,%f,%f,%f",a,b,c,d,e,f);
    printf("\t\t\t\t\t\t\t");
    printf("|=======|==========|\n");
    printf("\t|%d\t|%f\n\t|%d\t|%f\n\t|%d\t|%f\n",a,d,b,e,c,f);

    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Нет, не считается. =)
      1. данные должен вводить пользователь с клавиатуры.
      2. Табличка не такая, какая требовалось. =))

      Удалить
  48. #include
    int main()
    {
    int a,b,f;
    a=getchar();
    b=getchar();
    b=getchar();
    f=439000;
    float c=64.3;
    double d=0.624,e=25.07;
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|\n",a,c);
    printf("\t\t\t|%-9c|%9.4f|\n",b,d);
    printf("\t\t\t|%-9d|%9.2f|\n",f,e);
    return(0);
    }
    Критикуйте)))

    ОтветитьУдалить
    Ответы
    1. Легко! Все данные должны быть введены с клавиатуры. Исправляйте! =)))

      Удалить
  49. #include "stdio.h"
    #include "locale.h"
    #include "conio.h"

    int a, b, f;
    float c, d, e;

    int main ()
    {
    setlocale (LC_ALL, "");
    printf ("Введите 2 натyральных числа, 3 дробных и 1 целое:\n");
    a=getchar();
    b=getchar();
    b=getchar();
    scanf (" %f %f %f %d", &c, &d, &e, &f);
    printf ("\t\t\t|=========|=========|\n");
    printf ("\t\t\t|%-9c|%9.2f|\n",a,c);
    printf ("\t\t\t|%-9c|%9.3f|\n",b,d);
    printf ("\t\t\t|%-9d|%9.2f|\n",f,e);
    getch()
    }
    Добрый день, KaDeaT.
    Возникла такая проблема. Когда пытаешься включить русские символы, переменные f, е и d портятся и на их месте в таблице оказываются огромные отрицательные числа. Если setlocale закомментировать (можно и библиотеку locale.h за ненадобностью), то проблема исчезает сама собой. С чем это может быть связано?

    ОтветитьУдалить
    Ответы
    1. Добрый день.
      Если честно, ума не приложу, почему так происходит. Я попробовал выполнить ваш код у себя на компьютере - всё нормально выводится в обоих случаях. Обычно такое бывает, если мы ничего не сохраняем в переменную. т.е. там остается мусор и мы его выводим на экран.

      Удалить
  50. Ладно, в конце концов это не так важно. Можно обойтись и латиницей.
    Огромное спасибо за уроки! Все четко и понятно. Первые 4 занятия прошел за 4 часа.

    ОтветитьУдалить
  51. Здравствуйте. Моя программа имеет такой вид. Но у меня есть подозрения что написана она неправильно. Если я прав прошу вас указать на мои ошибки. За ранее благодарен.

    #include
    int main()
    {
    int a=getchar();
    int b=getchar();
    char c='=';
    int d=getchar();
    int e=getchar();
    float f=getchar();
    f=64,30;
    int g=getchar();
    float h=getchar();
    h=0.624;
    int i=getchar();
    float j=getchar();
    j=25.07;
    int k=getchar();
    int l=getchar();
    l=439000;
    printf("%26c|%c%c%c%c%c%c%c%c%c|%c%c%c%c%c%c%c%c%c|\n",b,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c);
    printf("%26c|%-9c|%9.2f|\n",b,a,f);
    printf("%26c|%-9c|%9.3f|\n",b,d,h);
    printf("%26c|%-9i|%9.2f|\n",b,l,j);
    return(0);
    }

    ОтветитьУдалить
  52. Мне кажется что в этом виде программа написана правильно.
    #include
    int main()
    {
    int a,b,c,e,g,i,l;
    char d='=';
    a=getchar();
    b=getchar();
    c=getchar();
    e=getchar();
    float f,h,j;
    scanf("%f",&f);
    g=getchar();
    scanf("%f",&h);
    i=getchar();
    scanf("%f",&j);
    scanf("%i",&l);
    printf("%26c|%c%c%c%c%c%c%c%c%c|%c%c%c%c%c%c%c%c%c|\n",b,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d);
    printf("%26c|%-9c|%9.2f|\n",b,a,f);
    printf("%26c|%-9c|%9.3f|\n",b,c,h);
    printf("%26c|%-9i|%9.2f|\n",b,l,j);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Своеобразный у вас способ вывести равно на экран.)))

      Удалить
  53. #include
    int main(void)
    {
    int a,b;
    float d,e,f,c;
    char t;

    a=getchar();
    b=getchar();
    b=getchar();

    scanf("%c%f%c%f%c%f%c%f",&t,&d,&t,&e,&t,&f,&t,&c);

    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|\n",a,d);
    printf("\t\t\t|%-9c|%9.3f|\n",b,e);
    printf("\t\t\t|%-9.0f|%9.2f|\n",c,f);

    return(0);
    }

    Еще хотел узнать, когда я запускаю скомпилированную программу командная строка запускается выдает какой-либо результат и сразу закрывается (то есть нет надписи "для продолжения нажмите любую клавишу"). Из за этого мне пришлось использовать точку останова. Если кто-нить в курсе подскажите что делать.

    ОтветитьУдалить
  54. У меня получилось как то так:

    // урок 2
    #include
    int main()
    {
    int a=1 , b=2 , f=439000;
    double c=64.3 , d=0.624 , e=25.07;
    printf("1 2 64.3 0.624 25.07 439000\n");
    printf("\t\t\t |=========|=========| \t\t\t\n");
    printf("\t\t\t |%-9.0i| %8.2f| \t\t\t\n", a,c);
    printf("\t\t\t |%-9.0i| %8.3f| \t\t\t\n", b,d);
    printf("\t\t\t |%-9.0i| %8.2f| \t\t\t\n", f,e);

    return(0);
    }

    ОтветитьУдалить
  55. Извиняюсь не внимательно прочитал задание вот:

    // загаловок 4
    #include
    int main()
    {
    int a,b,c,f;
    a=getchar();
    b=getchar();
    c=getchar();
    float d,e,g;
    scanf("%f %f %f %d", &d,&e,&g,&f);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|\n", a,d);
    printf("\t\t\t|%-9c|%9.3f|\n", c,e);
    printf("\t\t\t|%-9d|%9.2f|\n", f,g);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Если компилируется и выводится так же как на рисунке, то значит все правильно. ))) Код хороший. )

      Удалить
  56. #include
    #include
    int main()
    {printf("Vvedite chisla cherez probel\n");
    int a,b,f;
    float c,d,i;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d",&c,&d,&i,&f);
    printf("\t\t\t |==============|==============|\n");
    printf("\t\t\t |");putchar(a);printf("\t\t|");printf("\t%7.1f|\n",c);
    printf("\t\t\t |");putchar(b);printf("\t\t|");printf("\t%7.3f|\n",d);
    printf("\t\t\t |%-6d\t|\t%7.2f|\n",f,i);
    printf("\t\t\t |==============|==============|\n");
    system("pause");
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. можно и так, но по моему это не оправданные растраты. Мне такое написание программы не понравилось бы. )

      Удалить
  57. Добрый вечер!
    Вот мое решение:
    #include
    int main()
    {
    int a,b,f;
    float c,d,e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d",&c,&d,&e,&f);
    printf("\t\t\t|---------|---------|\n");
    printf("\t\t\t|%-9c|%9.2f|\n",a,c);
    printf("\t\t\t|%-9c|%9.3f|\n",b,d);
    printf("\t\t\t|%-9d|%9.2f|\n",f,e);
    return(0);
    }
    Спасибо за уроки!

    ОтветитьУдалить
    Ответы
    1. Пожалуйста. )))

      Если компилируется и выводится так же как на рисунке, то значит все правильно. ))) Код хороший. )

      Удалить
  58. Вот так должно быть в оригинале!!!
    #include
    int main()
    {
    int a,b,c;
    float d,i,f;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d",&d,&i,&f,&c);
    printf("\t\t\t\t|=========|=========|\n");
    printf("\t\t\t\t|%-9c|%9.2f|\n",a,d);
    printf("\t\t\t\t|%-9c|%9.3f|\n",b,i);
    printf("\t\t\t\t|%-9d|%9.2f|\n",c,f);
    }

    ОтветитьУдалить
    Ответы
    1. Если компилируется и выводится так же как на рисунке, то значит все правильно. ))) Код хороший. )

      Удалить
  59. Уважаемый автор. У меня странная ошибка выскакивает..
    Тестировал эту команду -
    a=getchar();
    b=getchar();
    b=getchar();
    Полностью код выглядел так -
    #include
    int main()
    {
    int a,b;
    a=getchar();
    b=getchar();
    b=getchar();
    b=150;
    b=a;
    putchar(b);
    return(0);
    Компилировал и при наборе букв и цифр С++ выдавал ошибку : Debug Error! Run-Time Check Failure #3 - The variable `c` is being used without being initialized. (Press Retry to debug the application).
    Не знаю что за ошибки и из-за нее не могу продвинуться дальше по уроку... Мне необходимо вникнуть в каждое слово и проверить каждую команду.. но тут застопорился. Поможете?

    ОтветитьУдалить
    Ответы
    1. такая-же фигня, что это может быть?

      Удалить
    2. Это, наверное из-за того, что вы не создаете новый проект для каждой задачи. У вас в коде вовсе нет переменной c, а компилятор ругается на неё.

      Удалить
  60. #include
    int main()
    {
    int a,b,f;
    float c,d,e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d", &c,&d,&e,&f);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%-9.1f|\n", a,c);
    printf("\t\t\t|%-9c|%-9.3f|\n", b,d);
    printf("\t\t\t|%-9d|%-9.2f|\n", f,e);
    return(0);
    }

    ОтветитьУдалить
  61. #include
    int main(void)
    {
    int a,b,c;
    float d,e,f;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d", &d, &e, &f, &c);
    printf("\t\t\t:=========:=========:\n");
    printf("\t\t\t:%-9c:%9.2f:\n",a ,d);
    printf("\t\t\t:%-9c:%9.3f:\n",b,e);
    printf("\t\t\t:%-9d:%9.2f:\n",c,f);

    return(0);
    }

    ОтветитьУдалить
  62. Как то громоздко вышло...

    #include
    int main()
    {
    int a1=1,a2=2,a6=439000;
    int b1,b2,q;
    float a3=64.3,a4=0.624,a5=25.07;
    float b3,b4,b5;
    /*можно было так вместо ниженаписанного
    printf("Vvedite ukazannie chisla cherez probel ili lybie chisla:\n");
    printf("1 2 64.3 0.624 25.07 439000\n");*/
    printf("Vvedite ukazannie chisla cherez probe:l\n");
    printf("%-d%2d%5.1f%6.3f%6.2f%7d\n",a1,a2,a3,a4,a5,a6);
    scanf("%d%d%f%f%f%d",&b1,&b2,&b3,&b4,&b5,&q);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9d|%9.2f|\n",b1,b3);
    printf("\t\t\t|%-9d|%9.3f|\n",b2,b4);
    printf("\t\t\t|%-9d|%9.2f|\n",q,b5);
    return 0;
    }

    ОтветитьУдалить
  63. Более упрощенная версия + getchar

    #include
    int main(void)
    {
    int a,b,c;
    float d,e,f;
    printf("Vvedite 6 chisel po usloviu:\n");
    a=getchar();
    b=getchar();
    c=a+b;
    printf("%c%c%d",a,b,c);
    }

    А вот полная версия(для тех кто не знает условия)

    #include
    int main()
    {
    int a1=1,a2=2,a6=439000;
    int b1,b2,q;
    float a3=64.3,a4=0.624,a5=25.07;
    float b3,b4,b5;
    /*можно было так вместо ниженаписанного
    printf("Vvedite ukazannie chisla cherez probel ili lybie chisla:\n");
    printf("1 2 64.3 0.624 25.07 439000\n");*/
    printf("Vvedite ukazannie chisla cherez probe:l\n");
    printf("%-d%2d%5.1f%6.3f%6.2f%7d\n",a1,a2,a3,a4,a5,a6);
    b1=getchar();
    b2=getchar();
    b2=getchar();
    scanf("%f%f%f%d",&b3,&b4,&b5,&q);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|\n",b1,b3);
    printf("\t\t\t|%-9c|%9.3f|\n",b2,b4);
    printf("\t\t\t|%-9d|%9.2f|\n",q,b5);
    return 0;
    }

    ОтветитьУдалить
  64. Упрощенная форма не та)))Вот...

    #include
    int main(void)
    {
    int a,b,c;
    float d,e,f;
    printf("Vvedite lubie chisel:\n");
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d", &d, &e, &f, &c);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c:%9.2f|\n",a ,d);
    printf("\t\t\t|%-9c:%9.3f|\n",b,e);
    printf("\t\t\t|%-9d:%9.2f|\n",c,f);
    return 0;
    }

    ОтветитьУдалить
    Ответы
    1. вот это не плохо, остальное мне не нравится. ))

      Удалить
  65. "#include stdio.h"
    int main()
    {
    int a,b,c; //1,2,6
    float d,e,f; //3,4,5
    scanf("%d %d %f %f %f %d", &a, &b, &d, &e, &f, &c);
    printf("\t\t\t|---------|-----------|\n");
    printf("\t\t\t|%-8d |",a);
    printf("\t%6.2f|\n",d);
    printf("\t\t\t|%-8d |",b);
    printf("\t%6.3f|\n",e);
    printf("\t\t\t|%-8d |",c);
    printf("\t%6.2f|\n",f);
    return(0);

    }

    ОтветитьУдалить
    Ответы
    1. Не правильно. Первый два числа, согласно заданию, нужно было считать использую функцию getchar().

      Удалить
  66. Здраствуйте...У меня какая то ерунда...
    сама прога -
    int main ()
    {
    char a, b;
    float c,d,e;
    int f;
    printf("vvedite 6 chisel cherez probel \n")
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d" ,&c,&d,&e,&f);
    printf("\t\t:---------:---------:\n");
    printf("\t\t:%-9c:%9.2f:\n",a,c);
    printf("\t\t:%-9c:%9.3f:\n",b,d);
    printf("\t\t:%-9d:%9.2f:\n",f,e);
    printf("\t\t:---------:---------:\n");
    return(0);
    }
    всё как бы работает, но вместо 439000 выводит -19752, если вводить 4390 то выводит 4390...вопрос - в чём ошибка? или у меня компилятор глючит?
    кстати,после выполнения он не пишет -Для продолжения нажмите любую клавишу...

    ОтветитьУдалить
    Ответы
    1. Добрый день.
      У вас я так понимаю Borland C++. Тут мы уже сталкивались с подобной проблемой. Т.е.и не проблема это вовсе. Ответ здесь http://youngcoder.blogspot.ru/2011/10/zanjatie-3-vvod-i-vyvod-dannyh-v-jazyke.html?showComment=1364836833303#c6748978637107922045

      Удалить
    2. Очень хорошо, что вы мне напомнили, а то я так и не изменил условие. )

      Удалить
    3. Спасиб...А то, что не пишет - "Для продолжения нажмите любую клавишу..."
      это криво Borland C++ стоит? или что?

      Удалить
    4. Нет, просто в борланде это и не предусмотрено. Если вас беспокоит то, что экран сразу исчезает прочитайте FAQ там есть несколько способов для решения этой неприятности. ))

      Удалить
  67. Увидел в одном из комментов объединение строк, решил довести до логического завершения, вроде работает.
    #include "stdio.h"
    int main()
    {
    int c;
    char a,b;
    float d,e,f;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d",&d,&e,&f,&c);
    printf("\n\t\t\t\:---------:---------:\n\t\t\t:%-9c:%9.2f:\n\t\t\t:%-9c:%9.3f:\n\t\t\t:%-9d:%9.2f:\n", a,d,b,e,c,f);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Это лишнее. Такой код сложнее воспринимать. ))

      Удалить
  68. #include
    int main()
    {
    int a,b,с;
    a=getchar();
    с=getchar();
    b=150;
    b=a;
    putchar(b);
    printf("\n");
    putchar(c);
    return(0);
    }
    всё правильно, а не работает пишет:1>67679070.cpp
    1>c:\documents and settings\user1\мои документы\visual studio 2008\projects\43657\43657\67679070.cpp(11) : error C2065: c: необъявленный идентификатор
    1>Журнал построения был сохранен в "file://c:\Documents and Settings\USER1\Мои документы\Visual Studio 2008\Projects\43657\43657\Debug\BuildLog.htm"
    1>43657 - ошибок 1, предупреждений 0
    ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
    в чём проблема?

    ОтветитьУдалить
    Ответы
    1. Какой-то из символов "c"
      здесь
      int a,b,с;
      здесь
      с=getchar();
      или тут
      putchar(c);
      набран русскими буквами. )) Удалите и напишите его на английском, проблема исчезнет.)))

      Удалить
  69. #include
    int main()
    {
    int a, b, f;
    float c, d, e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d", &c,&d,&e,&f);
    printf("\t");
    printf("\t");
    printf("|=========|=========|\n");
    printf("\t");
    printf("\t");
    printf("|%-9c|%9.2f|\n", a, c);
    printf("\t");
    printf("\t");
    printf("|%-9c|%9.3f|\n", b, d);
    printf("\t");
    printf("\t");
    printf("|%-9d|%9.2f|\n", f, e);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Если компилируется и выводится так же как на рисунке, то значит все правильно. ))) Код мне на нравится. Табуляцию можно было бы занести в printf'ы, в которых вы выводите строки. )))

      Удалить
  70. Доброе время суток! У меня проблема, листинги на этой странице если и компилируются то не работают.. до этого проблем небыло..и с другими кодами вроде все норм.. в коментариях есть похожие проблемы но мне не помогает... не могу двигаться дальше... хелп!!!!

    ОтветитьУдалить
    Ответы
    1. Добрый день.Попробуйте набирать код вручную, а не копировать. =)) Я думаю дело в русских буквах. )))

      Удалить
  71. #include
    int main()
    {
    int a,b,f;
    float c,e,d;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d",&c,&d,&e,&f);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|\n",a,c);
    printf("\t\t\t|%-9c|%9.3f|\n",b,d);
    printf("\t\t\t|%-9d|%9.2f|\n",f,e);
    return(0);
    }

    ОтветитьУдалить
  72. include
    int main()
    {
    int a,b,k;
    float c,d,e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f%f%f%d",&c,&d,&e,&k);
    printf("\t\t\t|=========|=========|\n\t\t\t|%-9c|%9.2f|\n\t\t\t|%-9c|%9.3f|\n\t\t\t|%-9i|%9.3f|\n",a,c,b,d,k,e);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Ответ аналогичный этому.
      Переоптимизирование. ))
      http://youngcoder.blogspot.com/2011/10/zanjatie-3-vvod-i-vyvod-dannyh-v-jazyke.html?showComment=1384682420037#c4638459835906307096

      Удалить
  73. Я реально набираю в ручную. и проект новый ... вроде все как надо... другие коды работают...((((((

    ОтветитьУдалить
    Ответы
    1. Тогда подробнее. Что за ошибку выдает вам компилятор?

      Удалить
  74. и не работают только листинги 3,3 и 3,4 ???????

    ОтветитьУдалить
  75. Вот мой код:

    #include "stdio.h"
    int main()
    {
    int a, b, f ;
    float c, d, e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf ("%f f% %f %i",&c, &d, &e, &f);
    putchar (a);
    printf (", ");
    putchar (b);
    printf (", %1.1f, %1.3f, %1.2f, %d.\n", c, d, e, f);
    printf ("\t\t\t|=========|=========|\n");
    printf ("\t\t\t|%-9c|%9.1f| \n", a, c);
    printf ("\t\t\t|%-9c|%9.3f| \n", b, d);
    printf ("\t\t\t|%-9d|%9.2f| \n", f, e);
    printf ("\t\t\t|=========|=========|\n");
    return (0);
    }

    Можете мне показать где ошибка, когда я выполняю программу у меня выходит вместо чисел "0.624 25.07 43900" получаются вот такие числа " -107374176.000, -107374176.00, -858993460". Подскажите пожалуйста почему.

    ОтветитьУдалить
    Ответы
    1. вот здесь
      scanf ("%f f% %f %i",&c, &d, &e, &f);

      в перепутали для второй переменной местами % и f

      Удалить
    2. Спасибо!! Глуповатая ошибка )

      Удалить
  76. #include ""
    #include ""
    int main ()
    { setlocale(LC_ALL, "");
    printf ("Введите: 1 2...");
    int a, b, f;
    a=getchar ();
    b=getchar ();
    b=getchar ();
    float c, d, e;
    scanf ("%f %f %f %i", &c, &d, &e, &f);
    printf ("\t\t\t|=========|=========|\n");
    printf ("\t\t\t|%-9c|%9.2f|\n", a, c);
    printf ("\t\t\t|%-9c|%9.3f|\n", b, d);
    printf ("\t\t\t|%-9i|%9.2f|\n", f, e);
    return (0);
    }
    Объясните, пожалуйста, почему мешает "setlocale" ?
    Если его убрать то все вещественные числа - нормальные, а с ним ерунда какая-то.
    И ещё если первую переменную выводить на экран в виде "putchar" то невозможно угадать сколько ставить пробелов (в виде putchar (y) и табуляций в виде \t) они наверное друг с другом конфликтуют? :
    #include ""
    #include ""
    int main ()
    {
    printf ("Введите: 1 2...");
    int a, b, y, f;
    a=getchar ();
    y=getchar ();
    b=getchar ();
    float c, d, e;
    scanf ("%f %f %f %i", &c, &d, &e, &f);
    printf ("\t\t\t|=========|=========|\n");
    printf ("\t\t\t|");
    putchar (a);
    putchar (y);
    putchar (y);
    putchar (y);
    putchar (y);
    printf ("\t|%9.2f|\n", c);
    printf ("\t\t\t|%-9c|%9.3f|\n", b, d);
    printf ("\t\t\t|%-9i|%9.2f|\n", f, e);
    return (0);
    }
    Спасибо за уроки. Всё разжёвано до каждой запятой.

    ОтветитьУдалить
    Ответы
    1. Не стоит делать так:
      "
      putchar (a);
      putchar (y);
      putchar (y);
      putchar (y);
      putchar (y);
      "
      Скажите, какая именно фигня происходит с locale ? Все должно работать хорошо, я проверил у себя все вроде бы нормально.

      Пожалуйста, я стараюсь для вас.)

      Удалить

    2. Вот такакя ерунда. А стоит, только, в этой-же программе, удалить « setlocale (LC_ALL, “”); » и всё впорядке.

      |=========|=========|
      |1 | 64.00|
      |2 |-107374176.000|
      |-858993460|-107374176.00|


      Microsoft Visual C++ 2008 Express Edition


      Удалить
    3. Проблема в разделителе. =))
      А что вы используете в качестве разделителя, когда пишете дробную чатсь? Точку или запятую? Кажется в этом проблема.

      Удалить
    4. Да, точно. Получается если писать setlocale, то нужно ставить запятую, а если не писать то точку.
      Выходит setlocale как-бы приспосабливает программу под раскладку клавиатуры. И говорит ах ты Русский, значит пиши через запятую, как на Русской раскладке.

      Удалить
  77. Виктор Ильинский9 декабря 2013 г. в 23:04

    Поначалу не понял 5 задание, сидел думал, перечитал некоторые фрагменты урока, оказалось все проще простого.
    Сделал идеально, я так считаю.

    // урок 3 зад 5
    #include
    int main()
    {
    int a=1,b=2,c=439000;
    float t=64.3,y=0.624,u=25.07;
    printf("%-2i%-2i%-5.1f%-6.3f%-6.2f%-2i \n",a,b,t,y,u,c);
    printf("\t\t\t\t|=========|=========|\n");
    printf("\t\t\t\t|%-9i|%-9.2f|\n",a,t);
    printf("\t\t\t\t|%-9i|%-9.3f|\n",b,y);
    printf("\t\t\t\t|%-9i|%-9.2f|\n",c,u);
    return (0);
    }

    ОтветитьУдалить
    Ответы
    1. Сделали все неправильно.
      Числа нужно вводить с клавиатуры. =)))

      Удалить
  78. #include
    int main()
    {
    int a,b,f;
    float c,d,e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d", &c, &d, &e, &f);
    printf("\t\t\t|=======|=======|\n");
    printf("\t\t\t|%-7c|%7.2f|\n", a, c);
    printf("\t\t\t|%-7c|%7.3f|\n", b, d);
    printf("\t\t\t|%-7d|%7.2f|\n", f, e);
    return(0);
    }


    Вместо последнего числа f(439000) выводит "-19752". Почему так? Где-то ошибка? Спасибо за урок.

    ОтветитьУдалить
    Ответы
    1. Я так понимаю, вы используете borland C++. Выше уже обращали внимание на эту проблему. Я даже уже исправил это задание, а картинку забыл поменять. Там нужно выводить число 43900.

      Удалить
  79. Странно, у меня ваша программа работает нормально.

    ОтветитьУдалить
  80. Доброго дня суток.

    Простите если вопрос Вам покажется глупым, может я не внимательно все прочитал и не разобрался, но, объясните пожалуйста зачем в лястинге 3.3 в 6-й строке b=150??? Не как не уясню к чему и какова роль этой строки???
    За ранее спасибо

    ОтветитьУдалить
    Ответы
    1. Здравствуйте Денис.
      В принципе, она там только лишь для того, чтобы показать, что значение изменилось. В программе мы сохранили 150, а потом считали туда новое значение. И вывели его на экран. Если бы, вдруг, по необъяснимым причинам функция getchar не сработала бы, то при выводе на экран переменной b мы бы увидели 150. )

      Удалить
  81. вот что у меня получилось
    #include
    int main()
    {
    int a,b,f;
    float c,d,e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d",&c,&d,&e,&f);
    printf("\t\t\t\t|=========|=========|\n");
    printf("\t\t\t\t|%-9c|%9.2f|\n",a,c);
    printf("\t\t\t\t|%-9c|%9.3f|\n",b,d);
    printf("\t\t\t\t|%-9d|%9.2f|\n",f,e);
    return(0);
    }
    вопрос такой:
    можно ли
    b=getchar();
    b=getchar();
    как то записать в одну строчку?

    ОтветитьУдалить
    Ответы
    1. Да, можно. Почитайте в 20 уроке про оператор последовательного выполнения. )

      Удалить
  82. Проверьте пожалуйста 3-е задание:
    #include
    int main
    {
    int a,b,c;
    float d,e,f;
    a=getchar;
    b=getchar;
    b=getchar;
    scanf("%f %f %f %d",&d,&e,&f,&c);
    print("\t\t\t|=======|=========|\n");
    putchar(a);
    printf("\t\t\t|%-9d|%9.2f|\n",a,d);
    putchar(b);
    printf("\t\t\t|%-9d|%9.3f|\n",b,e)
    printf("\t\t\t|%-9d%|9.2f|\n",c, f);
    return (0);
    }

    ОтветитьУдалить
    Ответы
    1. Почему-то везде пропущены пустые скобки. Так нельзя. ))

      Удалить
    2. Это в getchar имеется ввиду?

      Удалить
  83. Здравствуйте! Меня зовут Александр.
    Долго думал над решением задачи №3
    И нашел одну загвоздку, то ли скрин с образцом выполненого задания не правильный, то ли ответ на задание не верно.
    В задании указано что первые 2 числа нужно считать методом getchar и если передать в переменную a то там будет число 49(так как он передает данные из таблицы кодов ASCII) с вторым символом будет тоже самое.
    Решение с передачей в переменную а именно числа 1 так и не нашел, но есть формальное решение))
    #include "stdio.h"
    #include "locale.h"
    int main(void){
    setlocale(LC_ALL,"");
    int a,ab,b,bc,cd,de,ef,f;
    float c,d,e;
    a=getchar();
    ab=getchar();
    b=getchar();
    scanf(" %f %f %f %d",&c,&d,&e,&f);
    printf("\n");
    ab=1;
    bc=2;
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9d|\t%-2.1f|\n",ab,c);
    printf("\t\t\t|%-9d|\t%-2.2f|\n",bc,d);
    printf("\t\t\t|%-9d|\t%-2.1f|\n",f,e);
    return(0);
    }

    Если я не прав или есть действительно правильное решение напишите пожалуйста мне на ящик shyrik.86@mail.ru

    ОтветитьУдалить
    Ответы
    1. Решение есть правильно и оно приведено в образцовых решениях. )))
      Вы все правильно заметили, что передается код символа ASCII, но можно просто выводить использую спецификатор %c. Вот и всё.))

      Удалить
  84. Вот сделал первые два числа через getchar выводятся остальное через printf:
    //ggg
    #include
    int main()
    {
    int a,b;
    a=getchar();
    b=getchar();
    double c,d,e,f;
    c=64.3;
    d=0.624;
    e=25.07;
    f=43900;
    printf("\t\t");
    printf("|===============|================|\n");
    printf("\t\t");
    printf("|");
    putchar(a);
    printf("\t\t");
    printf("|");
    printf("\t\t");
    putchar(b);
    printf("|");
    printf("\n\t\t");
    printf("|%-15.2f| %15.3f|\n",c,d);
    printf("\t\t");
    printf("|%-15.2f| %15.0f|\n",e,f);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. нет. Числа нужно было ввести, а не задавать в коде программы. )
      И не получится так ввести a и b. Между ними должен быть пробел, а тогда именно он и запишется в переменную b. Исправляйтесь.))

      Удалить
  85. Здравствуйте, проверьте пожалуйста.

    #include
    #include
    int main()
    {
    int a, b, f;
    float c, d, e;
    printf("Vvedite dannie chisla cherez probel a=1 b=2 c=64.3 d=0.624 e=25.07 f=43900\n");
    scanf("%d %d %f %f %f %d",&a,&b,&c,&d,&e,&f);
    printf("\t\t\t|=========|=========|\n\t\t\t");
    printf("|%-9d|%9.2f|\n\t\t\t",a,c);
    printf("|%-9d|%9.3f|\n\t\t\t",b,d);
    printf("|%-9d|%9.2f|\n",f,e);

    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. По условию первые два числа нужно было считать использую функцию getchar(). ))

      Удалить
  86. Вроде так) все верно?
    #include
    int main()
    {
    int a,b,f;
    float c,d,e;
    printf("Vvedite dannye o chislah \n");
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %d", &c,&d,&e,&f);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|\n", a,c);
    printf("\t\t\t|%-9c|%9.3f|\n", b,d);
    printf("\t\t\t|%-9d|%9.2f|\n", f,e);
    return(0);
    }

    ОтветитьУдалить
  87. //Потратил полтора часа. Когда завершил испытал микро-оргазм.
    int main()
    {
    int a, b, f;
    float c, d, e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f %f %f %i", &c, &d, &e, &f);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|\n", a, c);
    printf("\t\t\t|%-9c|%9.3f|\n", b, d);
    printf("\t\t\t|%-9d|%9.2f|\n", f, e);
    printf("\t\t\t|=========|=========|\n");
    return (0);
    }

    ОтветитьУдалить
  88. Здравствуйте, вопрос такой для чего тут вообще getchar нужен я так и не понял.
    #include
    int main()
    {
    int a,b,c;
    a=1;
    b=2;
    c=43900;
    float q,r,t;
    q=64.3;
    r=0.624;
    t=25.07;
    printf("%i,%d,%0.1f,%0.3f,%0.2f,%d\n",a,b,q,r,t,c);
    printf("\t\t\t|=========|=========|\n\t\t\t");
    printf("|%-9i|%9.2f|\n\t\t\t",a,q);
    printf("|%-9i|%9.3f|\n\t\t\t",b,r);
    printf("|%-9d|%9.2f|\n\t\t\t",c,t);
    return(0);
    }
    вот что у меня получилось после 1-2 часов мозголомки. Таблица получилась такая же как и в задании, так какую роль тут играет getchar?

    ОтветитьУдалить
    Ответы
    1. коммент ниже посмотрите, у Вас нету считывания с клавиатуры.

      Удалить
  89. Не уверен что блог актуален еще. Но автору в любом случае большое спасибо. Начал пробовать. По предыдущим урокам результаты не выкладывал, сделаю хоть в этом. Все таки первое, хоть немного сложное задание.

    #define _CRT_SECURE_NO_WARNINGS
    #include
    int main()
    {
    int a, b;
    a = getchar();
    b = getchar();
    b = getchar();
    float c, d, e;
    int f;
    scanf("%f %f %f %d", &c, &d, &e, &f);
    printf("\t \t \t:========:========: \n");
    printf("\t \t \t:%-8c:%8.2f:\n", a, c);
    printf("\t \t \t:%-8c:%8.3f:\n", b, d);
    printf("\t \t \t:%-8d:%8.2f:\n", f, e);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Добрый день.
      Да, все правильно. )
      Спрашивать желательно, когда что-то непонятно, а не каждый раз.) Удачного Вам обучения.

      Удалить
  90. Подскажите пожалуйста, что не так. В таблице правильно отображаются только первые три числа
    #include
    int main()
    {
    int a,b,f;
    float c,d,e;
    a=getchar();
    b=getchar();
    b=getchar();
    scanf("%f,%f,%f,%i", &c,&d,&e,&f);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|\n", a,c);
    printf("\t\t\t|%-9c|%9.3f|\n", b,d);
    printf("\t\t\t|%-9d|%9.2f|\n", f,e);
    printf("\t\t\t|=========|=========|\n");
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Добрый день, Алан.
      Скорее всего вы вводите числа через пробел, а в формат строке у вас стоят запятые.
      "%f,%f,%f,%i"
      Либо вводите числа через запятую (что не будет соответствовать условию задачи), либо замените в формат строке запятые на пробелы.

      Удалить
  91. Задание 3. Уже конечно поздно пишу, но только недавно начал заниматься. У меня такой получился результат:

    #include
    #include
    int main()
    {
    setlocale(LC_ALL,"");
    int iCH1,iCH2,iCH6;
    float fCH3,fCH4,fCH5;
    printf("Введите 6 чисел через пробел: a=1, b=2, c=64.3, d=0.624, e=25.07, f=439000\n");
    iCH1=getchar();
    iCH2=getchar();
    iCH2=getchar();
    scanf_s("%f %f %f %d",&fCH3,&fCH4,&fCH5,&iCH6);
    printf("%c %c %2.1f %1.3f %2.2f %i\n",iCH1,iCH2,fCH3,fCH4,fCH5,iCH6);
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|\n",iCH1,fCH3);
    printf("\t\t\t|%-9c|%9.3f|\n",iCH2,fCH4);
    printf("\t\t\t|%-9i|%9.2f|\n",iCH6,fCH5);
    printf("\t\t\t|=========|=========|\n");
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Здравствуйте, Павел. Никогда не поздно что-то начать. =)
      Программа работает, это хорошо. Но есть некоторые замечания.
      1. Лучше не использовать в именах переменных заглавные буквы. Заглавными буквами принято называть именованные константы. И если указываете тип значения, то желательно это делать через нижнее подчеркивание. Это не строгие правила, можно делать и как вы. Но лучше придерживаться традиций. i_ch1 выглядит красивее нежели iCH1.
      2. Сравните окончательное окно своей программы и то, что было в примере. Много лишнего, если бы это проверял компьютер ваше правильное решение не было бы засчитано. Желательно соблюдать формат ввода и вывода.

      Удалить
  92. не понимаю где находится этот символ на клавиатуре |

    ОтветитьУдалить
  93. старался выполнить все условия задачи, получилось, но длинный код в итоге, чем у других.
    я наверно один для пробелов дополнительные переменные ввел. Что не так я понял?
    #include
    int main (void)
    {
    int a, b;
    int q, w, e, r, t;
    float d, f, g, c;
    a=getchar();
    q=getchar();
    b=getchar();
    w=getchar();
    scanf ("%f", &d);
    e=getchar();
    scanf ("%f", &f);
    r=getchar ();
    scanf ("%f", &g);
    t=getchar();
    scanf ("%f", &c);
    printf ("\t");
    printf ("\t");
    printf ("\t");
    printf ("|%-8.0c|", a);
    printf ("|%8.2f|\n", d);
    printf ("\t");
    printf ("\t");
    printf ("\t");
    printf ("|%-8.0c|", b);
    printf ("|%8.3f|\n", f);
    printf ("\t");
    printf ("\t");
    printf ("\t");
    printf ("|%-8.0f|", c);
    printf ("|%8.2f|\n", g);
    return (0);
    }

    ОтветитьУдалить
    Ответы
    1. Много лишнего. Зачем вы перед каждым scanf ставите getchar? Это не нужно. И объедините printf-ы Чтобы одной строчке на экране соответствовал один printf. Так и красивее и удобнее.

      Удалить
  94. Подскажите, в чём я ошибся?

    #include

    int main (void) {
    int a, b, j;
    float c, d, i;
    a = getchar();
    b = getchar();
    scanf("%d %f %f %f",&j,&c,&d,&i);
    printf("\t\t\t\t|=========|=========|\n");
    printf("\t\t\t\t|%9c|%-9c|\n",a,b);
    printf("\t\t\t\t|%9d|%-9f|\n",c,d);
    printf("\t\t\t\t|%9d|%-9f|\n",i,j);
    return 0;
    }

    ОтветитьУдалить
    Ответы
    1. Добрый день. В уроке есть примечание про то, что пробелы, табуляции, переносы строк тоже считываются во входной поток. после листинга 3.4 Прочитайте и поправьте код.

      Удалить
  95. Мой вариант.
    #include
    int main (void)
    {
    int a,b,c;
    float d,e,f;
    printf("Vvedite chisla 1 2 64.3 0.624 25.07 43900 cherez probel \n\n");
    a=getchar();
    getchar();
    b=getchar();
    scanf("%f %f %f %d", &d, &e, &f, &c);
    printf("\t\t\t|=========|=========| \n");
    printf("\t\t\t|%-9c|%9.2f| \n", a,d);
    printf("\t\t\t|%-9c|%9.3f| \n", b,e);
    printf("\t\t\t|%-9d|%9.2f| \n", c,f);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Да, все нормально. Хотя вот это
      printf("Vvedite chisla 1 2 64.3 0.624 25.07 43900 cherez probel \n\n");
      точно не соответствует формату вывода в задании.

      Удалить
  96. У меня с getchar не получается.Компилируется без ошибок а экран выводится пустой по всем листингам.И при ручной печати и при копировании листинга одинаково

    ОтветитьУдалить
    Ответы
    1. Добрый день. Можно пожалуйста конкретнее?

      Удалить
  97. Доброго времени суток. При выполнении задания у меня возникла такая проблема. При выполнении в таблице не выводиться 1, а сразу 2 и из числа 64.3 целая часть переноситься в следующую строку, а в первой остается 0.30, и вместо числа 43900 все время разные числа выводятся, то -21636, то 28876. Но при удалении из программы функций getchar таблица соответствует правильному виду.
    # include
    int main () {
    int a,q,c,t,y;
    a=getchar();
    q=getchar();
    float d,e,i;
    scanf ("%i %i %f %f %f %i", &a,&q,&d,&e,&i,&c);
    printf ("\t\t|========|=======|\n");
    printf ("\t\t|%-9i|%8.2f|\n", a,d);
    printf ("\t\t|%-9i|%8.3f|\n", q,e);
    printf ("\t\t|%-9i|%8.2f|\n", c,i);
    return (0); }

    ОтветитьУдалить
    Ответы
    1. Добрый день. Программа работает так, как вы её написали. А написали вы её синтаксически верно, но логически неправильно. Внимательно посмотрите что и куда вы читаете, и что выводите на экран. Тогда сразу станет понятно, почему такие проблемы возникают.

      Удалить
  98. Здравствуйте, вот решил но у меня вопрос число надо с клавиатуры вести или срезу инициализировать заранее спасибо


    #include "stdafx.h"
    #include

    int main()
    {
    int a=1,b=2;
    float c=64.3, d=0.624, e=25.07;
    int i= 43900;

    printf("V vedite 6 chisla cherez probel\n");
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9d| %8.3f|\n",a,c);
    printf("\t\t\t|%-9d| %8.3f|\n",b,d);
    printf("\t\t\t|%-9d| %8.3f|\n",i,e);










    _getch();

    return 0;
    }

    ОтветитьУдалить
    Ответы
    1. Добрый день, Гамзат.
      Числа, нужно вводить с клавиатуры, а не инициализировать заранее.

      Удалить
  99. 3 Задание
    #include
    int main(void)
    {
    int a,b,c,g;
    a=getchar();
    b=getchar();
    c=getchar();
    float d,e,f;
    scanf("%f %f %f %d",&d,&e,&f,&g);
    printf("\t\t\t|=========|=========|\n\t\t\t|%-9c|%9.2f|\n\t\t\t|%-9c|%9.3f|\n\t\t\t|%-9d|%9.2f|\n",a,d,c,e,g,f);
    return(0);
    }

    ОтветитьУдалить
  100. Здравствуйте, вопрос по третьему заданию, после запуска программы и введения с клавиатуры "1 2 64.3 0.624 25.07 43900" и нажатия Enter программа не выполняется, выполнение происходит только после ввода еще одного значения. Объясните пожалуйста почему так проиходит, не могу разобраться.

    #include
    int main(void)
    {
    char a,a1,b;
    int f;
    float c,d,e;
    a=getchar();
    a1=getchar();
    b=getchar();

    scanf("%f ",&c);
    scanf("%f ",&d);
    scanf("%f ",&e);
    scanf("%d ",&f);

    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|\n", a,c);
    printf("\t\t\t|%-9c|%9.3f|\n", b,d);
    printf("\t\t\t|%-9d|%9.2f|\n", f,e);

    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Всё дело в пробеле, который стоит после %d. Для этой функции пробел это разделитель. Поэтому когда идет считывание, ей нужно его как-бы тоже считать, ведь он описан в формате, поэтому считывание разделителя закончится, когда встретится новый символ отличный от разделителя (буква, цифра).

      Удалить
  101. //proga
    #include
    int main(void) {
    int a, b, f;
    float c, d, e;
    a = getchar();
    b = getchar();
    b = getchar();
    c = 64.3;
    d = 0.624;
    e = 25.07;
    f = 43900;
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|%-9c|%9.2f|\n", a, c);
    printf("\t\t\t|%-9c|%9.3f|\n", b, d);
    printf("\t\t\t|%-9d|%9.2f|\n", f, e);
    return(0);
    }

    ОтветитьУдалить
    Ответы
    1. Добрый день, Александр.
      Вы не совсем правильно поняли задачу. Значения в переменные c,d,e,f тоже должны вводиться пользователем с клавиатуры.

      Удалить
  102. Помогите с одним вопросом: пробел \t везде работает как надо, но в начале, где я его написала после putchar(a), получился огромный длинный пробел. А в остальном,вроде бы все верно. Как сделать пробел коротким?
    #include
    int main()
    {
    int a, b;
    int y = 43900;
    float d = 64.3;
    float k = 0.624;
    float j = 25.07;
    printf("Vvedite dva chisla: a=1, b=2 i najmite Enter");
    a = getchar();
    b = getchar();
    putchar(a);
    printf("\t");
    putchar(b);
    printf("\t");
    printf("%1.1f\t", d);
    printf("%3.3f\t", k);
    printf("%4.2f\t", j);
    printf("%2d\n\t\t\t", y);
    printf("|=========|=========|\n\t\t\t");
    printf("|%-9c|%9.2f|\n\t\t\t", a, d);
    printf("|%-9c|%9.3f|\n\t\t\t", b, k);
    printf("|%-9d|%9.2f|\n", y, j);


    return (0);
    }

    ОтветитьУдалить
    Ответы
    1. Не совсем так. \t - всегда работает как длинный пробел. Чтобы сделать обычный пробел, достаточно добавить его в формат строку. Кроме того, с клавиатуры нужно вводить все числа, а не только первые два. Исправьте это.

      Удалить
  103. #include
    int main()
    {
    int a=1,b=2;
    a=getchar();
    b=getchar();
    double c=64.3;
    double d=0.624;
    double i=25.07;
    int f=43900;
    getchar();
    printf("\t\t\t|=========|=========|\n");
    printf("\t\t\t|1\t%2c|%4c64.30|\n");
    printf("\t\t\t|2\t%2c|%4c0.624|\n");
    printf("\t\t\t|43900\t%2c|%4c25.07|\n");
    return(0);
    }
    Правильно?

    ОтветитьУдалить
    Ответы
    1. Добрый день.
      Нет, не совсем так.
      Вы задаете значения переменным в коде программы, а их должен ввести пользователь. И введенные им числа уже нужно отобразить в таблице, а не самостоятельно туда записывать числа.

      Удалить
    2. Здравствуйте. Работаю в Visual как и советовалось в первом уроке. Но когда начинаю вводить 3 задание, даже если ввожу программу комментаторов, которые отметили как правильную, мне выдает 1 ошибку. "error C2006: #include: требуется имя файла, а не "newline"" Как это исправить?

      Удалить
  104. Здравствуйте. Работаю в Visual как и советовалось в первом уроке. Но когда начинаю вводить 3 задание, даже если ввожу программу комментаторов, которые отметили как правильную, мне выдает 1 ошибку. "error C2006: #include: требуется имя файла, а не "newline"" Как это исправить?

    ОтветитьУдалить