Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

provirt:

Замени строки

writeln('список отличников'); на writeln('список студентов с ФИО на В и Г');

и

if ((алг=5) and (ист=5) and (эвм=5)) then на if ((фио[1]='В')or(фио[1]='Г')) then

это и будет правильно сделанное задание?(так просто..) ;)

Ссылка на комментарий
Поделиться на другие сайты

По условию надо изменить только условие отбора студентов для распечатки их данных. Это условие записано в программе в одной строке, ее мы и заменили.

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте друзья :)

Помогите кто сможет...

Такая ситуация...имеется компьютер например в главном отделе (сети нигде нет), где ставятся все USB накопители на учет. Важно: неучтенные флешки запрещено использовать. так вот...как можно сделать, чтобы на компьютерах других отделах флешку не возможно было прочитать...а поставленные на учет и прошедшие через компьютер главного отдела - можно было читать?

1. определение "свой-чужой": на всех остальных компах ставится прога или значение в реестре таким образом, что флешка "прошедшая" через главный комп определялась. может кто знает работу с реестром или в программировании (ассемблер...)

2. есть такой вариант: прога создает на флешке файл-ключ в соответствии с ID флешки. и при установлении флешки на комп других отделов если файл-ключ соответствуют этой флешки то она определяется.

Device Lock не подходит, он конечно блокирует флешки, но это придется копировать базы учтенных флешек на другие компы постоянно, как региструроется новая флешка

очень очень нуна, буду благодарен :dontgetit:

Ссылка на комментарий
Поделиться на другие сайты

А подскажите пожалуйста как написать простейшую программу вот по такому заданию:

"В двух произвольно заданных квадратных целочисленных матриц произвольного размера (NxN) определить количество одинаковых элементов, расположенных и в первой, и во второй матрице."

Задание (для меня) не очень понятное, например искать отдельно для каждой матрицы или во всех сразу. Но как понимаю нужно просто во обоих матрицах найти одинаковые числа... А что если их много разных одинаковых... :doh:

Помогите плз как-то правильно написать программу. Если по этому заданию мало чего понятно, то тогда увидеть бы ваш вариант решения, а потом сам что-нибудь соображу из этого. Времени у меня осталось 3-4 дня, боюсь не успеть...

Ссылка на комментарий
Поделиться на другие сайты

Upgrader:

Задание (для меня) не очень понятное.
Не только для тебя. Оно просто, мягко говоря, плохо сформулировано. В стиле "Во дворе шли дождь и две девушки". В таких случаях старайся угадать, что имелось в виду, и выбранный тобой вариант условия старайся сделать ясным для проверяющего.

Какой бы вариант ты не выбрал, твое право - трактовать неоднозначное условие так, как нравится тебе. Правда, большей частью и сам препод уже не помнит, что имел в виду, когда писал условие ;)

Я буду понимать условие так, и это я подчеркнул бы в описании или в комментариях к программе: в программе считаем количество находящихся одновременно и в первой, и во второй матрицах значений элементов, при этом каждое значение учитывается только один раз. Тогда надо для каждого элемента первой матрицы проверить:

а) встречалось ли его значение в этой матрице ранее (тогда его уже проверяли);

б) если пункт а не выполняется, то встречается ли его значение во второй матрице.

Расписываем это, плюс ввод-вывод, для компьютера, который очень бестолковый, но исполнительный:

var a,b:array[1..20,1..20]of integer; n,m,i,j,k,l:integer; p,q:boolean;beginWrite('порядок матриц ? '); ReadLn(n); WriteLn('Введите значения элементов строк, разделяя их пробелами')WriteLn(' и заканчивая ввод элементов каждой строки нажатием Enter');for i:=1 to n do begin Write('a, строка ',i,': '); for j:=1 to n do Read(a[i,j]); ReadLn end;for i:=1 to n do begin Write('b, строка ',i,': '); for j:=1 to n do Read(b[i,j]); ReadLn end;m:=0;for i:=1 to n do for j:=1 to n do  begin  p:=true; for k:=1 to i do for l:=1 to j-1 do if a[i,j]=a[k,l] then p:=false;   {если p=true, такое значение в матрице a еще не попадалось}  q:=false; if p then for k:=1 to n do for l:=1 to n do if a[i,j]=b[k,l] then q:=true;  {если q=true, в матрице b найден такой же элемент}  if q then m:=m+1;  end;WriteLn(m,' значений элементов имеются одновременно и в первой, и во второй матрице');Readlnend. 

Оптимизация программы не проводилась (можно было бы, например, прерывать циклы, когда результат уже ясен), но она и не нужна в такой задаче.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Необходимо выполнить сортировку целочисленного массива из n элементов. Метод сортировки - сопоставление с обрразцом.

необходимо на языке С выполнить сортировку целочисленного массива из n элементов, причем сделать это нужно использовав метод сортировки такой - сопоставление с образцом.

Р.S. я плохо шарю в С, если можно, то лучше написать под Dev-C ++. Заранее спасибо :blink:

Ссылка на комментарий
Поделиться на другие сайты

1й2ц3у:

метод сортировки такой - сопоставление с образцом
Все же такого метода сортировки нет, разве что его изобрел тот, кто придумал эту задачу :bye1:. Существующие методы сортировки перечислены, например, тут.

Сопоставление с образцом используется не для сортировки, а для некоторых видов поиска подпоследовательностей, например, для поиска подстроки в строке, часто с использованием образцов-шаблонов (регулярных выражений).

Написать под Dev-C++ можно и на C. Если вместо неведомого метода сортировки сравнением с образцом взять какой-нибудь обычный простой метод, например, пузырьковый, то программа на C под Dev-C++ с выделением сортировки в отдельную функцию будет выглядеть так

#include <malloc.h>#include <stdio.h>int sort(int *a,int n){int i,j,k;for(i=0;i<n-1;i++)for(j=0;j<n-1;j++)if(a[j]>a[j+1]){k=a[j];a[j]=a[j+1];a[j+1]=k;}}int main(){int i,n; int *a;printf("n="); scanf("%i",&n); a=(int *)malloc(n*sizeof(int)); printf("a="); for(i=0;i<n;i++)scanf("%i",&a[i]);sort(a,n);for(i=0;i<n;i++)printf("%8i",a[i]);getchar(); getchar(); return 0;}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Троль.

Все же такого метода сортировки нет, разве что его изобрел тот, кто придумал эту задачу .

Для меня тоже не понятно, че имел ввиду препод когда составлял варианты, безпонятия :). Вчера везеде где можно облазил и ии чего. Но все огромное спасибо за уделенное время :) !!!!!!!!!

Ссылка на комментарий
Поделиться на другие сайты

Изобразить правильный треугольник вращающийся вокруг вершины с указанным номером. Turbo Delphi. Заранее СПАСИБО.

Ссылка на комментарий
Поделиться на другие сайты

Доброго времени суток. Помогите пожалуйста сделать задание на паскале:

Задан массив Xi (i=1,2...n) из целых чисел и целое число B. Получить новую последовательность из частных от деления чисел массива Xi на B>0, расположив их по возрастающей.

Заранее спасибо.

Ссылка на комментарий
Поделиться на другие сайты

provirt:

var n,i,j,b: integer; x:array[1..1000]of integer; a:array[1..1000] of real; t:real;beginWrite('N='); ReadLn(n); Write('B='); ReadLn(b);for i:=1 to n do begin Write('X[',i,']='); ReadLn(x[i]) end;for i:=1 to n do a[i]:=x[i]/b;for i:=1 to n do for j:=1 to n-i do if a[j]>a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t; end;for i:=1 to n do Write(a[i]:10:4); WriteLn; ReadLnend.
Ссылка на комментарий
Поделиться на другие сайты

Доброго времени суток. Помогите с решением такой задачи - преобразование 5-розрядного восьмеричного в шестнадцатиричное с использованием битовіх полей. Язык - Turbo C

Ссылка на комментарий
Поделиться на другие сайты

core:

Нужны вам битовые поля и прочие тонкости, как собаке второй хвост.

#include <stdio.h>int main(){struct {unsigned x0:4,x1:4,x2:4,x3:4;}n;printf("octal number? "); scanf("%o",&n);printf("%X%X%X%X",n.x3,n.x2,n.x1,n.x0);getchar(); getchar();}

Без битовых полей это делается проще:

#include <stdio.h>int main(){int n; printf("octal number? "); scanf("%o",&n); printf("%X",n); getchar(); getchar();}
Ссылка на комментарий
Поделиться на другие сайты

без битовых полей конечно нефик что делать. ето я понимаю. но задание такое. А к первому решению есть вопросы. Во первых у меня 5-розрядное число. 5 розрядов. В вторых зачем выделять по 4 бита на поле, если максимальный розряд восьмеричных - 7 - занимает 3 бита - 111. Далее, раз в етом месте:

printf("%X%X%X%X",n.x3,n.x2,n.x1,n.x0);

програма будет преобразововать число в совокупности розрядов? при такой схеме програма будет выводить hex значение каждого розряда отдельно. извините если не прав :)

Ссылка на комментарий
Поделиться на другие сайты

Во первых у меня 5-розрядное число. 5 розрядов.
А я явно использовал битовые поля только при выводе. Поэтому используется четыре битовых поля по 4 бита. В памяти всё равно всё в двоичном виде. А как трактуется запись двоичного числа - как группы по три бита, представляющие восьмеричные цифры, или как группы по четыре бита, представляющие шестнадцатеричные цифры - самому числу глубоко безразлично, это вопрос только о представлении числа на экране.

При вводе каждый рисунок вводимой цифры (0-7) переводится в комбинацию из 3 битов, а при выводе каждой комбинации из 4 битов сопоставляется отдельный рисунок - арабская цифра или латинская буква.

scanf и printf сами умеют и разбивать записи двоичных чисел на битовые поля, и представлять каждое отдельным символом - что и показано вторым вариантом программы, без явного использования битовых полей. Но раз сказано использовать битовые поля - хорошо, мы забираем у printf работу по разбиению записи числа на битовые поля и программируем ее сами.

при такой схеме програма будет выводить hex значение каждого розряда отдельно.
А зачем нам еще могут понадобиться битовые поля? Только для этого. Чтобы разделить число на группы битов, представляющие цифры используемой системы счисления.

Можно было, конечно, и со scanf снять работу по разбиению числа на группы битов - представить то же самое число в виде пяти групп по три бита и предоставить scanf или какой-нибудь другой функции вводить каждую введенную нами цифру в очередное трехбитовое поле двоичного представления числа. Но зачем нам делать двойную работу? Сказано было использовать битовые поля - мы их использовали. А где именно, при выводе или при вводе - этого нам никто не задавал.

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте помогите решить задачку на паскале:

1.Из внешнего файла, содержащего исходные данные, удалить записи, соответствующие: . Абитуриентам, имеющим отличный аттестат и получившим все оценки 5.

2.Распечатать полученный файл. П. Используя внешний файл, содержащий исходные данные, добавить N записей и распечатать: Список абитуриентов, сдавших вступительные экзамены на оценки 4 и 5; N=2.

PS (Методические указания. При подготовке исходных данных необходимо учесть, что выходная информация программы обработки внешнего файла должна составлять не менее одной четверти от входной.)

Заранее спасибо!

Ссылка на комментарий
Поделиться на другие сайты

Троль:

а, возможна реализаця через Юнион? например, первая часть сохраняется

#include <stdio.h>int main(){struct bit {unsigned x0:4,x1:4,x2:4,x3:4;}n;printf("octal number? "); scanf("%o",&n);

а потом создаем такой union:

union {bit n; short c;} u;printf("HEX:%x",u.c);

с - также как и поле буде составлять 16 бит и будет указывать на тот же адрес, что и поле. или я не прав?

да и вот еще, почему вывод осуществляется в обратному порядке? разве что розряды записываются с последнего начиная з последнего битового поля?

Ссылка на комментарий
Поделиться на другие сайты

core:

Так можно сделать, но битовая структура тут работает (если не считать мелкие синтаксические ошибки) совсем уж свадебным генералом - она просто обозначает область памяти, в которую будет вводится число, ее битовые поля не используются. Фактически получится чуть усложненный в отношении синтаксиса вариант моей второй программы - просто вместо int будет использоваться union. Весь смысл использования битовых полей был в выводе их по отдельности, каждое поле - отдельная цифра. Если уж так хочется объявить битовую структуру, то можно сделать так:

#include <stdio.h>

int main(){

struct {unsigned x:16;}n;

printf("octal number? "); scanf("%o",&n);

printf("%X",n.x);

getchar(); getchar();}

Дело в том, что тут битовые поля изначально не нужны, вот мы и подыскиваем для них хоть какое-нибудь место в программе.

Насчет нумерации

разве что розряды записываются с последнего начиная з последнего битового поля?
Номера битов отсчитываются от конца числа. Вообщв считается, что память компьютера, если ее представить в виде цепочки битов или байтов, идет справа налево, как арабская письменность. Например, в байте нумерация битов такая: 76543210. На заре развития компьютеров были две конкурирующие системы нумерации, победила эта. Поэтому поле x0, например, в описании битовой структуры стоит первым и соответствует четырем младшим битам, а выводиться должно последним, поскольку представляет последнюю, младшую, цифру в числе.
Ссылка на комментарий
Поделиться на другие сайты

provirt:

var f1,f2,f3:text; i:integer; b:boolean; a :string[35]; o:string[5]; s1,s2,s3:string;

begin

write ('Name of the 1-st file? '); readln(s1); assign(f1,s1);

write ('Name of the 2-nd file? '); readln(s2); assign(f2,s2);

writeln; reset(f1); rewrite(f2);

while not eof(f1) do begin readln(f1,a); readln(f1,o); b:=false;

for i:=1 to 5 do if o<>'5' then b:=true; if b then begin writeln(f2,a); writeln(f2,o) end end;

close(f1); close(f2); reset(f2);

while not eof(f2) do begin readln(f2,a); readln(f2,o); writeln(a,o:40-length(a)) end;

close(f2); writeln;

write ('Name of the 3-rd file? '); readln(s3); assign(f3,s3); reset(f3); append(f2);

for i:=1 to 2 do begin readln(f3,a); readln(f3,o); writeln(f2,a); writeln(f2,o) end;

close(f3); close(f2); reset(f2); writeln;

while not eof(f2) do begin readln(f2,a); readln(f2,o); b:=true;

for i:=2 to 5 do if o<'4' then b:=false; if b then writeln(a,o:40-length(a)) end;

close(f2); readln

end.

Тестовые примеры файлов:

t1.txt

martishka

12345

osel

55555

kosel

14554

medved

11111

t3.txt

lebed

12345

rak

14545

shchuka

15554

Второй файл, имя которого запросит програма - выходной, надо будет ввести только его название, например, t2.txt

Две записи, которые просят добавить, добавляются из третьего файла к содержимому второго файла, во всяком случае, я так интерпретировал бестолково написанное условие задачи.

Структура файлов вроде бы ясна из примера, после строки с ФИО абитуриента вводятся оценка его аттестата и оценки четырех экзаменов. Аттестат с отличием вводится оценкой 5. Например, у lebed аттестат плохой, а отметки экзаменов 2, 3, 4 и 5. Самый умный - осел, он круглый отличник с отличным аттестатом :)

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Спасибо большое за такую хорошую лекцию. Мой препод нервно курит в сторонке. Большое человеческое спасибо. даже не так за програму как за разеснение отличное

Ссылка на комментарий
Поделиться на другие сайты

Тролль спасибо за программу!

Но не мог бы ты подсказать что я делаю не так:

1.в папке с программой создаю два текстовых файла t1 и t3 (вводил в них данные из примера)

2.запускаю программу, она просит ввести имя первого файла(я ввожу t1) потом 2-ого(я ввожу t2) и она выдает ошибку: "ERROR 2: file not found"

В чем может быть проблема? :)

Ссылка на комментарий
Поделиться на другие сайты

provirt:

создавайте файлы s1 и s2. Или замените

var f1,f2,f3:text; i:integer; b:boolean; a :string[35]; o:string[5]; s1,s2,s3:string;

begin

write ('Name of the 1-st file? '); readln(s1); assign(f1,s1);

write ('Name of the 2-nd file? '); readln(s2); assign(f2,s2);

s1, s2 на t1, t2

var f1,f2,f3:text; i:integer; b:boolean; a :string[35]; o:string[5]; t1,t2,t3:string;beginwrite ('Name of the 1-st file? '); readln(s1); assign(f1,t1); write ('Name of the 2-nd file? '); readln(s2); assign(f2,t2);

ой, ошибся.

var f1,f2,f3:text; i:integer; b:boolean; a :string[35]; o:string[5]; t1,t2,t3:string;

begin

write ('Name of the 1-st file? '); readln(t1); assign(f1,t1);

write ('Name of the 2-nd file? '); readln(t2); assign(f2,t2);

но легче ничего не менять, а назвать файлы s1 и s2

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...