Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2012, 21:59   #1
Smirnov
 
Регистрация: 09.02.2012
Сообщений: 9
По умолчанию задача с оператором for

у меня паскаль первый раз в жизни и мне задали сделать лабораторную, которая мне никак не поддаётся..помогите пожалуйста укажите на ошибки что не так:
задание: определите изменение средней тепловой скорости электрона в кремнии при изменении температуры от 150К до 350К через 25К
(Mn*V^2)/2= 3*K*T/2
где mn – см. вариант 1;  – скорость; k – постоянная Больцмана (1.3810–23 Дж/К) Т –температура.где m0 – масса покоя электрона (9.1110 –31 кг); mn – эффективная масса электрона ( для кремния mn = 0.26m0

нужно решить с помощью оператора for
вот что у меня получилось:
Код:
const
       K=1.38e-23;
       Mn=9.11e-13 * 0.26;
var
 i:extended;
 Q,m,T1,T2:integer;
 V:extended;

begin
  T1:=150;
  T2:=350;
  m:=25;
  Q:=(T2-T1)/m;
  writeln (Q);
  for i:=1 to Q do
    begin
       T:=T1+(i-1)*m;
       V:=sqrt(3*K*T/Mn);
       Writeln (V);
    end;
end.

Последний раз редактировалось Stilet; 09.02.2012 в 23:05.
Smirnov вне форума Ответить с цитированием
Старый 10.02.2012, 14:22   #2
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Замените
Код:
Q:=(T2-T1)/m;
на
Код:
Q:=(T2-T1) div m;
Q - целого типа простое деление нельзя использовать, т.к. результатом является вещественное число, поэтому использовать надо целочисленное деление.
переменная i должна быть целого типа (integer), т.к. используется в качестве счетчика цикла
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 10.02.2012, 15:14   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

А нагляднее было бы организовать цикл так:
Код:
For T:= (150 div 25) to (350 div 25) do
  begin
     V:=sqrt(3*K*(T*25)/Mn);
     Writeln(V);
  end;
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 10.02.2012 в 15:29.
DiemonStar вне форума Ответить с цитированием
Старый 10.02.2012, 15:18   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
step 25
Это в каком паскале появилось?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.02.2012, 15:26   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это в каком паскале появилось?
Каюсь, грешен... последнее время в VBA много сижу...

поправил немножко, но эффект не тот...
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 10.02.2012 в 15:30.
DiemonStar вне форума Ответить с цитированием
Старый 12.02.2012, 12:28   #6
Smirnov
 
Регистрация: 09.02.2012
Сообщений: 9
По умолчанию а что значит div в чём отличие от простого /

а как решить такую же задачу только не при помощи For а при помощи rереаt и whilе
что нужно поменять?
Smirnov вне форума Ответить с цитированием
Старый 12.02.2012, 21:01   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
а что значит div в чём отличие от простого /
при обычном делении у вас на выходе реальное число, а после div - целое.
Цитата:
а как решить такую же задачу только не при помощи For а при помощи rереаt и whilе
Код:
T := 150;
While T <= 350 do
  begin
     V:=sqrt(3*K*(T*25)/Mn);
     Writeln(V);
     T := T + 25;
  end;

Код:
T := 150;
repeat
     V:=sqrt(3*K*(T*25)/Mn);
     Writeln(V);
     T := T + 25;
until T > 350;
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с оператором множественного выбора. AntoshkaK Паскаль, Turbo Pascal, PascalABC.NET 1 28.11.2011 20:10
Задача с оператором GOTO танкек Паскаль, Turbo Pascal, PascalABC.NET 8 24.10.2011 17:05
задача с оператором case (Pascal) kena Помощь студентам 4 17.05.2009 12:54
проблема с оператором for vakyla Общие вопросы Delphi 9 24.03.2009 20:07