Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Помогите по Паскалю! |
Философия, технологии, алгоритмы! |
|
Опции темы |
26.08.2003, 10:41 | #1 |
Модератор
Сообщений: 665
Регистрация: 09.01.2002
Не в сети |
Помогите по Паскалю!
Срочно нужна помощь за большое вознаграждение пивом!
Надо решить пару задач на паскале... Очень надо, пожалуйста помогите! Помогите решить хоть одну...Пиво гарантирую! 1) В массиве содержится информация о зимней сессии 3-го курса. Сведения о каждом студенте (Макс.число студентов - 150) содержат следующие данные : фамилию (до 12 символов), номер группы (от 1 до 7), оценка по 3 предметам (функциональный анализ, численные методы и экономика). Напишите прогу, которая вводит эту информацию и печатает фамилии студентов, имеющих задолжность хотя бы по одному предмету. 2)Пусть даны : натуральное число n и символьная квадратная матрица порядка n. Получите последовательность B1..., Bn из нулей и едениц, в которой Bi = 1 тогда и только тогда, когда в i-ой строке число символов звездочки "*" не меньше числа пробелов. 3) На рекурсию: A0=1 , A1 = 2; An = (An-1 + An-2) / 2 |
26.08.2003, 18:21 | #2 |
Форумец
Сообщений: 4
Регистрация: 21.08.2003
Возраст: 37
Не в сети |
#1
program Students; uses CRT; const MAX_STUDENTS = 150; type TFamilyName = String[12]; TGroup = 1..7; TMark = 1..5; TSubjects = array[1..3] of TMark; TStudentData = record FamilyName : TFamilyName; Group : TGroup; Subjects : TSubjects; end; TStudentList = array[1..MAX_STUDENTS] of TStudentData; var StudentList : TStudentList; nStudents : Word; function GetStudentData(var sd : TStudentData) : Boolean; var S : String; C : Integer; N : Integer; Ret : Boolean; i : Word; begin Ret := True; ClrScr; WriteLn('******* ADD NEW STUDENT *******'); WriteLn; Write('Family Name: '); ReadLn(sd.FamilyName); if Length(sd.FamilyName) < 12 then for i := 1 to 12 - Length(sd.FamilyName) do sd.FamilyName := sd.FamilyName + ' '; Write('Group #: '); ReadLn(S); Val(S, N, C); if (C = 0) and (N >= 1) and (N <= 7) then begin sd.Group := N; Write('Functional Analyze Mark: '); ReadLn(S); Val(S, N, C); if (C = 0) and (N >= 1) and (N <= 5) then begin sd.Subjects[1] := N; Write('Numeric Methods Mark: '); ReadLn(S); Val(S, N, C); if (C = 0) and (N >= 1) and (N <= 5) then begin sd.Subjects[2] := N; Write('Economics Mark: '); ReadLn(S); Val(S, N, C); if (C = 0) and (N >= 1) and (N <= 5) then begin sd.Subjects[3] := N; end else Ret := False; end else Ret := False; end else Ret := False; end else Ret := False; if Ret then WriteLn('Input operation has been done successfully') else WriteLn('Input operation has been failed: Invalid data'); GetStudentData := Ret; end; function AddStudent(const sd : TStudentData) : Boolean; begin if nStudents = MAX_STUDENTS then AddStudent := False else begin Inc(nStudents); StudentList[nStudents] := sd; AddStudent := True; end; end; procedure PrintFailedStudents(Columns : Byte); var i : Word; col : Byte; begin ClrScr; WriteLn('******* FAILED STUDENTS *******' : 12); WriteLn; col := 0; if nStudents > 0 then for i := 1 to nStudents do begin if col = Columns - 1 then WriteLn; with StudentList[i] do begin if (Subjects[1] <= 2) or (Subjects[2] <= 2) or (Subjects[3] <= 2) then begin Write(FamilyName + ' '); col := (col + 1) mod Columns; end; end; end; end; procedure Start; var Command : String; sd : TStudentData; begin Command := ''; while (Command <> 'quit') do begin Write('Command > '); ReadLn(Command); if Command = 'add' then begin if GetStudentData(sd) then if AddStudent(sd) then WriteLn('Add operation has been done successfully') else WriteLn('Add operations has been failed: Too many students'); WriteLn; end else if Command = 'print' then begin PrintFailedStudents(6); WriteLn; ReadLn; end else WriteLn('Command is not recognized'); end; end; begin ClrScr; WriteLn('******* COMMANDS *******'); WriteLn('add - add new student'); WriteLn('print - print families of failed students'); WriteLn('quit - exit program'); ReadLn; ClrScr; Start; end. #3 {$N+} program Recur; type TNatural0 = 0..$7FFFFFFF; function GetA(Index : TNatural0) : Double; begin case Index of 0 : GetA := 1.0; 1 : GetA := 2.0; else GetA := (GetA(Index - 2) + GetA(Index - 1))/2; end; end; var N : TNatural0; begin Write('Index: '); ReadLn(N); WriteLn(GetA(N):10:3); ReadLn; end. |