Quantcast
Channel: Форум программистов
Viewing all 25552 articles
Browse latest View live

[[Scope]],LE и замыкания в JS

$
0
0
Код:

function makeCounter() {
  var currentCount = 1;
 
  return function() {
  return currentCount++;
  };
}



var counter = makeCounter();
alert(counter()) ;
alert(counter()) ;
alert(counter()) ;

Здравствуйте.
Возникла небольшая проблема с логикой действий. Алерты поочередно показывают 1,2,3.
И если первый Алерт, показывающий единицу мне понятен, то второй и третий так работать не должны.
Значит, логика такая.
1)Первый counter получает ссылку на currentCount внешней функции, видит, что currentCount присвоена единица и забирает эту единицу себе и так как инкремент находится в постфиксной форме, Алерт выводит на экран не двойку, а единицу.

2)Второй counter получает ссылку на currentCount, видит, LE currentCount == 1 и забирает эту единицу себе. По идее второй Алерт тоже должен выдать единицу, ибо во внешнем LE currentCount == 1.

Я так понимаю между 1 и 2 пунктом происходит некая перезапись currentCount в внешнем LE.

Вопрос такой: Как эта перезапись происходит и перезапись ли это вообще?

Запрос по дате Access 2010

$
0
0
Есть таблица Table (3 поля: Field,Number, Data), в которой данные поступают нарастающим итогом, т.е. по полю Field каждое новое значение и дата должны быть больше предыдущего.
При запуске базы данных открывается форма Form1, в которой есть 2 поля для ввода даты начала периода и конца периода и 2 кнопки. Кнопка «Запрос Query по всем записям таблицы» просто выводит запрос Query. Кнопка «Запрос Query1 по дате» открывает запрос Query1.
Запрос Query:
Код:

SELECT П1.Code, П1.Field, П1.Number, П1.Data, [П1].[Number]-(select П3.Number from [Table] as П3                                                          where П3.Field = П1.Field                                                            and П3.Data = (select Max(Data)                                                                          from [Table] as П2                                                                          where П2.Field = П1.Field and П1.Data > П2.Data)) AS Difference
FROM [Table] AS П1
ORDER BY П1.Data;

Суть запроса Query в том, что добавляется поле Difference, которое вычисляет значение по полю Field как разница между предыдущим Number и текущим Number. Например, Field f3: была дата 02.02.1990 со значением 3, следующая дата 05.02.1990 со значением 19, поле разница будет вычислено как 19 – 3 = 16.
Запрос Query1 (выбирает данные не из таблицы Table, а из запроса Prom):
Код:

SELECT П1.Code, П1.Field, П1.Number, П1.Data, [П1].[Number]-(select П3.Number from [Prom] as П3                                                          where П3.Field = П1.Field                                                            and П3.Data = (select Max(Data)                                                                          from [Prom] as П2                                                                          where П2.Field = П1.Field and П1.Data > П2.Data)) AS Difference
FROM Prom AS П1
ORDER BY П1.Data;

Промежуточный запрос Prom (для считывания даты начала и даты конца с полей формы Form1):
Код:

SELECT Table.Code, Table.Field, Table.Number, Table.Data, Table.Difference
FROM [Table]
WHERE (((Table.Data)>=[Forms]![Form1]![FF1] And (Table.Data)<=[Forms]![Form1]![FF2]))
ORDER BY Table.Data;

Таким образом, разница между запросом Query и запросом Query1 в том, что запрос Query1 делает выборку по дате. Проблема в том, что запрос Query1 работает неправильно.
Например, в запросе Query по полю Field и дате 07.05.1990 поле Difference вычисляется как (15-10 = 5), а в запросе Query1 поле Difference = 0 (запрос не видит предыдущее значение).
Помогите, пожалуйста, переписать запрос так, чтобы перед выполнением запроса Query1 можно было выбирать временной период по дате.

Изображения
Тип файла: jpg Form1.jpg (30.4 Кб)
Тип файла: png Prom.png (16.4 Кб)
Тип файла: png Query.png (18.7 Кб)
Тип файла: png Query1.png (16.2 Кб)
Тип файла: png Table.png (17.4 Кб)
Вложения
Тип файла: zip Table-ICH.zip (57.3 Кб)

Работа с файлами

$
0
0
Дан файл f (который мы изначально заполняем первой программой)
(с помощью второй программы) Собрать в файле g сведения о лучших учениках школы,
т. е. Об учениках не имеющих отметок ниже "4" и по сумме баллов не уступающим другим ученикам своего и параллельных классов.
Ошибка заключается в том,что вторая программа записывает лишь один компонент в конечный файл

Первая программа на заполнение:
type
komp = record
famil: string[10];
Oc: Array[1..6]of integer;
God: integer;
klass: char;
end;
var
Fp: file of komp;
g:text;
A: komp;
T,m,J, Y, N, i, kolich: integer;
E: boolean;

begin
Assign(Fp, 'm.dta');
rewrite(fp);
Writeln('Введите количесво студентов');
Readln(N);
for i := 1 to N do
begin
Writeln('Введите фамилию ');
Readln(A.famil);
Writeln('Введите количесво оценок');
Readln(Kolich);
Writeln('Введите оценки студента ');
for Y := 1 to kolich do
readln(A.Oc[Y]);
writeln('Введите год');
Readln(A.God);
writeln('Введите класс');
Readln(A.klass);
Writeln('Данные успешно сохранены');
write(fp,A);
end;
End.

Вторая программа на запись хороших учеников в отдельный файл:
type
komp = record
famil: string[10];
Oc: Array[1..6]of integer;
God: integer;
klass: char;
end;

var
Fp,r: file of komp;
A,b: komp;
F,L,M,i, J,N: integer;



begin
Writeln('Введите количество студентов');Readln(N);
Writeln('Введите количество оценок');Readln(L);
assign(R, 'Result.dta');
assign(fp,'m.dta');


Reset(fp);
For i:=0 to N-1 do
Seek(fp,i);
Read(fp,A);
writeln('Чтение ',A.Oc);
For F:=1 to L do
begin
Writeln ('оценка: ',A.Oc[f]);
if A.Oc[F] >3 then begin
B.famil:=A.Famil;
B.klass:=A.klass;
B.God:=A.god;
reset(r);
write(R,B);
end;
end;
end;
close(r);
Reset(R);
Read(R, B);
Writeln('Студенты,которые хорошо учатся', B.famil:20);
end.

Подключение библиотеки к Visual Studio C++

$
0
0
Доброго времени суток!
Я пишу проект на C++ и использую библиотеку SFML 2.3.2 C++(Она работает нормально)
Также использую Windows XP и Visual Studio 2010 C++(!)
Понадобилась новая дополнительная внешняя библиотека sfml-tmx-loader. Загрузил её с гитхаба. Пробую подключить к проекту - ошибок компиляции > 100! (Привожу ошибки) В readme указанно, что минимальные требования: C++11. Очень бы хотелось, чтобы проблема оказалась в версии Студии или Windows. Но скорее всего дело всё-таки в неправильном подключении sfml-tmx-loader или zlib.
Я подключал так:
0) Загрузил скомпилировынный zlib с офф сайта сюда: C:\Libs\zlib128
1) Загрузил sfml-tmxloader сюда C:\Libs\sfml-tmxloader
В проекте Visual Studio:
2) проект - свойства *название* - C/C++ - общие - дополнительные каталоги включаемых файлов: C:\Libs\SFML-2.3.2\include;C:\Libs\sfml-tmxloader\include;C:\Libs\zlib128\i nclude
3) проект - свойства *название* - компоновщик - общие - дополнительные каталоги библиотек: C:\Libs\SFML-2.3.2\lib;C:\Libs\zlib128\lib
4) проект - свойства *название* - компоновщик - ввод: zdll.lib;sfml-graphics-d.lib;sfml-window-d.lib;sfml-system-d.lib;sfml-audio-d.lib;(далее идут стандартные включаемые файлы, я их не изменял)
5) проект - существующий элемент: через "Обзор" подключаю все файлы из C:\Libs\sfml-tmxloader\include
6) проект - существующий элемент: через "Обзор" подключаю все файлы из C:\Libs\sfml-tmxloader\src
7) проект - существующий элемент: через "Обзор" подключаю все файлы из C:\Libs\zlib128\include
8) проект - существующий элемент: через "Обзор" подключаю файл zdll.lib из каталога C:\Libs\zlib128\lib
9) Файл zlib1.dll из папки C:\Libs\zlib128 скопировал в папку с выходным exe-файлом. (D:\Мои документы\Visual Studio 2010\Projects\sfmltest2\Debug)

Нажимаю F5 получаю море ошибок:(привести все ошибки не получится - не позволяет форум)


1>------ Построение начато: проект: sfmltest2, Конфигурация: Debug Win32 ------
1>Построение начато 31.05.2016 22:58:25.
1>InitializeBuildStatus:
1> Обращение к "Debug\sfmltest2.unsuccessfulbuild" .
1>ClCompile:
1> main.cpp
1>c:\libs\sfml-tmxloader\include\tmx\mapobject.h(7 1): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\libs\sfml-tmxloader\include\tmx\mapobject.h(1 89): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\libs\sfml-tmxloader\include\tmx\quadtreenode. h(83): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\libs\sfml-tmxloader\include\tmx\maplayer.h(41 ): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\libs\sfml-tmxloader\include\tmx\maplayer.h(55 ): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\libs\sfml-tmxloader\include\tmx\maplayer.h(95 ): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\libs\sfml-tmxloader\include\tmx\maploader.h(4 4): error C2332: enum: отсутствует имя тега
1>c:\libs\sfml-tmxloader\include\tmx\maploader.h(4 5): error C2236: непредвиденные "class" "tmx::MapOrientation". Возможно, отсутствует ";"
1>c:\libs\sfml-tmxloader\include\tmx\maploader.h(4 5): error C3381: tmx::MapOrientation: спецификаторы доступа к сборке доступны только в коде, скомпилированном с параметром /clr
1>c:\libs\sfml-tmxloader\include\tmx\maploader.h(4 6): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\libs\sfml-tmxloader\include\tmx\maploader.h(4 7): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\libs\sfml-tmxloader\include\tmx\maploader.h(4 9): error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>c:\libs\sfml-tmxloader\include\tmx\maploader.h(4 9): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\libs\sfml-tmxloader\include\tmx\maploader.h(5 1): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1> tmx2box2d.cpp
1>c:\libs\sfml-tmxloader\include\tmx\mapobject.h(7 1): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\libs\sfml-tmxloader\include\tmx\mapobject.h(1 89): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\libs\sfml-tmxloader\include\tmx\tmx2box2d.h(3 9): fatal error C1083: Не удается открыть файл включение: Box2D/Dynamics/b2World.h: No such file or directory
1> QuadTreeNode.cpp
1>c:\libs\sfml-tmxloader\include\tmx\mapobject.h(7 1): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\libs\sfml-tmxloader\include\tmx\mapobject.h(1 89): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\libs\sfml-tmxloader\include\tmx\quadtreenode. h(83): error C2470: final: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(53): error C2027: использование неопределенного типа "tmx::QuadTreeRoot"
1> c:\libs\sfml-tmxloader\include\tmx\quadtreenode. h(83): см. объявление "tmx::QuadTreeRoot"
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(55): error C2065: m_objects: необъявленный идентификатор
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(55): error C2228: выражение слева от ".clear" должно представлять класс, структуру или объединение
1> тип: 'unknown-type'
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(56): error C2065: m_children: необъявленный идентификатор
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(56): error C2228: выражение слева от ".clear" должно представлять класс, структуру или объединение
1> тип: 'unknown-type'
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(57): error C2065: m_bounds: необъявленный идентификатор
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(58): error C2065: m_debugShape: необъявленный идентификатор
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(58): error C2228: выражение слева от ".setPosition" должно представлять класс, структуру или объединение
1> тип: 'unknown-type'
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(59): error C2065: m_debugShape: необъявленный идентификатор
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(59): error C2228: выражение слева от ".setSize" должно представлять класс, структуру или объединение
1> тип: 'unknown-type'
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(61): error C2065: m_searchDepth: необъявленный идентификатор
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(62): error C2065: m_depth: необъявленный идентификатор
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(79): error C2143: синтаксическая ошибка: отсутствие "," перед ":"
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(79): error C2530: child: ссылки должны быть инициализированы
1>c:\libs\sfml-tmxloader\src\quadtreenode.cpp(79): error C3531: child: символ, тип которого содержит спецификатор "auto" должен иметь инициализатор

Лабораторная на python 2/3

$
0
0
Добрый день.

Нужно сделать лабораторную на python. Срок - до 20 июня, задание небольшое. Архив с файлами для работы весит больше, чем позволено прикрепить, так что ссылка на дропбокс: https://www.dropbox.com/s/js97aokdsyk0fk1/data.zip?dl=0

Контакты:
egor.zviagintcev@gmail.com
Skype: egor.zvyagintsev

Задание:

1. Считать данные из файлов в папке train:
- images
- labels

Описание: (считывается файл images в массив (f = read("filename.format",r)
Только это массив в который засовываются сразу все массивы каждого файла
Можно использовать import glob
Пропускаются первые три строки где там 255 28 28 и что-то еще, нужна только матрица цифр)

( считать файлы из папки python glob )

2. Написать функцию расстояния между картинками (евклидово расстояние).

Описание: (у f=read("labels.txt",r) 200 цифр - как и файлов images
Т.е. каждый файл - это картинка с цифрой
И потом по индексу соотносятся картинка (массив цифр) и значение картинки

Если в пайчарм нажать на картинку, будут видны цифры)
--
Это касательно первых двух заданий, остальное по тому же принципу
--

3. Написать функцию отбора К ближайших соседей для входного элемента среди списка.
Возвращает label для этого элемента.

4. Написать функцию, которая делит выборку на n частей,
Потом использует n-1 часть как train, a одну часть - как test.
Считает ошибку (совпадает или нет).
Потом повторяет этои действия n раз, меняя test выборку.
В итоге возвращает среднюю ошибку, при этом принимает k, как входной параметр.

(Считать ошибку в четвертой функции - из тестовой выборки берется все и прогоняется через третью функцию. Дальше сравнивается то, что вернула третья функция с тем, что реально есть. Если не совпал ответ, то к ошибке прибавляется1 (в начале ошибка = 0). Затем, прогнав все из тестовой выборки, нужно делить ту ошибку на количество элементов в тестовой выборки - это и есть ошибка

5. Прогнать 4 функцию с k от 1 до 10 и найти тот k соседей, при котором средняя ошибка минимальна.

6. Запустить 3 функцию для всех данных из папки test при всех данных train
(с k-минимальной ошибкой).
Сохранить label в отдельный файл.

Вложения
Тип файла: docx Задание lab4.docx (15.0 Кб)

клик по колесиком мыши

$
0
0
Здравствуйте. Помогите пожалуйста разобраться в одном коде?
Каким кодом можно запретить клик по колесиком мыши?
Например: http://www.payments15.ru/test.php
Я там только запретил клик правой кнопкой мышки..джава скриптом, но если нажать
на раздел1-2-3-4 и т.д. потом нажать на колесико мыши то открывается новая вкладка с тем же файлом.. к примеру http://www.payments15.ru/test.php?edit=1&razdel=0
Или если это невозможно то что можно прописать в Php коде чтобы при открытия нового вкладки с тем же файлом выводился белый экран?

[.NET] Ставлю защиту

$
0
0
Ставлю защиту на вашу .NET (c#/VB) программу.
-Натив слой
-Обфускация
Более подробно:
Цитата:

-Anti ILDASM
-Anti Tamper
-Anti Debug
-Anti De4Dot
-Invalid Metadata
-Error Reporter
-Memory Optimizer
-Resources Protection
-Stack Underflow
-Reduce Metadata
-Native shield
-String Protections
-Method Puzzling
-Proxy Call
-Operator Changer
-Renaming
Пример (в примере использовались все функции защиты + сверху themida):
https://www.sendspace.com/file/ezgu6f
https://virustotal.com/ru/file/43fe....is/1466158185/
В наличие около 35-ти накрытий.
1 накрытие - 100 руб.
skype: ganin4

Delphi Массивы

$
0
0
Помогите с заданиям
1.Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,200]. Найти сумму отрицательных элементов.
2.Найти количество тех элементов, значения которых положительны и не превосходят заданного числа А.
3.Найти номер последней пары соседних элементов с разными знаками.
Код HTML:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    GroupBox1: TGroupBox;
    Button2: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    Label2: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  n,sum: integer;
  m:array of integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
checkbox1.Checked:=false;
edit2.Clear;
edit4.Clear;
randomize;
n:=strtoint (edit1.Text);
setlength (m,n);
for i:=0 to n-1 do
begin
m[i]:=round(sin(random(-100))*200);
edit2.Text:=edit2.Text+' '+ inttostr(m[i]);
end;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
var i:integer;
begin
sum:=0;
for i:=0 to n-1 do
if m[i]<0 then
sum:=sum+m[i];
edit4.Text:=FloatToStr(sum);

end;

procedure TForm1.CheckBox2Click(Sender: TObject);
var i,a:integer;
begin
a:=StrToInt(Edit5.Text);

end;

end.


Помогите найти ошибку.(Paskal)

$
0
0
Дан файл F содержащий различные даты. Каждая дата — это число, месяц и год. Найти самую позднюю дату.
Код:

type
 data=record
      day:1..31;
      month:1..12;
      year:integer;
      end;
var
  a,max:data;
  i,n: integer;
  fp: file of data;
begin
  Assign(fp,'data.dta');
    Rewrite(fp);
  Write('Введите колличество записей: ');
    Readln(N);
for i:=1 to n do begin
  Write ('Введите день ');
  readln(a.day);
  Write('Введите месяц ');
  Readln(a.month);
  Write('Введите год ');
  Readln(a.year);
end;
Assign(fp,'data.dta');
Reset(fp);
    read(fp,max);
While not Eof(fp) do begin
      Read(fp,a);
        if (a.Year>max.Year) or (a.Year=max.Year) then max:=a;
        if (a.Month>max.Month) or  (a.Month=max.Month) then max:=a;
        if (a.Day>max.Day) then max:=a;
    end;
      writeln('Самая поздняя дата: ',max.Day,'.',max.Month,'.',max.Year);
        Close(fp);
      readln;
End.

Государственный программист

$
0
0
Предлагаю создать совершенно новую, никогда ранее не существовавшую должность "государственный программист" (вроде "государственного алхимика").
Государственный программист будет решать первые попавшиеся задачи, связанные с программным обеспечением. И выкладывать результат в бесплатную базу, предназначенную для использования в масштабах всей страны. Выгода налицо: один человек поработал – миллион человек использует. Зарплата 10 тыс. Это намного лучше, чем работать дворником за те же 10 тыс.
Разрабатываться будут мелкие программы типа "The wall" и "Shift time".
Для мелких задач создать отдел "А". Тем же программистам, кто посильнее и уже освоился, предлагать перейти в отдел "Б", где задачи будут решаться посерьёзнее, связанные с разработкой софта. И зарплата будет вдвое выше – 20 тыс.
Через год все проблемы будут решены.

Сейчас в стране острая нехватка программистов. Зарплаты у них высокие – 80 тыс. Но и требования к ним большие. Одно только перечисление требований занимает 10 строчек. А вот если человек выучил только 1-2 строчки или "всего лишь" знает язык программирования, то его на работу не берут. И таких, кого не взяли, в несколько раз больше тех, кого взяли.
Так вот тем, кого не взяли, можно предлагать переходить в государственные программисты. И зарплата есть, и работа есть. На первое время. Чего без дела сидеть? А пользу можно принести в масштабах всей страны.

Ошибка при изменении иконки Exeшника

$
0
0
Здравствуйте. Пытаюсь добавить иконку следующим способом. Project-Options-Application-Load Icon. Выдает ошибку Unable to set Icon:Icon image is not valid. Пробовал размеры 16х16, 32х32, 64х64. Все та же ошибка. Не пойму в чем дело. Использую Delphi XE7.

Вывод разного содержимого через условие (как?)

$
0
0
Коллеги, добрый день.

Покажите пожалуйста пример в коде.

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

Спасибо.

Generic Типы и UpCast к базовому интерфейсному типу(ковариантность обобщений)

$
0
0
Всем привет, имеется следующий код:
Код:

public abstract class Shape { }
    public class Circle : Shape { }

    public interface IContainer<T>
    {
        T Figure { get; set; }
    }

    public class Container<T> : IContainer<T>
    {
        public T Figure { get; set; }

        public Container(T figure)
        {
            this.Figure = figure;
        }
    }

    class Program
    {
        static void Main()
        {
            Circle circle = new Circle();

            IContainer<Circle> container = new Container<Circle>(circle);

            Console.WriteLine(container.Figure.ToString());

            // Delay.
            Console.ReadKey();
        }
    }

Итак, вкратце - что я понял в данном примере.

В данном примере мы сперва создаем абстрактный класс с именем Shape{}, затем мы создаем конкретный класс с именем Circle - который наследуется от абстрактного класса shape.

далее мы создаем открытый интерфейс с именем IContainer - параметризированный - указателем места заполнения типом Т , и в теле данного интерфейса, мы создаем абстрактное авто-свойство с именем Figure - типа указателя места заполнения типа Т.

Далее vss создаем класс с именем Container - который реализует интерфейс IContainer, который в свою очередь(интерфейс) параметризирован типом места заполнения типом Т.

В теле класса Container мы реализуем абстрактное свойство Figure, и после этого мы создаем конструктор, который принимает один аргумент типа указателя места заполнения типом Т, и в теле этого конструктора мы авто свойству Figure присваиваем значение аргумента данного конструктора нашему свойству.

Далее, в классе Program, в теле метода Main(), мы создаем экземпляр класса Circle - который как мы помним наследуется от абстрактного класса Shape.

На строке:
Код:

IContainer<Circle> container = new Container<Circle>(circle);
- мы создаем переменную с именем container - типа базового интерфейсного типа IContainer, а параметр типа места заполнения типом Т у этого базового интерфейсного типа мы "закрываем" нашим типом Circle.

Условно разделим приведенную ниже строку на две части:

IContainer<Circle> container = new Container<Circle>(circle);

(подчеркнутая - первая часть , жирная - вторая часть)

- в итоге мы ожидаем создаваемый во второй части строки - экземпляр класса Container - ожидаем привести его к базовому интерфейсному типу Icontainer, но в самом созданном экземпляре будет хранится свойство того типа, которым мы "закрываем" место заполнения типом Т при создании данного экземпляра - а т.к в данном случае мы "закрыли" при создании экземпляра типом Circle, то в данном случае внутри данного экземпляра будет храниться свойство Figure типа Circle(а точнее реализация этого свойства из конкретного класса Container наследуемого от интерфейса IContainer)

Вот мой вопрос: с абстрактным классом Shape{} и конкретным классом Circle{} - наследующим его - все понятно.

Затем, кто-нибудь объясните толком и по человечески что такое интерфейс и для чего он нужен (нет, я конечно его изучал, но толком не понял; вот например про делегаты мне простым языком объяснили так - "Делегаты — это способ сделать следующее: взять произвольный кусок кода, упаковать его в объект (экземпляр делегата) и вызвать этот кусок кода в любом месте, куда получится передать ссылку на наш экземпляр делегата." - может это и не совсем правильно, но это понятно!)

С авто свойством, его реализацией и конструктором - ине тоже все понятно.

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

И мой самый главный вопрос также вытекает из "что такое интерфейсы - толком" - непонятно зачем мы передаем конструктору уже готовый экземпляр класса Circle, - т.е неужели мы его(этот экземпляр передаваемый как аргумент конструктора) приводим к типу этого интерфейса.

напоследок вот картинка, на которой я пытался разобраться в ситуации:приложено к теме

Изображения
Тип файла: jpg Безымянный.jpg (40.6 Кб)

Не могу открыть курсач в текстовом редокторе после установки десятки

$
0
0
Ребята, есть проблема одна переставил винду с восмерки на десятку,после этой перестановки не могу открыть файл своей курсовой... Почему? кто может сказать

помогите исправить код

$
0
0
Здравствуйте!помогите пожалуйста! Составить программу, которая содержит динамическую информацию о наличии автобусов в автобусном парке. Сведения о каждом автобусе содержат: • номер автобуса; • фамилию и инициалы водителя; • номер маршрута. Программа должна обеспечивать: • начальное формирование данных обо всех автобусах в парке в виде списка; • при выезде каждого автобуса из парка вводится номер автобуса, и программа удаляет данные об этом автобусе из списка автобусов, находящихся в парке, и записывает эти данные в список автобусов, находящихся на маршруте; • при въезде каждого автобуса в парк вводится номер автобуса, и программа удаляет данные об этом автобусе из списка автобусов, находящихся на маршруте, и записывает эти данные в список автобусов, находящихся в парке; • по запросу выдаются сведения об автобусах, находящихся в парке, или об автобусах, находящихся на маршруте. Проблема в том, что не получается "отправить автобус из парка на маршрут" и наоборот. Помогите, пожалуйста, исправить код.
PHP код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
 
#define FIO 64
#define IN 0
#define OUT 1
 
struct node 
{
    
int busnumbbusmarshrutis_in_park;
    
char driver[FIO];
    
struct nodenext;
};
struct node *n;
 
// добавление элемента в список
struct node *list_add(struct node **p, const int busnumb, const int busmarshrut, const chardriver )
{
    
struct node *= (struct node*)malloc(sizeof(struct node));
    if (
== NULL)
    {
        
puts"Can't add new item. Something with memory." );
        return 
NULL;
    }
    
n->next = *p;
    *
n;
    
n->busnumb busnumb;
    
n->busmarshrut busmarshrut;
    
n->is_in_park 0;
    
strcpy(n->driverdriver );
    return *
p;
}
// удаление элемента из списка
void list_remove(struct node **p)
{
    if (*
!= NULL)
    {
        
struct node *= *p;
        *
= (*p)->next;
        
free(n);
    }
}
// поиск автобуса по номеру
struct node** list_search_number(struct node **n, const int busnumb)
{
    while (*
!= NULL)
    {
        if ((*
n)->busnumb == busnumb)
        return 
n;
        
= &(*n)->next;
    }
    return 
NULL;
}
// вывод списка на экран
void list_print(struct node *n, const int inout)
{
    
puts("");
    if (
== NULL)
        
printf("Ваш список пока пуст!\n");
    while (
!= NULL)
    {
        if (
inout == IN && n->is_in_park == OUT )
            ;
        else 
            if (
inout == OUT && n->is_in_park == IN )
                ;
            else
                
printf"№: %d, \tМаршрут: %d, \tВодитель: %s, \tIN/OUT: %d\n",n->busnumb,n->busmarshrut,n->driver,n->is_in_park );
        
n->next;
    }
}
 
void list_inout(struct node *n, const int inout)
{
    
int busnumb;
    
struct node *n;
    
printf("Введите номер автобуса: ");
    
scanf("%d", &busnumb);
    if (
list_search_number(&nbusnumb) == NULL )
        
puts("Нет автобуса с таким номером!");
    return;
    
= *(list_search_number(&nbusnumb));
    
p->is_in_park inout;
}
 
void menu (void)
{
    
int c 0;
    
char s[80];
    
puts"\n\tМеню:" );
    
puts" 1) Вывод списка." );
    
puts" 2) Список автобусов, находящихся на маршруте." );
    
puts" 3) Список автобусов, находящихся в парке." );
    
puts" 4) Отправить автобус на маршрут" );
    
puts" 5) Отправить автобус в парк" );
    
puts" 6) Выход из меню" );
    for ( ; ; )
    {
        do
        {
            
printf ("\nВыберите пункт: ");
            
gets(s);
            
atoi(s);
        }
        while (
<= || 6);
        
        switch (
c
        {
            case 
1list_print(n);
                    break;
            case 
2list_print(nOUT );
                    break;
            case 
3list_print(nIN );
                    break;
            case 
4list_inout(nIN );
                    break;
            case 
5list_inout(nOUT );
                    break;
            case 
6: exit(0);
        }
    }
}
 
int main(void)
{
    
setlocale (LC_ALL"rus");
    
printf ("Лабораторная работа №10\nЧасть 2\nВариант 1\nЗадание:\nСоставить программу, которая содержит динамическую информацию о наличии автобусов в автобусном парке.");
    
list_add(&n12"Петров И. И." ); // заполнение списка
    
list_add(&n21"Иванов М. С." );
    
list_add(&n31"Колёскин И. М." );
    
list_add(&n43"Сидоров С. С." );
    
menu ();
return 
0;



Алгоритмы планирования

$
0
0
Здравствуйте.
На лабораторную работу необходимо "Разработать оконное приложение для сравнения работы двух алгоритмов планирования".
1. Выбор следующим самого короткого процесса
При реализации необходимо предусмотреть следующие функции:
- выбор количества заданий в очереди (от 2 до 10);
- запуск и остановка процесса выполнения;
- выбор размера кванта времени выполнения;
- назначение времени выполнения для каждого задания в случайном порядке;
- расчет самого короткого времени выполнения исходя из последнего времени выполнения заданий;

2. Справедливое планирование
При реализации необходимо предусмотреть следующие функции:
- выбор количества заданий (для каждого пользователя) в очереди (от 2 до 10);
- выбор количества пользователей (от 2 до 5);
- запуск и остановка процесса выполнения;
- выбор размера кванта времени выполнения;
- назначение времени выполнения для каждого задания;

В принципе писать можно на любом языке Java, C++, C#,
Я просто очень слабо представляю как это всё реализовать. Можете описать схематически или примерами кода?
Заранее спасибо.

Игровые симуляторы открыли просто решение для увеличения лояльности населения к местным властям

$
0
0
Посадили деревья, парки - народ доволен.
без особых вложений эффективно.

кто бы мог подумать :rolleyes:

Восполнить пробелы в знаниях

$
0
0
Добрый день, уважаемые программисты! Хочется задать теоретический вопрос. Решал я задачку на одном известном ресурсе. Задача называется A-B. Два неотрицательных числа, которые не превышают 10^1000 степени. Нужно вычесть одно из другого. Решил я цифры числа хранить в массиве.
Отсюда суть вопроса возникает!
Создал свой тип
Код:

type
  tarr=array[0..1001] of -9..9;

для экономии памяти, как я думал.
Написал код, отправил на проверку и обнаружил, что программа прошла 13 тестов из 15. На 14 завалилась. Целый день я тестил свою программу разными входными данными и даже дважды ее улучшал, но не в том направлении, т.к. 14 тест мне уже в восьмой раз показывал Wrong answer. И тут я просто от безысходности заменил -9..9 на integer и всё! Задача была сдана! Объясните пожалуйста, почему так???? Ведь цифры не превышают диапазон -9..9, что там такое случилось?
И попутно задам второй вопрос, чтобы не засорять форум:
что эффективнее использовать(память/время) для хранения чисел: список или же динамический массив?
Спасибо!

Помогите написать за деньги

$
0
0
Для работы нужна база клиентов.
Суть базы:
имя клиента,
номер машины,
когда вышел пропуск
когда пропуск заканчивается
контакты
Быстро найти машину по поиску в базе.
Отправляла смс у кого заканчивается пропуск
Или пропуск аннулируется(эту инфу все "берут" с сайта Департамента транспорта).
Такое возможно сделать?если возможно,то пишите на почту.

VirtualTreeView + сканер Штрихкодов

$
0
0
Здравствуйте. Использую Delphi XE 2 и VirtualTreeView.
При использовании сканера штрихкода honeywell 1250g + VirtualTreeView фокус с текущего нода перескакивает на следующий. Т.е. при использовании поиска по штрихкоду со сканера получаю не нужный узел в дереве, а следующий за нужным. При том, что по событию OnKeyPress я пишу
Код:

if Key = #13 then Key := 0;
Подскажите как отключить обработку данных от сканера в VirtualTreeView????
Viewing all 25552 articles
Browse latest View live


Latest Images