provirt Опубликовано 26 октября, 2008 Жалоба Поделиться Опубликовано 26 октября, 2008 provirt: Замени строки writeln('список отличников'); на writeln('список студентов с ФИО на В и Г'); и if ((алг=5) and (ист=5) and (эвм=5)) then на if ((фио[1]='В')or(фио[1]='Г')) then это и будет правильно сделанное задание?(так просто..) ;) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 26 октября, 2008 Жалоба Поделиться Опубликовано 26 октября, 2008 По условию надо изменить только условие отбора студентов для распечатки их данных. Это условие записано в программе в одной строке, ее мы и заменили. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
provirt Опубликовано 26 октября, 2008 Жалоба Поделиться Опубликовано 26 октября, 2008 Троль ;) Троль ;) извини... Тролль (с двумя ЛЛ) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Remin Опубликовано 1 ноября, 2008 Жалоба Поделиться Опубликовано 1 ноября, 2008 Здравствуйте друзья :) Помогите кто сможет... Такая ситуация...имеется компьютер например в главном отделе (сети нигде нет), где ставятся все USB накопители на учет. Важно: неучтенные флешки запрещено использовать. так вот...как можно сделать, чтобы на компьютерах других отделах флешку не возможно было прочитать...а поставленные на учет и прошедшие через компьютер главного отдела - можно было читать? 1. определение "свой-чужой": на всех остальных компах ставится прога или значение в реестре таким образом, что флешка "прошедшая" через главный комп определялась. может кто знает работу с реестром или в программировании (ассемблер...) 2. есть такой вариант: прога создает на флешке файл-ключ в соответствии с ID флешки. и при установлении флешки на комп других отделов если файл-ключ соответствуют этой флешки то она определяется. Device Lock не подходит, он конечно блокирует флешки, но это придется копировать базы учтенных флешек на другие компы постоянно, как региструроется новая флешка очень очень нуна, буду благодарен :dontgetit: Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Upgrader Опубликовано 1 ноября, 2008 Жалоба Поделиться Опубликовано 1 ноября, 2008 А подскажите пожалуйста как написать простейшую программу вот по такому заданию: "В двух произвольно заданных квадратных целочисленных матриц произвольного размера (NxN) определить количество одинаковых элементов, расположенных и в первой, и во второй матрице." Задание (для меня) не очень понятное, например искать отдельно для каждой матрицы или во всех сразу. Но как понимаю нужно просто во обоих матрицах найти одинаковые числа... А что если их много разных одинаковых... :doh: Помогите плз как-то правильно написать программу. Если по этому заданию мало чего понятно, то тогда увидеть бы ваш вариант решения, а потом сам что-нибудь соображу из этого. Времени у меня осталось 3-4 дня, боюсь не успеть... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 1 ноября, 2008 Жалоба Поделиться Опубликовано 1 ноября, 2008 (изменено) 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. Оптимизация программы не проводилась (можно было бы, например, прерывать циклы, когда результат уже ясен), но она и не нужна в такой задаче. Изменено 1 ноября, 2008 пользователем Тролль Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
1й2ц3у Опубликовано 8 ноября, 2008 Жалоба Поделиться Опубликовано 8 ноября, 2008 Необходимо выполнить сортировку целочисленного массива из n элементов. Метод сортировки - сопоставление с обрразцом. необходимо на языке С выполнить сортировку целочисленного массива из n элементов, причем сделать это нужно использовав метод сортировки такой - сопоставление с образцом. Р.S. я плохо шарю в С, если можно, то лучше написать под Dev-C ++. Заранее спасибо :blink: Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 8 ноября, 2008 Жалоба Поделиться Опубликовано 8 ноября, 2008 (изменено) 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;} Изменено 8 ноября, 2008 пользователем Тролль Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
1й2ц3у Опубликовано 9 ноября, 2008 Жалоба Поделиться Опубликовано 9 ноября, 2008 Троль. Все же такого метода сортировки нет, разве что его изобрел тот, кто придумал эту задачу . Для меня тоже не понятно, че имел ввиду препод когда составлял варианты, безпонятия :). Вчера везеде где можно облазил и ии чего. Но все огромное спасибо за уделенное время :) !!!!!!!!! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ph@ntom Опубликовано 10 ноября, 2008 Жалоба Поделиться Опубликовано 10 ноября, 2008 Изобразить правильный треугольник вращающийся вокруг вершины с указанным номером. Turbo Delphi. Заранее СПАСИБО. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
provirt Опубликовано 12 ноября, 2008 Жалоба Поделиться Опубликовано 12 ноября, 2008 Доброго времени суток. Помогите пожалуйста сделать задание на паскале: Задан массив Xi (i=1,2...n) из целых чисел и целое число B. Получить новую последовательность из частных от деления чисел массива Xi на B>0, расположив их по возрастающей. Заранее спасибо. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 12 ноября, 2008 Жалоба Поделиться Опубликовано 12 ноября, 2008 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. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
provirt Опубликовано 13 ноября, 2008 Жалоба Поделиться Опубликовано 13 ноября, 2008 Тролль. Большое спасибо. :blink: Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
core Опубликовано 16 ноября, 2008 Жалоба Поделиться Опубликовано 16 ноября, 2008 Доброго времени суток. Помогите с решением такой задачи - преобразование 5-розрядного восьмеричного в шестнадцатиричное с использованием битовіх полей. Язык - Turbo C Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 17 ноября, 2008 Жалоба Поделиться Опубликовано 17 ноября, 2008 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();} Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
core Опубликовано 17 ноября, 2008 Жалоба Поделиться Опубликовано 17 ноября, 2008 без битовых полей конечно нефик что делать. ето я понимаю. но задание такое. А к первому решению есть вопросы. Во первых у меня 5-розрядное число. 5 розрядов. В вторых зачем выделять по 4 бита на поле, если максимальный розряд восьмеричных - 7 - занимает 3 бита - 111. Далее, раз в етом месте: printf("%X%X%X%X",n.x3,n.x2,n.x1,n.x0); програма будет преобразововать число в совокупности розрядов? при такой схеме програма будет выводить hex значение каждого розряда отдельно. извините если не прав :) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 17 ноября, 2008 Жалоба Поделиться Опубликовано 17 ноября, 2008 Во первых у меня 5-розрядное число. 5 розрядов. А я явно использовал битовые поля только при выводе. Поэтому используется четыре битовых поля по 4 бита. В памяти всё равно всё в двоичном виде. А как трактуется запись двоичного числа - как группы по три бита, представляющие восьмеричные цифры, или как группы по четыре бита, представляющие шестнадцатеричные цифры - самому числу глубоко безразлично, это вопрос только о представлении числа на экране. При вводе каждый рисунок вводимой цифры (0-7) переводится в комбинацию из 3 битов, а при выводе каждой комбинации из 4 битов сопоставляется отдельный рисунок - арабская цифра или латинская буква. scanf и printf сами умеют и разбивать записи двоичных чисел на битовые поля, и представлять каждое отдельным символом - что и показано вторым вариантом программы, без явного использования битовых полей. Но раз сказано использовать битовые поля - хорошо, мы забираем у printf работу по разбиению записи числа на битовые поля и программируем ее сами. при такой схеме програма будет выводить hex значение каждого розряда отдельно. А зачем нам еще могут понадобиться битовые поля? Только для этого. Чтобы разделить число на группы битов, представляющие цифры используемой системы счисления. Можно было, конечно, и со scanf снять работу по разбиению числа на группы битов - представить то же самое число в виде пяти групп по три бита и предоставить scanf или какой-нибудь другой функции вводить каждую введенную нами цифру в очередное трехбитовое поле двоичного представления числа. Но зачем нам делать двойную работу? Сказано было использовать битовые поля - мы их использовали. А где именно, при выводе или при вводе - этого нам никто не задавал. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
provirt Опубликовано 18 ноября, 2008 Жалоба Поделиться Опубликовано 18 ноября, 2008 Здравствуйте помогите решить задачку на паскале: 1.Из внешнего файла, содержащего исходные данные, удалить записи, соответствующие: . Абитуриентам, имеющим отличный аттестат и получившим все оценки 5. 2.Распечатать полученный файл. П. Используя внешний файл, содержащий исходные данные, добавить N записей и распечатать: Список абитуриентов, сдавших вступительные экзамены на оценки 4 и 5; N=2. PS (Методические указания. При подготовке исходных данных необходимо учесть, что выходная информация программы обработки внешнего файла должна составлять не менее одной четверти от входной.) Заранее спасибо! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
core Опубликовано 18 ноября, 2008 Жалоба Поделиться Опубликовано 18 ноября, 2008 Троль: а, возможна реализаця через Юнион? например, первая часть сохраняется #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 бит и будет указывать на тот же адрес, что и поле. или я не прав? да и вот еще, почему вывод осуществляется в обратному порядке? разве что розряды записываются с последнего начиная з последнего битового поля? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 18 ноября, 2008 Жалоба Поделиться Опубликовано 18 ноября, 2008 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, например, в описании битовой структуры стоит первым и соответствует четырем младшим битам, а выводиться должно последним, поскольку представляет последнюю, младшую, цифру в числе. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 18 ноября, 2008 Жалоба Поделиться Опубликовано 18 ноября, 2008 (изменено) 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. Самый умный - осел, он круглый отличник с отличным аттестатом :) Изменено 18 ноября, 2008 пользователем Тролль Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
core Опубликовано 18 ноября, 2008 Жалоба Поделиться Опубликовано 18 ноября, 2008 Спасибо большое за такую хорошую лекцию. Мой препод нервно курит в сторонке. Большое человеческое спасибо. даже не так за програму как за разеснение отличное Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
provirt Опубликовано 19 ноября, 2008 Жалоба Поделиться Опубликовано 19 ноября, 2008 Тролль спасибо за программу! Но не мог бы ты подсказать что я делаю не так: 1.в папке с программой создаю два текстовых файла t1 и t3 (вводил в них данные из примера) 2.запускаю программу, она просит ввести имя первого файла(я ввожу t1) потом 2-ого(я ввожу t2) и она выдает ошибку: "ERROR 2: file not found" В чем может быть проблема? :) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
core Опубликовано 19 ноября, 2008 Жалоба Поделиться Опубликовано 19 ноября, 2008 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
provirt Опубликовано 19 ноября, 2008 Жалоба Поделиться Опубликовано 19 ноября, 2008 core: создавайте файлы s1 и s2. пробывал... все та же ошибка :) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.