|
|
#1
|
|||
|
|||
6 задач по Delphi
Попросили сделать задачи, а времени их делать нет(( Некоторые несложные... А вот с №1 я намучался). Но так и не сделал.
№1 В матрице А (N,K) удалить строки и столбцы, в которых есть хотя бы один нулевой элемент (процедурой, чтоение из файла + запись в файл) №2 Составить программу с функцией имеющей 1 параметр (одномерный массив), Функция задана условием: f(x1, x2, ..., xn)= СУММА(i от 1 до n)[ x(i-тое)в_степени_k + 1 ] , если -1<x(i-тое)<1 f(x1, x2, ..., xn)= 0 - иначе Использовать модули. №3 Вычислить значение квадр.корня y=корень из х, для 100 значений х по итер.формуле Герона у(i-тое+1) = 1/2(У(i-тое) + Х(j-тое)/У(i-тое)); У(нулевое)= (1+Х(i-тое))/2 Точность Е = 0,001, где Е = (У(i-тое+1)-У(i-тое)) Использовать рекурсию №4 Дана ведомость абитуриентов, сдавших экзамены в универ-е. В каждой строке данной ведомости - фамилия студента и оценки по 3-м дисциплинам. Определить средний балл по институту и распечатать список абитуриентов, чей балл выше, чем по универ-у. Список сортируется по средн. баллу в порядке убывания. + Возможность добавлять/удалять, смотреть список. №5 Формируем множество y и выделяем из него подмножество y1, которое представляет из себя глухие согласный, входящие в y. №6 Y=(X1\X2) . Вывести y , делящиеся на 3 без остатка. X1 = {1,2,3,4,5,6} X2 = {1,3,4,5,6} ____________ 1-2-3 самые нужные! ____________ Спасибо. |
#2
|
||||
|
||||
номер 6 прикольнул)
сделай 2 цикла... на х1 и х2... во внутреннем цикле сделай проверку: Код:
if (x1 mod x2 = 0) and //Если остаток от деления х1/х2 не ноль - то при делении на три целого числа мы 100% не получим ((x1 div x2) mod 3 = 0) //Если остаток (x1/x2) / 3 = 0, то числа - искомые then ...; //тут выводим их... Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
mAnah, тут большинство задач элементарно решаються.
При чем такие уже заезженные, основные элементы которых можно найти в любом учебнике. Другое дело решать какую-то уникальную интересную задачу. Если найдешь такую - пиши, решу. А так тебе прямяком в раздел "Работа" Последний раз редактировалось Konrad, 12.05.2009 в 23:20. |
#4
|
|||
|
|||
№1
В матрице А (N,K) удалить строки и столбцы, в которых есть хотя бы один нулевой элемент (процедурой, чтоение из файла + запись в файл) Вот эту не представляю, как элементарно решить... |
#5
|
||||
|
||||
Очень даже элементарно. Только тут надо знать структуру файла в котором храниться матрица.
Допустим структура текстового файла такая: в первых двух строках хранятся размеры X,Y матрицы, потом идет X*Y строк с данными. Код тогда будет примерно таким: Код:
program MatrixDemo; {$APPTYPE CONSOLE} uses SysUtils; type TZeroPoint = record i,j:integer; end; var tf:TextFile; MaxX,MaxY:integer; i,j:integer; m,n:integer; z:integer; data:array of array of integer; zeropoints:array of TZeroPoint; begin AssignFile(tf,'F:\trash\matrix.txt'); Reset(tf); ReadLn(tf,MaxX); ReadLn(tf,MaxY); SetLength(data,MaxX); for i:=Low(data) to High(data) do SetLength(data[i],MaxY); //Читаем матрицу for i:=Low(data) to High(data) do for j:=Low(data[i]) to High(data[i]) do begin Readln(tf,z); data[i,j]:=z; if data[i,j]=0 then //Сразу запоминаем позиции ноликов begin SetLength(zeropoints,Length(zeropoints)+1); zeropoints[High(zeropoints)].i:=i; zeropoints[High(zeropoints)].j:=j; end; end; //Чистим матрицу по позициям for i:=low(zeropoints) to High(zeropoints) do begin for m:=Low(data[zeropoints[i].j]) to High(data[zeropoints[i].j]) do data[zeropoints[i].j,m]:=0; for n:=Low(data) to High(data) do data[n,zeropoints[i].i]:=0; end; CloseFile(tf); AssignFile(tf,'F:\trash\matrix2.txt'); ReWrite(tf); WriteLn(tf,MaxX); WriteLn(tf,MaxY); for i:=Low(data) to High(data) do for j:=Low(data[i]) to High(data[i]) do WriteLn(tf,data[i,j]); CloseFile(tf); ReadLn; end. А теперь о насущном Подобные просьбы следует помещать в раздел "Работа", здесь не общество альтруистов. Впредь я буду просто удалять такие темы. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#6
|
|||
|
|||
Задача про студентов. Делаю в Паскале)
Код:
Uses crt; Const fname='students.dat'; n=3; {Кол-во предметов за сессию} Type st=record fam:string; {Фамилия} oc:array [1..n] of integer;{Оценки} end; Var t:array[1..30] of st; i,ch,j,a,b:integer; h: file of st; begin {write('vvedite kol-vo stud-ov: '); readln(b);} write('Введите кол-во студентов: '); readln(ch); for i:=1 to ch do begin writeln('Сведения о ' ,i,'студенте'); write('Фамилия: '); readln(t[i].fam); writeln('Оценки по предметам: '); for j:=1 to n do begin case j of 1:write('Мат: '); 2:write('Культ: '); 3:write('Ист: '); end; readln(t[i].oc[j]); if not ((t[i].oc[j]>0) and (t[i].oc[j]<=10)) then begin writeln('Неверн. оценка - надо от 1 до 10.'); j:=j-1; end; a:=a+t[i].oc[j]; {НАХОЖУ СУММУ ВСЕХ ОЦЕНОК ВСЕХ СТУДЕНТОВ} end; writeln; end; Assign (h,fname); {$I-} reset(h); If Ioresult<>0 then rewrite(h); {$I+} for i:=1 to ch do write(h,t[i]); writeln('Средний балл',a); close(h); writeln('Данные занесены в файл ',fname); readln; end. Нашел сумму всех оценок всех студентов. Ср. балл считаю по формуле a:=a/3/ch Но типы не совпадают, конечно же( Что можно сделать? |