Помогите построить график
    
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
| Страницы: (5) « Первая ... 2 3 [4] 5 все ( Перейти к последнему сообщению ) | 
    Помогите построить график
    
  | 
         
         
         
          
           Сообщ.
           #46
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата  Компилятор сообщает где ошибки и что они означают. Следуй его указаниям. Читай документацию, справочники.Error: Duplicate identifier "I" РеГисТР бУКв в Паскале не имеет значения. I и i - одинаковые идентификаторы. ![]() ![]()     Var I:   LongInt;         i,t:   real;   Приведёнными мною набросками построения функции так и не воспользовалась. Ну и ладно. Помучаешься со своим (если свой) кодом, может, поймёшь разницу.   Добавлено Вдобавок: не пользуйся чужими наработками, если в них ничего не понимаешь. Больше времени потратишь впустую, чем пользы получишь от самостоятельного обучения.  | 
    
| 
         
         
         
          
           Сообщ.
           #47
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата Romtek @  Приведёнными мною набросками построения функции так и не воспользовалась. так Вы мне скажите, в ТУРБО паскале они будут действовать???  | 
    
| 
         
         
         
          
           Сообщ.
           #48
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Если изменить 
        
      Result := на FunctionName := то да. Изменения, как видишь, минимальные.  | 
    
| 
         
         
         
          
           Сообщ.
           #49
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата Prutvel @  в ТУРБО паскале они будут действовать???  Большая часть из того, что здесь написана будет работать и в Турбо Паскале (когда исправишь ошибки, на которые тебе уже указали и на которые указывает компилятор, разумеется). Но если тебе надо Турбо - ты так и говори, а то мечешься, как... <самоцензура>, то ей Лазарус, потом FPC, теперь TP подавай... На кой черт в Лазарусе, скажем, рисовать это все в ручную, кто-нибудь объяснит мне? Компонента Chart что, не существует? Добавить несколько линий с определенным периодом - вот тебе и график функции. Ты для себя сначала реши, что тебе надо, запутать всех постоянным изменением компиляторов, или выбрать что-то дно, и написать, наконец, работоспособный код... А то развели флуда на 50 сообщений. "Это правильно? А это - правильно?" Программа может быть признана правильной только тогда, когда она компилируется, запускается и делает то, что от нее требуется. Твоя программа не прошла ни один из этапов. А если прошла - то покажи в нормальном виде : заархивируй и прикрепи архив к сообщению (специально добавили кнопку "Обзор" прямо в форму быстрого ответа) тот код, который у тебя компилируется, а не тот бред, который ты пишешь постоянно - то лишние буквы, то повторяющиеся идентификаторы, то вообще запрещенные символы в исходнике. Чтоб БЕЗ ИЗМЕНЕНИЙ (открыл присоединенный файл, нажал F9. Я больше ничего делать не хочу. Это твое задание, ты его и решай, я могу только посмотреть, правильно ли оно работает) он прошел хотя бы этап компиляции и программа хоть как-то запустилась. Потом будем продолжать. Не скомпилировался? Извини, здесь не онлайн Pascal Compiler, тебе программа пишет где ошибка - будь добра разобраться, что не так, и исправить. А пока нет такого кода - говорить больше не о чем.  | 
    
| 
         
         
         
          
           Сообщ.
           #50
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          вот этот компилируется в турбо: 
        
      function FMod (a, b: real): real; begin FMOD:= a - b * Trunc(a / b); end; Function i(t:real): real; Const Im=0.57; L=0.1; tau=62; f1=5.37; f2=8.06; T1=186;T2=124; T3=310; begin if fmod(t,T3)<tau then i:=Im; if (fmod(t,T3)>=tau) and (fmod(t,T3)<T1) then I:=-Im; if (fmod(t,T3)>=T1) and (fmod(t,T3)<(T1+tau)) then I:=Im; if (fmod(t,T3)>=T1+tau) and (fmod(t,T3)<T3) then I:=-Im; end; begin end.  | 
    
| 
         
         
         
          
           Сообщ.
           #51
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          вот программа. Она почти работает. Но компиллятор выводит сразу 4 ошибки на одно выражение - function PixelCoordT(t: Double): Integer; что делать?)   
        
      Прикреплённый файл  плавл_вариант.rar (0.7 Кбайт, скачиваний: 170)
		 | 
    
| 
         
         
         
          
           Сообщ.
           #52
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          function FMod (a, b: double): double; 
        
      begin FMOD:= a - b * Trunc(a / b); end; Function i(t:double): Double; Const Im=0.57; L=0.1; tau=62; f1=5.37; f2=8.06; T1=186;T2=124; T3=310; begin if fmod(t,T3)<tau then i:=Im; if (fmod(t,T3)>=tau) and (fmod(t,T3)<T1) then I:=-Im; if (fmod(t,T3)>=T1) and (fmod(t,T3)<(T1+tau)) then I:=Im; if (fmod(t,T3)>=T1+tau) and (fmod(t,T3)<T3) then I:=-Im; end; var k,N:integer;DataTmax,DataTmin, DataImax,DataImin: real; t,i1: array[0..300] of real; begin DataTmax:=t[0]; DataTmin:=t[0]; for k:=1 to N do begin if t[k]>DataTmax then DataTmax:=t[k]; if t[k]<DataTmin then DataTmin:=t[k]; end; DataImax:=i1[0]; DataImin:=i1[0]; for k:=1 to N do begin if i1[k]>DataImax then DataImax:=i1[k]; if i1[k]<DataImin then DataImin:=i1[k]; end; function PixelCoordT(t:double): Integer; begin (* прибавляем половину ширины холста, чтобы центр осей был в центре экрана *) i := Round( CanvasWidth / 2.0 + t * Kt) end; function PixelCoordI (i: Double): Integer; begin (* вычитаем из половины высоты холста, иначе график будет перевёрнутым*) i := Round( CanvasHeight / 2.0 - f(t) * Ki) end; begin end  | 
    
| 
         
         
         
          
           Сообщ.
           #53
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Prutvel 
        
      Извините, но Вы совершенно НЕ читаете того, что Вам пишут. Еще раз перечитайте посты Romtek'a и volvo877. Внимательно! Ну, не будет работать Ваш код, "отрисовывающий графику". Нигде. Ни в Лазарусе, ни в FP, ни в TP.  | 
    
| 
         
         
         
          
           Сообщ.
           #54
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата Prutvel @  Она почти работает.  хоть немного код структурируйте ![]() ![]() function FMod (a, b: double): double; begin    FMOD:= a - b * Trunc(a / b); end; Function i(t:double): Double; Const   Im=0.57; L=0.1; tau=62; f1=5.37; f2=8.06; T1=186;T2=124; T3=310; begin   if fmod(t,T3)<tau then     i:=Im;   if (fmod(t,T3)>=tau) and (fmod(t,T3)<T1) then     I:=-Im;   if (fmod(t,T3)>=T1) and (fmod(t,T3)<(T1+tau)) then     I:=Im;   if (fmod(t,T3)>=T1+tau) and (fmod(t,T3)<T3) then     I:=-Im; end; var   k,   N:integer;   DataTmax,   DataTmin,   DataImax,   DataImin: real;   t,   i1: array[0..300] of real; begin   DataTmax:=t[0];   DataTmin:=t[0];   for k:=1 to N do     begin       if t[k]>DataTmax then DataTmax:=t[k];       if t[k]<DataTmin then DataTmin:=t[k];     end;   DataImax:=i1[0];   DataImin:=i1[0];   for k:=1 to N do     begin       if i1[k]>DataImax then DataImax:=i1[k];       if i1[k]<DataImin then DataImin:=i1[k];     end;  function PixelCoordT(t: Double): Integer;  begin       (*  ЇаЁЎ ў«пҐ¬ Ї®«®ўЁг иЁаЁл е®«бв , зв®Ўл жҐва ®бҐ© Ўл« ў жҐвॠнЄа   *)       i := Round( CanvasWidth / 2.0 + t * Kt)  end; function PixelCoordI (i: Double): Integer; begin     (*  ўлзЁв Ґ¬ Ё§ Ї®«®ўЁл ўлб®вл е®«бв , Ё зҐ Ја дЁЄ Ўг¤Ґв ЇҐаҐўсагвл¬*)     i := Round( CanvasHeight / 2.0 - f(t) * Ki) end; begin end. почему PixelCoordT и PixelCoordI оказались внутри основного блока программы и зачем последний begin? Вас уже просили привести полный код - этот обрезок Цитата Оззя @    не будет работать  | 
    
| 
         
         
         
          
           Сообщ.
           #55
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          ну помогите!!! пожалуйста, кто-нибудь, напишите работоспособный код. Я уже третью неделю и днем и ночью сижу  
        
         уже всю тетрадь исписала. помогите, пожалуйста!!!!!     | 
    
| 
         
         
         
          
           Сообщ.
           #56
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Прочти заново предыдущую страницу темы и попытайся написать сама, добавляя функциональность по малу. 
        
      Суп ведь также варится, поочерёдно добавляя продукты.  | 
    
| 
         
         
         
          
           Сообщ.
           #57
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          вы мне сказали, что через trunc надо функцию задавать. Паскаль не строит такой график - выводит координатную ось, и фиолетовый экран  
        
           ПОМОГИТЕ!!!!!   | 
    
| 
         
         
         
          
           Сообщ.
           #58
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата  выводит координатную ось, и фиолетовый экран Кто выводит? Где выводит?   Предыдущая Ваша программа не должна НИЧЕГО выводить. В принципе. А новой версии Вы не предоставляете.   А уроки телепатии я в школе прогуливал.     | 
    
| 
         
         
         
          
           Сообщ.
           #59
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Спасибо большое ВСЕМ, кто принял участие в моем вопросе! График тока вроде бы получился. Не могли бы вы подсказать, как точки этого графика перекинуть в эксель?   
        
       | 
    
| 
         
         
         
          
           Сообщ.
           #60
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Да и еще - если не затруднит, подскажите, пожалуйста, как лучше дифференцирование в паскале сделать: надо напряжение через ток найти: 
        
      U=L*(dI/dt) я вот думала по точкам, а как их задавать-то - то есть прямо массив делать типа for k:=1 to N do U(k):=L*I(t(k)-I(t(k)-dt)/dt) как это правильно сделать?)  |