download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Знам че ви е писнало, но все пак!

Автор
Съобщение
anonymous
Пон, 24.11.08, 10:58
Здравейте на всички! Накратко преместих се в др специалност "Компютарни системи" и следващия семестар ще имам предмет програмни езици! В даскало бях мн зарибен по информатика, но нямах компютар и нещата ги знаех на теория, но не и на практика! Наскоро си взех комп и реших да видя какво знам и усазнах че почти нищо непомня! Накратко започнах от "а и б"! Вижте един програмен код които написах и си кажете мнението!
P.S.Темата се казва така защото: Програмата е на паскал и е решаване на Квадратно уравнение !My_program.pdf
кака.лара
Пон, 24.11.08, 11:18
Компилира си се, работи
Лошото, че цикълът е безкраен. Това под чист ДОС може да се прекъсне само с трите пръста. Направи там някакъв нормален изход от цикъла. И нещо след надписа да натиснеш "Ентър" не чака да натиснеш, ами направо тръгва от началото. Май трябва преди това да изчистиш буфера с едно празно readln? Не знам, може и компилаторът да генерира такъв код. При мен е GNU Pascal.
Малко чиста козметика: в Паскал не се насърчава да използваш goto

Ред: Намерих цяла тема точно за тоя случай.

редактиран от кака.лара на 24.11.08 11:31
electric_cc
Пон, 24.11.08, 12:32
Компютарни
Компютар
Усазнах
За студент, правописните грешки са твърде много.
anonymous
Пон, 24.11.08, 17:15

RE: Знам че ви е писнало, но все пак!

да, не само много, а просто фрапиращи:
” Компютарни - Компютърни
семестар - семестър
компютар - компютър
усазнах - осъзнах
непомня - не помня
код които написах - код, който написах „

6 правописни грешки за 6 реда - това си е за "6"

редактиран от anonymous на 24.11.08 17:17
boy4o
Пон, 24.11.08, 17:45
Напълно допускам, че повечето от тези правописни грешки може да произтичат от това, че текстът първо е писан на латиница и после е кирилизиран. Тъкмо като такъв изглежда.

Относно програмата. Съвсем нормална като за случая. Вместо това goto може да се използва цикъл while с подходяща Булева променлива. Пак тази променлива може да се използва за коректно излизане от цикъла.

Мисля, че по елегантно би било да се обработи ситуацията "не е квадратно уравнение" като се изчисли коренът в случай на линейно уравнение и да се изчислят комплексните корени при d<0. В темата, посочена от каката има примерче за тези ситуации. Но това вече са глезотии.

След реда writeln('Натиснете Enter за вавеждане на нови стойности:'); трябва да има поне някакъв readln, все пак! (каката се е заблудила, че трябва да се чисти буферът )

phrozencrew
Пон, 24.11.08, 20:11
Ех как мило ми става от тоя Pascal! Макар, че и аз доста съм го позабравил.
boy4o е прав, че ще е добре да структурираш малко програмката. Аз бих я написал горе-долу така:
uses Crt;
var a,b,c,x,x1,x2,d : real;
var ch : char;
 
begin
	repeat
		writeln('--==[ MENU ]==--');
		writeln('--==[ 1. Natisni Esc za EXIT');
		writeln('--==[ 2. Proizvolen klavish za da prodyljish');
		ch:=ReadKey;
		case ch of
		#27 : begin
			TextColor(Red);
			WriteLn('EXIT (ESC)');
			end
		else
			writeln('------------------------');
			write('   a=');readln(a);
			write('   b=');readln(b);
			write('   c=');readln(c);
			begin
				if (a=0) Then writeln('   Uravnenieto ne e kvadratno')
				else d:= sqr(b)-4*a*c;
				if d<0 then writeln('   Uravnenieto niama realni koreni!')
				else if d=0 then
                begin
                 x:=-b/(2*a);
                 writeln('x= ',x:1:2);
                end
				else
					begin
						x1:=(-b+sqrt(d))/(2*a); 
						x2:=(-b-sqrt(d))/(2*a);
						writeln();
						writeln('Korenite sa:');
						writeln('   x1= ',x1:1:2);
						writeln('   x2= ',x2:1:2);
						writeln('------------------------');
					end;
			end;
       end;
	until ch=#27;
end.

Даже успях да я компилирам :). Ето и ексето:
ReadKey.zip

boy4o
Вто, 25.11.08, 11:34
Интересна употреба на case!

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.