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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Опять проблема. ПОМОГИТЕ!  (Прочитано 23664 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
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 » new

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

Не будите спашяго дракона.
             Джаффар (Коша)
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 » 

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

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

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines