Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Опять проблема. ПОМОГИТЕ!  (Прочитано 23573 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Oksy
Гость
« : 11-03-2006 15:53 » 

Здравствуйте!
эта часть программы предназначина для ввода числовых данных с клавиатуры в графическом режиме Turbo C 3.0.
Не могу понять, что здесь не так: Здесь была моя ладья...

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>

void enter_data(int c1, int tx, int ty, float *a)
{
 int c[]={0,0};
 float m=0, n=1;

 moveto(tx,ty);
 while(c[1]!=13)
 {
  c[1]=getch();
  setcolor(c1);

  if(c[1]==48){ outtextxy(tx,ty,"0"); tx+=8; m=m*10+0;}
  if(c[1]==49){ outtextxy(tx,ty,"1"); tx+=7; m=m*10+1;}
  if(c[1]==50){ outtextxy(tx,ty,"2"); tx+=7; m=m*10+2;}
  if(c[1]==51){ outtextxy(tx,ty,"3"); tx+=7; m=m*10+3;}
  if(c[1]==52){ outtextxy(tx,ty,"4"); tx+=7; m=m*10+4;}
  if(c[1]==53){ outtextxy(tx,ty,"5"); tx+=7; m=m*10+5;}
  if(c[1]==54){ outtextxy(tx,ty,"6"); tx+=7; m=m*10+6;}
  if(c[1]==55){ outtextxy(tx,ty,"7"); tx+=7; m=m*10+7;}
  if(c[1]==56){ outtextxy(tx,ty,"8"); tx+=7; m=m*10+8;}
  if(c[1]==57){ outtextxy(tx,ty,"9"); tx+=7; m=m*10+9;}
  if(c[1]==46)
  {
   outtextxy(tx-1,ty,"."); tx+=5;
   while(c[1]!=13)
   {
    c[1]=getch();
    if(c[1]==48){ outtextxy(tx,ty,"0"); tx+=8; m=m*10+0; n*=10;}
    if(c[1]==49){ outtextxy(tx,ty,"1"); tx+=7; m=m*10+1; n*=10;}
    if(c[1]==50){ outtextxy(tx,ty,"2"); tx+=7; m=m*10+2; n*=10;}
    if(c[1]==51){ outtextxy(tx,ty,"3"); tx+=7; m=m*10+3; n*=10;}
    if(c[1]==52){ outtextxy(tx,ty,"4"); tx+=7; m=m*10+4; n*=10;}
    if(c[1]==53){ outtextxy(tx,ty,"5"); tx+=7; m=m*10+5; n*=10;}
    if(c[1]==54){ outtextxy(tx,ty,"6"); tx+=7; m=m*10+6; n*=10;}
    if(c[1]==55){ outtextxy(tx,ty,"7"); tx+=7; m=m*10+7; n*=10;}
    if(c[1]==56){ outtextxy(tx,ty,"8"); tx+=7; m=m*10+8; n*=10;}
    if(c[1]==57){ outtextxy(tx,ty,"9"); tx+=7; m=m*10+9; n*=10;}
   }
  }
 }
 *a=m/n;
}

void Enter_RGT(int c1, float *C)
{
 cleardevice();
 setcolor(c1);
 outtextxy(100,100," Parameter C=");
 enter_data(c1,204,100,&*C);
}

int main(void)
{
 int gdriver = VGA, gmode = VGAHI, errorcode;
 initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
 errorcode = graphresult();
 if (errorcode != grOk)
 {
  printf("Graphics error: %s\n", grapherrormsg(errorcode));
  printf("Press any key to halt:");
  getch();
  exit(1);
 }

 int col1=3;
 float *C;

 Enter_RGT(col1, &*C);

 char res[20];                                //начиная с этого места что-то здесь не правильно
 sprintf(res, "%f", *C);                   //программа не может завершиться нормально
 outtextxy(150,200, res);              //и вылетает из DOS'а в Windows
 getch();   

 closegraph();
 return 0;
}
« Последнее редактирование: 15-12-2007 20:38 от Алексей1153++ » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 11-03-2006 16:08 » 

Начнем с самого начала
Код:
float *C;
char res[20];                                //начиная с этого места что-то здесь не правильно
 sprintf(res, "%f", *C);                   //программа не может завершиться нормально
Это хорошо, что ты определил указатель. А кто будет выделять память под переменную?
Надо делать
Код:
float *C=new float;
Дальнейший бред
Код:
Enter_RGT(col1, &*C);
Я думаю был попыткой обойти ошибку, из-за которой происходит вылет. Тут нужно просто сделать так:
Код:
Enter_RGT(col1, C);
Тут тот же самый бред
Код:
void Enter_RGT(int c1, float *C)
{
 cleardevice();
 setcolor(c1);
 outtextxy(100,100," Parameter C=");
 enter_data(c1,204,100,&*C);
}


Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 11-03-2006 22:12 » 

Я, конечно, не в тему, но у меня с пятницы по личным причинам условный рефлекс обострился на такое:
Цитата
if(c[1]==48){ outtextxy(tx,ty,"0"); tx+=8; m=m*10+0;}
  if(c[1]==49){ outtextxy(tx,ty,"1"); tx+=7; m=m*10+1;}
  if(c[1]==50){ outtextxy(tx,ty,"2"); tx+=7; m=m*10+2;}
  if(c[1]==51){ outtextxy(tx,ty,"3"); tx+=7; m=m*10+3;}
  if(c[1]==52){ outtextxy(tx,ty,"4"); tx+=7; m=m*10+4;}
  if(c[1]==53){ outtextxy(tx,ty,"5"); tx+=7; m=m*10+5;}
  if(c[1]==54){ outtextxy(tx,ty,"6"); tx+=7; m=m*10+6;}
  if(c[1]==55){ outtextxy(tx,ty,"7"); tx+=7; m=m*10+7;}
  if(c[1]==56){ outtextxy(tx,ty,"8"); tx+=7; m=m*10+8;}
  if(c[1]==57){ outtextxy(tx,ty,"9"); tx+=7; m=m*10+9;}
Не проще ли:
Код:
if(c[1] >= '0' && c[1] <= '9')
{
  char s[2];
  sprinf(s, "%c", (char)c[1]);
  outtextxy(tx, ty, s);
  tx += 7;
  m = m * 10 + (c[1] - '0');
}
?

А ещё лучше довольно странный массив c сделать типа char, и писать читаемый символ в c[0], тогда строчка будет готова автоматически, и sprintf не нужен будет с буфером s.
« Последнее редактирование: 04-12-2007 21:14 от Алексей1153++ » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 11-03-2006 22:16 » 

dimka, Легче. Просто человек трудоголик. Не любит облегчать себе жизнь. Второй вариант (что скорее всего) технология Copy-Paste в действии.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Oksy
Гость
« Ответ #4 : 12-03-2006 06:21 » 

Finch, по поводу дальнейшего бреда, функция Enter_RGT - функция, "изменяющая значения своих фактических параметров"(по Страуструпу). Если можете предложить другой вариант решения данной проблемы (а именно, вызываемая в main() функция должна изменять значения параметров определенных в main()), предлагайте, буду очень благодарна.
Записан
Oksy
Гость
« Ответ #5 : 12-03-2006 06:42 » 

dimka, действительно, так проще. А не могли бы Вы мне за одно Улыбаюсь показать алгоритм перемещения курсора в меню? У меня это выглядит так:
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream.h>
void block(int x, int y, int a, int b, int c)
{
 setcolor(c);
 int poly[]={x-a/2,y-b/2,x+a/2,y-b/2,x+a/2,y+b/2,x-a/2,y+b/2,x-a/2,y-b/2};
 drawpoly(5,poly);
}

void window(int h, int c, int c2)
{
 int r=20;
 setcolor(c2);
 line(h,h+r,h,480-h-r);
 line(640-h,h+r,640-h,480-h-r);
 line(h+r,h,640-h-r,h);
 line(h+r,480-h,640-h-r,480-h);
 arc(h+r,h+r,90,180,r);
 arc(640-h-r,h+r,0,90,r);
 arc(h+r,480-h-r,180,270,r);
 arc(640-h-r,480-h-r,-90,0,r);
 setfillstyle(1,c);
 floodfill(320,240,c2);
}

void kursor(int x, int y, int a, int b, int c)
{
 setcolor(c);
 int d=3, k=b/10;
 int p1[]={ x-a/2-d,y-b/2+k*d,  x-a/2-d,y-b/2-d,  x-a/2+k*d,y-b/2-d},
     p2[]={ x+a/2-k*d,y-b/2-d,  x+a/2+d,y-b/2-d,  x+a/2+d,y-b/2+k*d},
     p3[]={ x+a/2+d,y+b/2-k*d,  x+a/2+d,y+b/2+d,  x+a/2-k*d,y+b/2+d},
     p4[]={ x-a/2+k*d,y+b/2+d,  x-a/2-d,y+b/2+d,  x-a/2-d,y+b/2-k*d};
 drawpoly(3,p1);
 drawpoly(3,p2);
 drawpoly(3,p3);
 drawpoly(3,p4);
 moveto(x-a/2+9*d,y-d);
}

void RGT(int c1, int c2)
{
 cleardevice();
 int otstup=10;
 window(otstup,c2,c1);
 setcolor(c1);
 moveto(otstup+185,otstup+100);
 outtext(" Ѓ«®Є а ббзҐв  Ј®аҐ­Ёп в®Ї«Ёў  ");
 moveto(otstup+510,otstup+440);
 outtext("Esc - ­ § ¤");
}

void RNM(int c1, int c2)
{
 cleardevice();
 int otstup=10;
 window(otstup,c2,c1);
 setcolor(c1);
 moveto(otstup+185,otstup+100);
 outtext(" Ѓ«®Є а ббзҐв  ­ ЈаҐў  ¬Ґв ««  ");
 moveto(otstup+510,otstup+440);
 outtext("Esc - ­ § ¤");
}

void RTB(int c1, int c2)
{
 cleardevice();
 int otstup=10;
 window(otstup,c2,c1);
 setcolor(c1);
 moveto(otstup+185,otstup+100);
 outtext("Ѓ«®Є а ббзҐв  ⥯«®ў®Ј® Ў « ­б ");
 moveto(otstup+510,otstup+440);
 outtext("Esc - ­ § ¤");
}

void KUP(int c1, int c2)
{
 cleardevice();
 int otstup=10;
 window(otstup,c2,c1);
 setcolor(c1);
 moveto(otstup+185,otstup+100);
 outtext(" Љ« ўЁиЁ гЇа ў«Ґ­Ёп Їа®Ја ¬¬®©: ");
 moveto(otstup+510,otstup+440);
 outtext("Esc - ­ § ¤");
}
void EXT(int c1, int c2)
{
 cleardevice();
 int otstup=10;
 window(otstup,c2,c1);
 setcolor(c1);
 moveto(otstup+185,otstup+200);
 outtext("„Ґ©б⢨⥫쭮 е®вЁвҐ ўл©вЁ?!");
 moveto(otstup+185,otstup+220);
 outtext("         Enter - ¤ ");
 moveto(otstup+510,otstup+440);
 outtext("Esc - ­ § ¤");
}

void start(int c1, int c2)
{
 int otstup=10;
 int p[]={0,0};
 int y, i=1, d=20;

 while(p[1]!=68)
 {
  go:
  if(i==1) y=143;
  if(i==2) y=193;
  if(i==3) y=293;
  if(i==4) y=343;
  if(i==5) y=393;
  if(i==6) y=443;
  window(otstup,c2,c1);
  block(318,143,260,d,c1);
  block(318,143+50,260,d,c1);
  block(318,143+100,260,d,c1);
  block(318,143+150,260,d,c1);
  block(318,143+200,260,d,c1);
  block(318,143+250,260,d,c1);
  setcolor(c1);
  moveto(otstup+100,otstup+10);
  outtext("Ља б­®пабЄЁ© ѓ®бг¤ аб⢥­­л© ’Ґе­ЁзҐбЄЁ© “­ЁўҐабЁвҐв");
  moveto(otstup+230,otstup+30);
  outtext("Љ дҐ¤а  ⥯«®дЁ§ЁЄЁ");
  moveto(otstup+185,otstup+130);
  outtext(" Ѓ«®Є а ббзҐв  Ј®аҐ­Ёп в®Ї«Ёў ");
  moveto(otstup+185,otstup+180);
  outtext(" Ѓ«®Є а ббзҐв  ­ ЈаҐў  ¬Ґв «« ");
  moveto(otstup+185,otstup+230);
  outtext("Ѓ«®Є а ббзҐв  ⥯«®ў®Ј® Ў « ­б ");
  moveto(otstup+185,otstup+280);
  outtext(" Љ« ўЁиЁ гЇа ў«Ґ­Ёп Їа®Ја ¬¬®©");
  moveto(otstup+185,otstup+330);
  outtext("  Ќ з «® ўлЇ®«­Ґ­Ёп Їа®Ја ¬¬л");
  moveto(otstup+185,otstup+380);
  outtext("      ‚л室 Ё§ Їа®Ја ¬¬л!");
  moveto(otstup+90,otstup+440);
  outtext("Џа®звЁвҐ ўбҐ Їг­Євл ЇҐаҐ¤ ­ з «®¬ ўлЇ®«­Ґ­Ёп Їа®Ја ¬¬л!");
  kursor(318,y,260,d,c1);

  p[1]=getch();                //Вот соббственно для чего такой странный массив (в один и тот же массив считываются
                                       //коды простых (буквы, цифры) и коды особых клавиш (F1...F12, стрелки))
                                       //если без массива, то программа глючит.
   if( (p[1]==72)||(p[1]==80)||(p[1]==13))
   {
    if(p[1]==72) if(i>1) { i--; kursor(318,y,260,d,c2); y-=50; kursor(318,y,260,d,c1); }
    if(p[1]==80) if(i<6) { i++; kursor(318,y,260,d,c2); y+=50; kursor(318,y,260,d,c1); }
    if(p[1]==13)
      {
       if(i==1) RGT(c1,c2);
       if(i==2) RNM(c1,c2);
       if(i==3) RTB(c1,c2);
       if(i==4) KUP(c1,c2);
       if(i==5) {p[1]=68; goto end;}
       if(i==6) {EXT(c1,c2); p[1]=getch(); if(p[1]==13) exit(0); if(p[1]==27) {p[1]=0; cleardevice(); goto go;} else {;}}
       m1:
       p[1]=getch();
       if(p[1]==27)
       {
        cleardevice(); goto go;
       }
       else
       goto m1;
      }
   }
   else {;}
  end:
 }
}

int main(void)
{
 int gdriver = VGA, gmode = VGAHI, errorcode;
 initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
 errorcode = graphresult();
 if (errorcode != grOk)
 {
  printf("Graphics error: %s\n", grapherrormsg(errorcode));
  printf("Press any key to halt:");
  getch();
  exit(1);
 }

 int col1=3, col2=0;
 start(col1,col2);

 float *C, *H, *N, *O, *S, *W, *A, *n, *t_air, *t_fuel;

// Отсюда начинается основная часть программы(расчет)

 closegraph();
 return 0;
}
« Последнее редактирование: 12-03-2006 06:44 от Oksy » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 12-03-2006 10:27 » 

Это расценивать как предложение мне написать оконный менеджер? Спасибо, лет 6 назад я свой написал и пользовался им, правда там ООП использовалось - показалось удобнее.

Особенно это понравилось:
Цитата
if(p[1]==27)
       {
        cleardevice(); goto go;
       }
       else
       goto m1;
В природе существуют оператор continue и циклы. Улыбаюсь

Рекомендация тут одна - писать код, пригодный для повторного использования.

P.S. Что особо отрадно, так это полное отсутствие комментариев. Читатель сам должен догадываться, какие фигуры рисуются. Улыбаюсь Если прямоугольник с закруглёнными углами в качестве окна ещё угадывается, то drawpoly - самая лучшая функция для отрисовки произвольных фигур. Ну а для пущего развлечения названия переменных однобуквенные, а функций - трёхбуквенные. Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 12-03-2006 10:41 » 

Что же касается массива типа int z[2] для ввода нажатых клавиш, то обработка построена неверно. В предложенной схеме не различаются обычные символы, например, "P", и коды нажатых клавиш, например, "arrow down". Для вашей программы [Shift]+[P] и [Arrow down] не различаются. Поэтому и массив вам не нужен - вы всегда работаете лишь с элементом [1].

Вот если бы они различались, тогда бы, действительно, мог бы пригодиться массив:
Код:
p[1] = !(p[0] = getch()) ? getch() : '\0';
...
if(!p[0])
{
   if(p[1] == 'P') ... ; // arrow down
   ...
}
if(p[0] == 'P') ... ; // Shift+P
а то и вообще без всяких массивов
Код:
switch(getch())
{
   case 0 :
      switch(getch())
      {
          case 59 : // F1
              ...
              break;
           ...
      }
      break;
   case 27 : // Esc
      ...
      break;
    ...
}
« Последнее редактирование: 04-12-2007 21:17 от Алексей1153++ » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #8 : 12-03-2006 13:18 » 

Finch, по поводу дальнейшего бреда, функция Enter_RGT - функция, "изменяющая значения своих фактических параметров"(по Страуструпу). Если можете предложить другой вариант решения данной проблемы (а именно, вызываемая в main() функция должна изменять значения параметров определенных в main()), предлагайте, буду очень благодарна.
Я не буду прерикаться, где она меняет и что. Ты выделяеш память в куче. В функции main у тебя только ссылка на данное выделение. Уж саму ссылку тебе ненужно менять.
Для твоего случая:
Код:
float *C=new float;
 Enter_RGT(col1, C);
Если память под переменную выделяется в самой функции (в стеке)
Код:
float C;
 Enter_RGT(col1, &C);
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Oksy
Гость
« Ответ #9 : 12-03-2006 15:51 » 

Спасибо за помощь, парни!
И не судите строго, я ведь еще только учусь:)! Раньше ни когда не программировала, это мой первый опыт. Где я учусь, программирование преподают только на Excel:) и 1C, вот и приходится осваивать самостоятельно по Help'у и литературе.
« Последнее редактирование: 15-12-2007 20:39 от Алексей1153++ » Записан
Oksy
Гость
« Ответ #10 : 12-03-2006 16:36 » 

dimka, а какая функция более подходит для отрисовки произвольных фигур?
А на счет однобуквенных названий параметров, так это потому что параметрами являются углерод, азот, кислород...
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #11 : 12-03-2006 20:13 » 

Если тебе нужно именно произвольные фигуры, то полиномами легче рисовать. Просто нужно делать комент, а вообше что это будет. Через полгода просто забудеш сама, что это было.
Такие конструкции:
Код:
  if(i==1) y=143;
  if(i==2) y=193;
  if(i==3) y=293;
  if(i==4) y=343;
  if(i==5) y=393;
  if(i==6) y=443;
Я решаю через формулу, если есть какая либо зависимость между цифрами. У тебя я ее не наблюдаю, тогда такое решение:
Код:
const int kory[]={143, 193, 293, 343, 393, 443};
y=kory[i-1];
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Oksy
Гость
« Ответ #12 : 13-03-2006 06:06 » 

Finch, это будет прога для расчета теплового и аэродинамичаского расчета вентиляционного канала пром. здания. Согласна, что через полгода в этом коде я вряд ли разберусь, но оно мне и не надо будет. А вообще можно было бы обойтись и без Си, вариант, вполне пригодный для конструкторского расчета уже есть в Excel, но охота чего-то большего и красившего:). А для этого нужно было научиться какому либо языку с нуля. Посоветовали Си. Вот теперь и парюсь: книг разных набрала(Страуструп, Керниган/Ричи, Джехани, Аммерал, Шилдт). По собственному опыту знаю, если хочешь научиться что-то деллать - бери и делай, постепенно научишься. Думаю, так и программировании - если хочешь научиться писать коды, то бери готовые и анализируй(разумеется для начала азы нужно в книжках почитать и, желательно, усвоить). Не посоветуете ли вы мне чего нибудь интересного в этом направлении, парни?Улыбаюсь Книжек уже достаточно.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #13 : 13-03-2006 13:53 » 

Что именно интересное, исходные коды? Или задачи?
Если просто тренируешся, можно порешать олимпиадные задачи по программированию. Есть такие, что заставляют мозги кипеть. Не мешало бы почитать книги по элементарным алгоритмам. В этом направлении есть много книг, Одна из наиболее известных это трехтомник Д.Кнут "Исскуство программирования". Она с сильным математическим уклоном, но дает достаточно материала, для понимания и размышления.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Oksy
Гость
« Ответ #14 : 13-03-2006 17:36 » 

И задачи, и исходные коды к ним с пошаговыми коментариями, что в какой строке происходит, для чего оно нужно и, как это можно подругому. Так, по-моему, проще всего научиться:/
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #15 : 13-03-2006 17:47 » 

Поброди тут http://algolist.manual.ru/
Там собраны описание и исходники некоторых алгоритмов. Лучше всего самой сесть писать, хотя бы теже самые крестики нулики. И по ходу пьесы уже задавать вопросы. Когда изучаеш иностранный язык, нужно активно стараться говорить и использовать его. Пасивное чтение на нем, не выробатает активный словарный запас. Также и в программировании. Нужно самому решать задачу. Конечно подсматривать, как другие делают это хорошо. Но эти методы нужно тут же применять самому в своих задачах. Чтобы закрепить на собственом примере.
« Последнее редактирование: 13-03-2006 17:53 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Oksy
Гость
« Ответ #16 : 13-03-2006 18:02 » 

Спасибо,Finch, за совет, полностью разделяю.
А что ты там говорил об олимпиадных задачах?Улыбаюсь Может и на них ссылочка имеется?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #17 : 13-03-2006 18:27 » 

http://neerc.ifmo.ru/school/
http://g6prog.narod.ru/taskshtml.html
http://acm.mipt.ru/judge/bin/problems.pl
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Oksy
Гость
« Ответ #18 : 15-03-2006 08:22 » 

Finch, не подскажешь, как разобраться с работой в Dev-Cpp? Говорят хорошая и удобная штука для программирования в си. Найти - нашла, установить - установила, а даже элементарный "Hello, World!" запустить не смогла:
#include <conio.h>
void main()
{
printf("Hello, World!");
}
Компилятор выдает сообщение, что функция 'main' должна возвращать значение int. Как-то раз я пробовала на настроенном работать, так там все просто, все так же, как и в TurboC под DOS - Ctrl+F9 и все начинается.
И еще не понятно с инклудами, все ли из TurboC есть в Dev-Cpp? Я некоторых не нашла:(
Может посоветуешь почитать что-нибудь о Dev-Cpp?
Заранее спасибо!
« Последнее редактирование: 15-12-2007 20:39 от Алексей1153++ » Записан
nikedeforest
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 15-03-2006 09:11 » 

Цитата
#include <conio.h>
void main()
{
printf("Hello, World!");
}
Компилятор выдает сообщение, что функция 'main' должна возвращать значение int.
Хм, попробуй так тогда
Код:
#include "stdio.h"

int main()
{
printf("Hello World");
return 1;
}
« Последнее редактирование: 15-12-2007 20:40 от Алексей1153++ » Записан

ещё один вопрос ...
Oksy
Гость
« Ответ #20 : 15-03-2006 10:27 » 

Вот теперь получилось.
Спасибо, nikedeforest!
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #21 : 15-03-2006 12:08 » 

А почему
Код:
#include "stdio.h"
а не
Код:
#include <stdio.h>
?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
nikedeforest
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #22 : 15-03-2006 13:03 » 

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

ещё один вопрос ...
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #23 : 15-03-2006 14:29 » 

Зачем же узнавать. Кавычки - поиск в текущем каталоге, угловые скобки - в системном.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
nikedeforest
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #24 : 15-03-2006 14:50 » new

Ну да. Только, если в текущем не находит, то начинает искать в системном. Для угловых скобок кажется это тоже верно.
Записан

ещё один вопрос ...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines