Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Прошу помощи найти ошибку в простом приложении.
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Coret Coret вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.02.2014
По умолчанию Прошу помощи найти ошибку в простом приложении. - 22.02.2014, 18:52

Здравствуйте. Я абсолютнеший новичок в программировании, так что не кидайтесь пожалуйста в меня ничем.
У меня есть код приложения, мне нужно что бы оно открывалось в консоли.
Но после компиляции консоль запускается и сразу же исчезает. Я накопал в инете, что что бы оно не закрывалось нужно перед return создать строку Sleep (1000) или ввести оператор ввода, но ничего не получается. Вероятно в приложении ошибка. Подскажите, пожалуйста, где я свернул не туда.
cpp Код:
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

#pragma warning(disable:4514)

static double vseg[] = { 1e9, 1e6, 1e3, 1};
static char dsot[][11] =
{ "",          "сто ",       "двести ",   "триста ",     "четыреста ",
   "пятьсот ",  "шестьсот ",  "семьсот ",  "восемьсот ",  "девятьсот "};
static char ddec[][13] =
{ "",          "десять ",    "двадцать ", "тридцать ",   "сорок ",
   "пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "};
static char dde [][14] =
{ "одиннадцать ", "двенадцать ",  "тринадцать ",
   "четырнадцать ","пятнадцать ",  "шестнадцать ",
   "семнадцать ",  "восемнадцать ","девятнадцать " };
static char ded [][8] =
{ "",          "один ",      "два ",      "три ",        "четыре ",
   "пять ",     "шесть ",     "семь ",     "восемь ",     "девять "};
static char dedt[][6]    = { "одна ", "две " };
static char dseg[][9]    = { "миллиард", "миллион", "тысяч", "рубл" };
static char dsem[][3][5] = {{ " ",  "а ", "ов " },  // миллиард
                             { " ",  "а ", "ов " },  // миллион
                             { "а ", "и ", " "   },  // тысяч
                             { "ь ", "я ", "ей " },  // рублей
                             { "йка","йки","ек"  }}; // копеек

static int
HowTell (long n)
{
   n %= 100;
   if (n >= 10  &&  n <= 20) return  3;
   n %= 10;
   return  n == 1? 1: n <= 4  &&  n > 0? 2: 3;
}

static double
Round (double op)
{
   return  floor(op + 0.5);
}

static double
Round (double op,double pow)
{
   if (pow <= 0.)  return  op;
   if (op>0. && op<pow || op<0. && op>pow) return 0.;
   op = floor(op/pow + 0.5) * pow;
   return  op>0. && op<pow || op<0. && op>pow? 0.: op;
}

char*
WriteSum (double v,char *buf,bool kop,bool up)
{
   buf[0] = 0;
   if (v >= 1e12  ||  v <= 0.009) return buf;
   v = Round(v,0.01);
   for (int seg=0; seg<4; seg++) {
     int vt = int(v / vseg[seg]);
     v -= vseg[seg] * vt;
     if (vt  ||  seg == 3) {
       int how = HowTell(vt);
           // 1 - миллиард   миллион   тысяча рубль  копейка
           // 2 - миллиарда  миллиона  тысячи рубля  копейки
           // 3 - миллиардов миллионов тысяч  рублей копеек
       if (vt) {
         strcat(buf,dsot[vt/100]);  vt %= 100;
         if (vt >= 20  ||  vt <= 10) {
           strcat(buf,ddec[vt/10]);  vt %= 10;
           if (seg == 2  &&  (vt == 1  ||  vt == 2))
                 strcat(buf,dedt[vt-1]);
           else  strcat(buf,ded[vt]);
         } else  strcat(buf,dde[vt-11]);
       } else if (buf[0] == 0)  strcat(buf,"ноль ");
       strcat(buf,dseg[seg]);
       strcat(buf,dsem[seg][how-1]);
     }
   }
   if (kop)
       sprintf(buf+strlen(buf),"%02.0lf копе%s",
                               v*100,
                               dsem[4][HowTell((long)Round(v*100))-1]);

   if (up) CharUpper(buf);
   else    CharUpperBuff(buf,1);
   return  buf;
}
п.с. не нашел на вашем форуме раздела "для новичков", извиняйте, если не там создал тему
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,457
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 22.02.2014, 22:19

Здесь вообще нет main(), код неполный.

Цитата:
Сообщение от Coret Посмотреть сообщение
Я накопал в инете, что что бы оно не закрывалось нужно перед return создать строку Sleep (1000) или ввести оператор ввода,
Для вывода результата работы консольного приложения нужна эта самая консоль.
Если запускаете из консоли (командная строка, cmd.exe) то эта консоль уже есть, и всё выводится в неё. Никаких ухищрений не надо. Это правильный путь.
Если запускаете из оконной оболочки или среды разработки, консоль создаётся и в ней запускается программа, но после завершения программы консоль закрывается (поведение по умолчанию). Если подставить костыль типа оператора ввода в конце программы, то программа не завершится сама и консоль останется видимой до завершения.
Ответить с цитированием
  (#3 (permalink)) Старый
Coret Coret вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.02.2014
По умолчанию 23.02.2014, 10:20

Открываю через командную строку екзешник и ничего не происходит.
Про оператор ввода: я так понимаю перед return нужно ввести cin>> ?
Ответить с цитированием
  (#4 (permalink)) Старый
Matematic Matematic вне форума
Member
 
Аватар для Matematic
 
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
По умолчанию 23.02.2014, 11:06

В листинге нет функции main(), т. е. главной функции программы. Т. е. это вообще не программа, а набор функций и глобальных переменных. Нет начальной точки входа, с которой программа начала бы свою работу. Все эти функции без main() сами по себе работать не будут, они должны из чего-то вызываться. Это могло бы быть в принципе текстом библиотеки (если оно написано без ошибок), но никак не программой. Что все эти функции делают, я понятия не имею, т. к. текст довольно сложный и с ним надо долго разбираться. Откуда вы его вообще взяли?

Но удивительно, как он у Вас вообще скомпилировался и каким образом из него построился экзешник. Без функции main() линкер должен был выдать ошибку. Запускать этот экзешник хоть из рабочего стола, хоть из консольного шелла (т. е. из cmd.exe) бессмысленно. В нем нет никакой осмысленной программы.
Ответить с цитированием
  (#5 (permalink)) Старый
Coret Coret вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.02.2014
По умолчанию 23.02.2014, 11:27

Черт возьми.
Значит все тлен.
Мне нужно написать приложение которое будет выводить сумму прописью. Все это - итог того что я долго изучал в интернете.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Matematic Matematic вне форума
Member
 
Аватар для Matematic
 
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
По умолчанию 23.02.2014, 11:53


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

Судя по тому, что функция Round() определена дважды с разным количеством входных параметров, это должен быть язык C++, а не C. C такого не позволяет делать, в C++ это называется перегрузкой функций.

Судя по тому, что в программе использована функция strcat() это все-таки больше похоже на язык C, а не на C++, т. к. в C++ для строк обычно не принято использовать тип char *s (или массив символов, что в принципе то же). Там для этой цели существует тип string и для конкатенации строк используют перегруженный оператор + , если не ошибаюсь (на C++ не программирую). Обычно так делается, хотя никто не запрещает использовать в C++ массивы строк и указатели на них, и набор функций для работы со строками этого типа из языка C. Т. е. использовать строки языка C в C++ вполне допустимо (т. к. C++ практически является расширением C и с ним имеет обратную совместимость, пусть и не полную, синтаксис и библиотеки обычного C он наследует), но обычно там пользуются строками класса string.

Откуда Вы взяли-то этот листинг? Не верю, что сами его написали. Или взяли откуда-то из Интернета готовый исходник, или там же нашли какие-то куски и скомпоновали его из них... Или сами его с нуля написали?
Ответить с цитированием
  (#7 (permalink)) Старый
Matematic Matematic вне форума
Member
 
Аватар для Matematic
 
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
По умолчанию 23.02.2014, 11:59

Могу Вам порекомендовать пару хороших книг по C, по которым изучал этот язык и которыми сам до сих пор пользуюсь. Если хотите начинать с C++, то лучше совета и рекомендаций по учебным пособиям спрашивать у тех, кто его хорошо знает. А Интернет Вас такому научит, что дым столбом стоять будет Начинать изучение языка программирования надо с хороших и простых книг по нему, мне так кажется.
Ответить с цитированием
  (#8 (permalink)) Старый
Matematic Matematic вне форума
Member
 
Аватар для Matematic
 
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
По умолчанию 23.02.2014, 12:32

И остается вопрос, откуда у Вас этот исходник? Взяли его из Интернета с какого-то сайта, составили из кусков, взятых из Интернета, или сами написали с нуля "от и до"? Какая цель написания этой программы? Школьное задание по информатике, студенческая задача (лаба, зачет) или Вы просто решили самостоятельно изучить программирование и выучить C/C++ и придумали себе задачу?

Как выглядит условие задачи, сформулируйте его четко.

Зная это дело, проще будет дать Вам совет.
Ответить с цитированием
  (#9 (permalink)) Старый
Coret Coret вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.02.2014
По умолчанию 23.02.2014, 13:52

О боги...
Конечно же нашел все в интернете.
Книг уже накачал.
Вообще мне больше интересно заняться веб программированием, а это задание - курсовая по учебе.
Нужно создать приложение, которое будет выводить целые числа в слова. А я понятия не имею как.
Ответить с цитированием
  (#10 (permalink)) Старый
Matematic Matematic вне форума
Member
 
Аватар для Matematic
 
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
По умолчанию 23.02.2014, 17:54

Задание-то пустячное, если это курсовая. Транслировать целое число в словесную форму.

Во-первых, тот исходник переводит не целое, а действительное число.
Во-вторых, переводит оно его в денежную форму. Т. е. там помимо названия числа на русском еще прибавляются слова "рублей" и "копеек".

В том исходнике головная функция - это WriteSum().
HowTell() и 2 варианта Round() - это вспомогательные функции этой WriteSum(), вызываемые из нее.

Как оно все работает - я понятия не имею и разбираться с этим не буду.

Для этой WriteSum(), чтобы она заработала, нужно составить функцию main(), которая сначала примет данные, потом вызовет эту WriteSum(), WriteSum() сосчитает, что нужно, а потом main() выведет полученные результаты на экран.
Ответить с цитированием
  (#11 (permalink)) Старый
Coret Coret вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.02.2014
По умолчанию 23.02.2014, 18:03

Благодарю за помощь Вас.
По ходу придется самому писать код) Халява не пройдет
Ответить с цитированием
  (#12 (permalink)) Старый
Matematic Matematic вне форума
Member
 
Аватар для Matematic
 
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
По умолчанию 23.02.2014, 18:12

Думаю, что да.
Я сейчас попробую написать main() для этого файла и попробую его запустить.
Но соваться с ним на сдачу (даже если оно заработает) к преподу не советую. Сразу будет видно, что функция избыточна, т. к. делает чуть больше, чем должна по Вашему заданию. Препод же не идиот, он это сходу поймет. И будет ясно, что Вы ее списали. Лучше самому написать, даже идею можно подсмотреть в той программе. А мне сейчас разбираться с этим текстом, убить день или два - ну сами все понимаете...
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Coret Coret вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.02.2014
По умолчанию 23.02.2014, 18:16

Да конечно, я уже благодарен Вам за помощь. Неоценимую для меня.
Ответить с цитированием
  (#14 (permalink)) Старый
Matematic Matematic вне форума
Member
 
Аватар для Matematic
 
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
По умолчанию 23.02.2014, 23:25

Ну вот, написал я функцию main() для Вашей программы и оно заработало.

cpp Код:
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <math.h>



static double vseg[] = { 1e9, 1e6, 1e3, 1};
static char dsot[][11] =
{ "",          "сто ",       "двести ",   "триста ",     "четыреста ",
   "пятьсот ",  "шестьсот ",  "семьсот ",  "восемьсот ",  "девятьсот "};
static char ddec[][13] =
{ "",          "десять ",    "двадцать ", "тридцать ",   "сорок ",
   "пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "};
static char dde [][14] =
{ "одиннадцать ", "двенадцать ",  "тринадцать ",
   "четырнадцать ","пятнадцать ",  "шестнадцать ",
   "семнадцать ",  "восемнадцать ","девятнадцать " };
static char ded [][8] =
{ "",          "один ",      "два ",      "три ",        "четыре ",
   "пять ",     "шесть ",     "семь ",     "восемь ",     "девять "};
static char dedt[][6]    = { "одна ", "две " };
static char dseg[][9]    = { "миллиард", "миллион", "тысяч", "рубл" };
static char dsem[][3][5] = {{ " ",  "а ", "ов " },  // миллиард
                             { " ",  "а ", "ов " },  // миллион
                             { "а ", "и ", " "   },  // тысяч
                             { "ь ", "я ", "ей " },  // рублей
                             { "йка","йки","ек"  }}; // копеек

static int
HowTell (long n)
{
   n %= 100;
   if (n >= 10  &&  n <= 20) return  3;
   n %= 10;
   return  n == 1? 1: n <= 4  &&  n > 0? 2: 3;
}

static double
Round (double op)
{
   return  floor(op + 0.5);
}

static double
Round (double op,double pow)
{
   if (pow <= 0.)  return  op;
   if (op>0. && op<pow || op<0. && op>pow) return 0.;
   op = floor(op/pow + 0.5) * pow;
   return  op>0. && op<pow || op<0. && op>pow? 0.: op;
}

char*
WriteSum (double v,char *buf,bool kop,bool up)
{
   buf[0] = 0;
   if (v >= 1e12  ||  v <= 0.009) return buf;
   v = Round(v,0.01);
   for (int seg=0; seg<4; seg++) {
     int vt = int(v / vseg[seg]);
     v -= vseg[seg] * vt;
     if (vt  ||  seg == 3) {
       int how = HowTell(vt);
           // 1 - миллиард   миллион   тысяча рубль  копейка
           // 2 - миллиарда  миллиона  тысячи рубля  копейки
           // 3 - миллиардов миллионов тысяч  рублей копеек
       if (vt) {
         strcat(buf,dsot[vt/100]);  vt %= 100;
         if (vt >= 20  ||  vt <= 10) {
           strcat(buf,ddec[vt/10]);  vt %= 10;
           if (seg == 2  &&  (vt == 1  ||  vt == 2))
                 strcat(buf,dedt[vt-1]);
           else  strcat(buf,ded[vt]);
         } else  strcat(buf,dde[vt-11]);
       } else if (buf[0] == 0)  strcat(buf,"ноль ");
       strcat(buf,dseg[seg]);
       strcat(buf,dsem[seg][how-1]);
     }
   }
   if (kop)
       sprintf(buf+strlen(buf),"%02.0lf копе%s",
                               v*100,
                               dsem[4][HowTell((long)Round(v*100))-1]);

   if (up) CharUpper(buf);
   else    CharUpperBuff(buf,1);
   return  buf;
}




int main()
{char s[1024], *endp;
 char err[30];
 long n;
 char buf[1024], *buf1=buf;

 fgets(s, 1024, stdin);              /*Ввод числа и обработка ошибок ввода. */
 errno=0;
 n = strtol(s, &endp, 10);
 if((endp[0] != '\n' && endp[1] != 0) || errno)
       {CharToOem("Ошибка при вводе числа.\n", err);
        fprintf(stderr, err);
        return 1; }

 if(n<0) {strcpy(buf, "минус "); n=-n; buf1+=6; } /*Случай отрицательных чисел.
                                                    Функция WriteSum() с ними
                                                    работать не способна (при
                                                    попытке передать ей
                                                    отрицательное число
                                                    происходит аварийный сбой
                                                    программы. */


 WriteSum(n, buf1, 0, 0);
 *strstr(buf, "рубл")=0; /*Убираем слово "рубль" из конца получившейся строки,
                           т. е. штопаем нашу программу так (словно она
                           презерватив), чтобы она давала нужный по заданию
                           результат. Можно данную строку из программы убрать,
                           но тогда презерватив будет дырявый. */


 CharToOem(buf, buf);    /*Преобразуем строку buf из кодировки cp1251
                           в кодировку cp866, в которой работает
                           консоль Windows. */

 printf("%s\n", buf);
 return 0; }


Сразу скажу, что работа совершенно непотребная и для сдачи она не годится. Я просто заштопал изначальную программу как презерватив, там в комментах к ней даже это написал. Код WriteSum() даже не менял, исправил ее работу (удалил "рубли", добавил "минус" через main()). Писал ради спортивного интереса. Лучше с такой работой не суйтесь к преподу, ему сразу станет ясно, что к чему. Как увидит эти рубли и как они удалялись из строки, ему станет сразу все понятно.

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

Проще всего это все самому с нуля, с белого листа написать. А прогой пользоваться просто как подсказкой (на уровне идей).

Последний раз редактировалось Matematic; 23.02.2014 в 23:30
Ответить с цитированием
  (#15 (permalink)) Старый
Matematic Matematic вне форума
Member
 
Аватар для Matematic
 
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
По умолчанию 23.02.2014, 23:44

Да, увидел маленькую ошибку у себя.
Вот исправленный текст
cpp Код:
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <math.h>



static double vseg[] = { 1e9, 1e6, 1e3, 1};
static char dsot[][11] =
{ "",          "сто ",       "двести ",   "триста ",     "четыреста ",
   "пятьсот ",  "шестьсот ",  "семьсот ",  "восемьсот ",  "девятьсот "};
static char ddec[][13] =
{ "",          "десять ",    "двадцать ", "тридцать ",   "сорок ",
   "пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "};
static char dde [][14] =
{ "одиннадцать ", "двенадцать ",  "тринадцать ",
   "четырнадцать ","пятнадцать ",  "шестнадцать ",
   "семнадцать ",  "восемнадцать ","девятнадцать " };
static char ded [][8] =
{ "",          "один ",      "два ",      "три ",        "четыре ",
   "пять ",     "шесть ",     "семь ",     "восемь ",     "девять "};
static char dedt[][6]    = { "одна ", "две " };
static char dseg[][9]    = { "миллиард", "миллион", "тысяч", "рубл" };
static char dsem[][3][5] = {{ " ",  "а ", "ов " },  // миллиард
                             { " ",  "а ", "ов " },  // миллион
                             { "а ", "и ", " "   },  // тысяч
                             { "ь ", "я ", "ей " },  // рублей
                             { "йка","йки","ек"  }}; // копеек

static int
HowTell (long n)
{
   n %= 100;
   if (n >= 10  &&  n <= 20) return  3;
   n %= 10;
   return  n == 1? 1: n <= 4  &&  n > 0? 2: 3;
}

static double
Round (double op)
{
   return  floor(op + 0.5);
}

static double
Round (double op,double pow)
{
   if (pow <= 0.)  return  op;
   if (op>0. && op<pow || op<0. && op>pow) return 0.;
   op = floor(op/pow + 0.5) * pow;
   return  op>0. && op<pow || op<0. && op>pow? 0.: op;
}

char*
WriteSum (double v,char *buf,bool kop,bool up)
{
   buf[0] = 0;
   if (v >= 1e12  ||  v <= 0.009) return buf;
   v = Round(v,0.01);
   for (int seg=0; seg<4; seg++) {
     int vt = int(v / vseg[seg]);
     v -= vseg[seg] * vt;
     if (vt  ||  seg == 3) {
       int how = HowTell(vt);
           // 1 - миллиард   миллион   тысяча рубль  копейка
           // 2 - миллиарда  миллиона  тысячи рубля  копейки
           // 3 - миллиардов миллионов тысяч  рублей копеек
       if (vt) {
         strcat(buf,dsot[vt/100]);  vt %= 100;
         if (vt >= 20  ||  vt <= 10) {
           strcat(buf,ddec[vt/10]);  vt %= 10;
           if (seg == 2  &&  (vt == 1  ||  vt == 2))
                 strcat(buf,dedt[vt-1]);
           else  strcat(buf,ded[vt]);
         } else  strcat(buf,dde[vt-11]);
       } else if (buf[0] == 0)  strcat(buf,"ноль ");
       strcat(buf,dseg[seg]);
       strcat(buf,dsem[seg][how-1]);
     }
   }
   if (kop)
       sprintf(buf+strlen(buf),"%02.0lf копе%s",
                               v*100,
                               dsem[4][HowTell((long)Round(v*100))-1]);

   if (up) CharUpper(buf);
   else    CharUpperBuff(buf,1);
   return  buf;
}




int main()
{char s[1024], *endp;
 char err[30];
 long n;
 char buf[1024], *buf1=buf;

 fgets(s, 1024, stdin);              /*Ввод числа и обработка ошибок ввода. */
 errno=0;
 n = strtol(s, &endp, 10);
 if((endp[0] != '\n' || endp[1] != 0) || errno)
       {CharToOem("Ошибка при вводе числа.\n", err);
        fprintf(stderr, err);
        return 1; }

 if(n<0) {strcpy(buf, "минус "); n=-n; buf1+=6; } /*Случай отрицательных чисел.
                                                    Функция WriteSum() с ними
                                                    работать не способна (при
                                                    попытке передать ей
                                                    отрицательное число
                                                    происходит аварийный сбой
                                                    программы. */


 WriteSum(n, buf1, 0, 0);
 *strstr(buf, "рубл")=0; /*Убираем слово "рубль" из конца получившейся строки,
                           т. е. штопаем нашу программу так (словно она
                           презерватив), чтобы она давала нужный по заданию
                           результат. Можно данную строку из программы убрать,
                           но тогда презерватив будет дырявый. */


 CharToOem(buf, buf);    /*Преобразуем строку buf из кодировки cp1251
                           в кодировку cp866, в которой работает
                           консоль Windows. */

 printf("%s\n", buf);
 return 0; }
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помощи Elatio Lisp 1 28.04.2013 22:25
прошу помощи makcim960713 Любые вопросы от новичков 8 05.07.2012 11:28
Прошу помощи андрей с Разное 0 25.01.2012 21:28
SOS!прошу о помощи! alinaisasha Любые вопросы от новичков 2 19.01.2012 21:40
Прошу помощи!!! vitrum Оценка конфигурации 25 25.12.2011 22:05
Прошу помощи 217351 Любые вопросы от новичков 0 07.12.2011 19:35
прошу помощи vi6 Любые вопросы от новичков 19 27.05.2011 11:47
прошу помощи Эльмира Любые вопросы от новичков 3 27.05.2011 00:50
Найти наименьшее общее кратное для чисел в простом списке evgeniuz74 Lisp 1 19.12.2009 17:58
Найти наибольший общий делитель для чисел в простом списке evgeniuz74 Lisp 0 19.12.2009 17:57
Организация многоязыковой поддержки в простом диалоговом приложении под WIN32 DrDiesel7373 Visual C++ 7 31.07.2008 23:04



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов