Ввести файл f . каждый элемент в файле больший 7 домножить на результат целочисленного деления этого элемента на 7. файл вывести до и после преобразования. дважды вычислить значение выражения, первый раз используя процедуру, а второй – функцию.
procedure VoTeRaz(f:text;n:integer;s:string); begin writeln('Было:'); assign(f,'Input.txt'); reset(f); while not(Eof(f)) do begin read(f,n); write(n,' '); if n>7 then n:=n*(n div 7); s:=s+inttostr(n)+' '; end; delete(s,length(s),1); close(f); assign(f,'Input.txt'); rewrite(f); write(f,s); close(f); writeln; writeln('Стало:'); write(s); writeln; end;
function VoTeDva(f:text;n:integer;s:string):integer; begin writeln('Было:'); assign(f,'Input.txt'); reset(f); while not(Eof(f)) do begin read(f,n); write(n,' '); if n>7 then n:=n*(n div 7); s:=s+inttostr(n)+' '; end; delete(s,length(s),1); close(f); assign(f,'Input.txt'); rewrite(f); write(f,s); close(f); writeln; writeln('Стало:'); write(s); writeln; VoTeDva:=0; end;
Одно из решений, возможно, не самое эффективное #include <iostream> #include <iomanip> int main() { using namespace std;
//исходная последовательность const int N = 8; double Arr[N] = { 14.2, -3.4, 7.8, -3.1, 8.2, 98.22, -7, 12 };
//вывод на экран исходной последовательности for (int i = 0; i < N; ++i) cout << Arr[i] << " "; cout << endl;
//подсчитаем количества отрицательных и неотрицательных элементов int kpos = 0; int kneg = 0; for (int i = 0; i < N; ++i) if (Arr[i] < 0) ++kneg; else ++kpos;
//создадим массивы отрицательных и неотрицательных элементов double * ArrNeg = new double[kneg]; double * ArrPos = new double[kpos];
int kn = 0, kp = 0; for (int i = 0; i < N; i++) if (Arr[i] < 0) ArrNeg[kn++] = Arr[i]; else ArrPos[kp++] = Arr[i];
cout << "Enter a, b, c or d: "; char ch; cin >> ch;
if (ch == 'a' || ch == 'b' || ch == 'c' || ch == 'd') { switch (ch) { //пункт а) case 'a': for (int i = 0; i < kneg; ++i) Arr[i] = ArrNeg[i]; for (int i = 0; i < kpos; ++i) Arr[i + kneg] = ArrPos[i]; break;
//пункт б) case 'b': for (int i = 0; i < kneg; ++i) Arr[i] = ArrNeg[--kn]; for (int i = 0; i < kpos; ++i) Arr[i + kneg] = ArrPos[i]; break;
//пункт в) case 'c': for (int i = 0; i < kneg; ++i) Arr[i] = ArrNeg[i]; for (int i = 0; i < kpos; ++i) Arr[i + kneg] = ArrPos[--kp]; break;
//пункт г) case 'd': for (int i = 0; i < kneg; ++i) Arr[i] = ArrNeg[--kn]; for (int i = 0; i < kpos; ++i) Arr[i + kneg] = ArrPos[--kp]; break; } } else cout << "You entered wrong symbol\n";
for (int i = 0; i < N; ++i) cout << Arr[i] << " "; cout << endl; delete[] ArrNeg; delete[] ArrPos; return 0; }
Var
f:text;
n:integer;
s:string;
procedure VoTeRaz(f:text;n:integer;s:string);
begin
writeln('Было:');
assign(f,'Input.txt');
reset(f);
while not(Eof(f)) do
begin
read(f,n);
write(n,' ');
if n>7 then n:=n*(n div 7);
s:=s+inttostr(n)+' ';
end;
delete(s,length(s),1);
close(f);
assign(f,'Input.txt');
rewrite(f);
write(f,s);
close(f);
writeln;
writeln('Стало:');
write(s);
writeln;
end;
function VoTeDva(f:text;n:integer;s:string):integer;
begin
writeln('Было:');
assign(f,'Input.txt');
reset(f);
while not(Eof(f)) do
begin
read(f,n);
write(n,' ');
if n>7 then n:=n*(n div 7);
s:=s+inttostr(n)+' ';
end;
delete(s,length(s),1);
close(f);
assign(f,'Input.txt');
rewrite(f);
write(f,s);
close(f);
writeln;
writeln('Стало:');
write(s);
writeln;
VoTeDva:=0;
end;
begin
VoTeRaz(f,n,s);
VoTeDva(f,n,s);
end.
Начальное содержимое Input.txt:
81 5 6
Пример работы программы:
Было:
81 5 6
Стало:
891 5 6
Было:
891 5 6
Стало:
113157 5 6