Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Как сделать выборку по определенному критерию?

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CLS
PRINT "                         Proekt benzokolonki"
PRINT
 
PRINT "Cena minimum"
PRINT
DIM bk$(10), top$(10), cena(10)
bk$(1) = "BashNeft'": top$(1) = "A95": cena(1) = 33
bk$(2) = "Lukoil": top$(2) = "A95": cena(2) = 30
bk$(3) = "TatNeft'": top$(3) = "A95": cena(3) = 20
bk$(4) = "SurgutNG": top$(4) = "A95": cena(4) = 31
bk$(5) = "MoscowTK": top$(5) = "A95": cena(5) = 35
bk$(6) = "BashNeft'": top$(6) = "A92": cena(6) = 30
bk$(7) = "Lukoil": top$(7) = "A92": cena(7) = 30
bk$(8) = "TetNeft'": top$(8) = "A92": cena(8) = 31
bk$(9) = "SurgutNG'": top$(9) = "A92": cena(9) = 30
bk$(10) = "MoscowTK": top$(10) = "A95": cena(10) = 31
 
INPUT "Marka benz", top$
min = cena(1)
FOR n = 1 TO 10
    IF min > cena(n) THEN min = cena(n): nz = n
NEXT n
PRINT bk$(nz), top$(nz), cena(nz)
нужно сделать выборку по определенному типу топлива и найти минимальную цену этого топлива
как я понял не хватает в строчке нахождения минимума оператора AND и еще одного критерия .
Подскажите пожалуйста.
Ответ: Условие такое. (Для ваших обозначений)
QBasic/QuickBASIC
1
IF min > cena(n) AND top2$ = top$(n) THEN min = cena(n): nz = n
Но есть одно НО! В строке 19 ошибка.
Вы вели переменную, имя которой совпадает с именем массива!
Вот и условие будет неверным. Правильнее переменную назвать
top2$ - что я и сделал в приведенном выше примере.
Вопрос: В двухмерном массиве сделать строки столбцами, столбцы строками

Дан квадратный массив размерностью n на n. Нужно сделать строки столбцами, а столбцы строками
Ответ:
Код Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
program ex;
const n = 5;
var a,b:array[1..n,1..n]of integer;
i,j:integer;
 
begin
for i:=1 to n do
  for j:=1 to n do
  begin
  a[i,j]:=random(9);
  b[j,i]:=a[i,j];
  end;
  
writeln('Исходная матрица: ');
for i:=1 to n do
  begin
  for j:=1 to n do
    write(a[i,j]:3);
  writeln()
  end;
writeln();
 
writeln('Измененная матрица: ');
for i:=1 to n do
  begin
  for j:=1 to n do
    write(b[i,j]:3);
  writeln()
  end;
end.
Вопрос: Нужно сделать БД (msql) под windows на C#

Нужно сделать БД (msql), ПО под windows на C# 

Как вариант с использованием компонентов devexpress.  
Пишите запрос на odan123@yandex.ru  
Заказчик (не посредник) пришлю ТЗ. 
Работа не простая. 

Если сообщение не для этого раздела, просьба к модератору перенести куда нужно.

Это сообщение отредактировал(а) odan1 - 21.11.2016, 18:33
Ответ:
Нужно сделать БД (msql), ПО под windows на C# 

Как вариант с использованием компонентов devexpress.  
Пишите запрос на odan123@yandex.ru  
Заказчик (не посредник) пришлю ТЗ. 
Работа не простая. 

Если сообщение не для этого раздела, просьба к модератору перенести куда нужно.

Это сообщение отредактировал(а) odan1 - 21.11.2016, 18:33
Вопрос: Как сделать выборку?

Код PHP
1
$data = $this->crud->select('dohod' , array('username'=>$name));
есть вот этот код, который берет из базы данных дату, но когда значений по этому логину больше 1 в SQL код берет только первое значение. Как сделать выборку (сортировку) по id, чтобы оно брало последнее значение?
Ответ:
Цитата Сообщение от 97mik Посмотреть сообщение
$this->db->order_by("id", "asc");
Это по возрастанию, а Вам по убыванию нужно
Код PHP
1
$this->db->order_by("id", "desc");
Вопрос: Нужно сделать проверку (выходит ли введенный код в массив или нет, если нет то нужно заново запросить ввести к

Помогите пожалуйста . Нужно сделать проверку (выходит ли введенный код в массив или нет, если нет то нужно заново запросить ввести код)

Вот программа:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
var 
q, h: array of integer; 
 
Text, Text_1, Text_2, text_3, S: String; 
 
i, j, kolsimvolov: integer; 
key1: array of Byte; 
key2: array of Byte; 
p, m,t: Boolean; 
r, b: integer; 
Textmatr: Array of array of Char; 
c:char; 
 
begin 
 
repeat 
writeln('Выберите действие'); 
writeln('1-зашифровать текст'); 
writeln('2-расшифровать текст'); 
writeln('другое - выход'); 
readln(c); 
 
write('введите кол-во строк в матрице : '); 
readln(r); 
write('введите кол-во столбцов в матрице : '); 
readln(b); 
//--— 
setlength(q, r); 
setlength(h, b); 
setlength(key1, r); 
setlength(key2, b); 
setlength(Textmatr, r, b); 
 
 
repeat 
Write('введите текст для кодировки: '); 
Readln(Text); 
kolsimvolov:=Length(text); 
m := (kolsimvolov <= r * b); 
if not(m) then 
writeln('Кол-во символов не должно привышать r*b '); 
until m; 
 
Repeat 
Writeln('Введите ключ 1 , состоящий из ',r,' символов, через "Enter"'); 
for i:=0 to r-1 do 
Readln(key1[i]); 
p:=true; 
for i:=0 to r-1 do 
for j:=i+1 to r-1 do 
if (key1[i] = key1[j]) then 
p := False; 
If Not(p) then 
writeln('Все символы должны быть различны!'); 
Until p; 
Repeat 
Writeln('Введите ключ 2, состоящий из ',b,' символов, через "Enter"'); 
for i:=0 to b-1 do 
Readln(key2[i]); 
t:=true; 
 
for i:=0 to b-1 do 
for j:=i+1 to b-1 do 
if (key2[i]=key2[j]) then 
t:=false; 
If Not(t) then 
writeln('Все символы должны быть различны!'); 
 
Until t; 
 
Writeln; 
//----------------------------------------------------— 
for i := 0 to r - 1 do 
for j := 0 to b - 1 do 
begin 
//OutPutDebugString(PWideChar(inttostr(i)+' '+inttostr(j))); 
if i * b + j + 1 <= Length(Text) then 
Textmatr[key1[i] - 1, j] := Text[(i) * b + j + 1] 
else 
Textmatr[key1[i] - 1, j] := ' '; 
end; 
Writeln(' k1\k2 '); 
For i:=0 to r-1 do 
begin 
Write(' ',i,' '); 
For j:=0 to b-1 do 
write(' ',textmatr[i,j],' '); 
Writeln; 
end; 
case c of 
'1': 
begin 
//----------------------------------------------------— 
Text_1:=''; 
For j:=0 to b-1 do 
for i:=0 to r-1 do 
begin 
S:=textmatr[i,key2[j]-1]; 
Text_1:=Text_1+S; 
end; 
Writeln('Закодированный текст:',' ',text_1); 
end; 
//-----------------------------------------------------— 
'2': 
begin 
Text_2:=''; 
For j:=0 to b-1 do 
begin 
S:=Copy(Text_1,(key2[j]-1)*r+1,r); 
Text_2:=Text_2+S; 
end; 
Text_3:=''; 
For i:=0 to r-1 do 
For j:=0 to b-1 do 
begin 
S:=Copy(Text_2,(j)*r+key1[i],1); 
Text_3:=Text_3+S; 
end; 
Writeln('Раскодированный текст:',' ',Text_3); 
//-----------------------------------------------------— 
write('Нажмите Enter'); 
Readln; 
End; 
else 
begin 
writeln('Программа завершена'); 
//exit; 
end; 
end; 
until not (c in ['1', '2']); 
end.
Ответ:
var key1:= ReadString('Введите ключ №1, состоящий из '{ + r.ToString() + }'символов: ').Select(x -> byte.Parse(x)).ToArray();
Читаем строку символов, и преобразовываем их в тип byte.
var buff:= key1.Select(x -> key1.Where(y -> y = x).Count() > 1);
Формируем массив buff, преобразуя каждый элемент key1 в true, если символ не уникален(есть повторения) и в false иначе
foreach var x in buff do
begin
if x = true
then
begin
NotRepetedElementsFlag:= false;
Writeln('Повторите ввод. Все символы должны бить различны.');
break;
end;
end;
Выводим строку, если есть хотя бы один повторяющийся символ.

Добавлено через 17 минут
Сделал по другому(т.к. byte.parse() чет не оч. в select()). У меня, когда я в ваш код интегрирую, ошибка компиляции вылетает.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    Writeln('Введите ключ 1 , состоящий из ',r,' символов, через "Enter"');
    var NotRepetedElementsFlag: boolean;
    repeat
      NotRepetedElementsFlag:= true;
      for var Counter:= 0 to key1.Length - 1 do
        begin
          Writeln('Введите элемент №' + Counter.ToString() + ': ');
          read(key1[Counter]);
        end;
      if (key1.Select(x -> key1.Where(y -> y = x).Count() > 1).Where(x -> x = true).Count() > 0)
        then
          begin
            NotRepetedElementsFlag:= false;
            Writeln('Повторите ввод. Все символы должны бить различны.');
          end;
    until NotRepetedElementsFlag;
Вопрос: Мне нужно сделать, чтобы когда срабатывает ошибка, программа не вырубалась, а начиналась заново.

Доброго времени суток.
Мне нужно сделать, что-бы когда срабатывает ошибка, программа не вырубалась, а начиналась заново. Если через goto, она выдает ошибку..
Спасибо.
P.s. не люблю использовать goto, но наверное так лучше.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "stdafx.h"
#include <iostream>
#include <fstream>
//#include <conio.h>
 
using namespace std;
double n, y, a, b, x, h;
int z, k;
 
ofstream fout("tester.txt");
 
void checkValidInput() {
    if (cin.fail()) {
        
    }
}
 
double result(double y, double a, double b, double n, double h) {
    x = a;
    for (k = 1;x <= b;x += h) {
        if (x <= 0) { // Первый вариант
            y = 0;
            for (int i = 0; i <= (n - 1); i++)
            {
                for (int j = 0; j <= (n - 1); j++)
                {
                    y += 1 / (x - i + j);
                }
            }
        }
        if (x > 0) { // Второй вариант
            y = 1;
            for (int i = 1;i <= (n - 1); i++) {
                y *= ((1 / x) - (1 / i));
            }
        }
        cout << "x" << k << "=" << x << " y" << k << "=" << y << endl;
        fout << "x" << k << "=" << x << " y" << k << "=" << y << endl;
        k++;
        
    }
    return y;
}
 
int main()
{
    /*int getch();
    cout << "If you want to save the result in a file 'result.txt'. Press 's' for exit press any key." << endl;
    z = getch();*/
    
    try
    {
        cout << "Enter a: ";
        cin >> a;
        checkValidInput();
        cout << "Enter b: ";
        cin >> b;
        checkValidInput();
        en:cout << "Enter n (n > 1): ";
        cin >> n;
        checkValidInput();
        if (n <= 1)
            goto en;
        eh:cout << "Enter h (h > 0): ";
        cin >> h;
        checkValidInput();
        if (h <= 0)
            goto eh;
        checkValidInput();
 
        cout << endl;
 
        if (b < a) {
            double min = a;
            double max = b;
            b = min;
            a = max;
            cout << "Maybe you want enter " << "a = " << a << " b = " << b << endl;
        }
        result(y,a,b,n,h);
    }
    catch (...) 
    {
 
    }
    system("pause");
    return 0;
}
Ответ:
Сообщение от Bombadilxxx
Да. Но мне нужно так, срабатывает ошибка и программа не прекращает работать а переходит на ввод нового значения. Если я ссылаюсь на функцию мейн, она выполняется бесконечно. Как можно такое сделать?
чтобы программа не падала вам нужно правильно обработать возникшие исключения
например с вводом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
void func1()
{
    if(std::cin.fail())
    throw 0;//кидаем исключение
}
int main() 
{
    
    int i = 0;
    
    while (i < 1)
    {
        try
        {
 
                std::cin >> i;
                func1();
        }
        catch (...)
        {
                        //Обрабатываем пойманное исключение
            std::cout << "error\n";
            std::cin.clear(ios_base::goodbit);
            while (cin.get() != '\n');
            i = 0;
        }
    }
    
    system("pause");
    return 0;   
}
Вопрос: Нужно сделать анимацию движения нарисованного стула

Здравствуйте! Я написал программу, рисующую стул, и нужно сделать так, чтобы этот стул просто перемещался по форме слева направо. Я не знаю, как сделать эту анимацию. Собственно, вот сама программа:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
with form1.Canvas do
begin
pen.Color:=clBlack;
 
MoveTo(100,300); //основание
LineTo(150,250);
LineTo(250,250);
LineTo(200,300);
LineTo(100,300);
 
MoveTo(150,250); //спинка
LineTo(150,150);
LineTo(250,150);
LineTo(250,250);
LineTo(150,250);
 
MoveTo(140,300); //1 ножка
LineTo(140,350);
LineTo(150,350);
LineTo(160,340);
LineTo(160,300);
MoveTo(150,350);
LineTo(150,300);
 
MoveTo(250,250); //2 ножка
LineTo(250,350);
LineTo(240,360);
LineTo(230,360);
LineTo(230,270);
MoveTo(240,360);
LineTo(240,260);
 
MoveTo(210,290); //3 ножка
LineTo(210,390);
LineTo(200,400);
LineTo(190,400);
LineTo(190,300);
MoveTo(200,300);
LineTo(200,400);
 
MoveTo(100,300); //4 ножка
LineTo(100,400);
LineTo(110,400);
LineTo(120,390);
LineTo(120,300);
MoveTo(110,400);
LineTo(110,300);
 
end;
end;
end.
Помогите, пожалуйста!
Ответ: Да. Кое-что поясню.

Всё пошагово, для новичков:
Code
1
2
3
4
5
6
7
8
9
10
11
type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    procedure DrawMyChair(C: TCanvas; const X: Integer; const Y: Integer); // добавляем сюда вот это, ставим каретку на эту строку и нажимаем Ctrl+Shift+C
  public
    { Public declarations }
  end;
После Ctrl+Shift+C среда сама создаст фрагмент кода и перебросит на него:
Code
1
2
3
4
procedure TForm1.DrawMyChair(C: TCanvas; const X, Y: Integer);
begin
 
end;
В переводе: Draw - рисовать, My - мой, Chair - стул. Вот там занимаемся рисованием стула. Только стула. Только рисованием. Только на "C" и только в координатах X, Y.
Как-то так:
Code
1
2
3
4
5
6
7
procedure TForm1.DrawMyChair(C: TCanvas; const X, Y: Integer);
begin
C.Pen.Color:=clBlack;
C.MoveTo(X, Y);
C.LineTo(X+50,Y-50);
...
end;
Вызывать нужно только в OnPaint окна, предварительно заблокировав холст:
Code
1
2
3
4
5
6
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Lock;
DrawMyChair(Canvas, 100, 300);
Canvas.UnLock;
end;
И вот заготовка работает! Но надо же в разных координатах? Точнее пока только менять (передвигать)?
Ну раз так делаем дальше:
Code
1
2
3
4
5
6
7
8
9
10
11
12
type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    MyChairPos: TPoint; // добавили переменную "позиция стула", как поле класса, глобальную переменную было бы некорректно
    procedure DrawMyChair(C: TCanvas; const X: Integer; const Y: Integer);
  public
    { Public declarations }
  end;
Тогда надо при создании окна заполнять нашу переменную начальным значением, в OnCreate:
Code
1
2
3
4
5
procedure TForm1.FormCreate(Sender: TObject);
begin
MyChairPos.X:=100; // перенесли число из OnPaint
MyChairPos.Y:=300; // перенесли число из OnPaint
end;
А в самом OnPaint меняем так:
Code
1
2
3
4
5
6
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Lock;
DrawMyChair(Canvas, MyChairPos.X, MyChairPos.Y);
Canvas.UnLock;
end;
И в таймере просто меняем значения MyChairPos и вызываем Refresh;
Вопрос: Нужно сделать сохранение значения label в файл и обратную загрузку значений в label

Нужно сделать так, чтобы при нажатии на кнопку "Сохранить", мои 5 надписей на странице были сохранены в текстовый файл. А при нажатии на кнопку "Загрузить", все те данные, которые мы сохранили были выведены в те же label. На фото не видно, но там правее еще есть label. Вот нужно их значения сохранять и выводить. Надеюсь хоть тут помогут
Ответ: Мне просто очень нужно решение.

Добавлено через 7 часов 26 минут
АУУУ.... КТО НИТЬ ОТЗОВИТЕСЬ! Мне очень нужно, скоро сдавать проект(сайт). Может кто-то сможет просто доступно объяснить?
Вопрос: Создать меню, в котором пользователь сам сможет выбирать, что ему нужно сделать, пока не нажмет кнопку выхода

Всем доброго времени суток! Есть небольшая проблема с меню в С++. Задача: создать меню, по которому пользователь сам сможет выбирать, что ему нужно сделать, пока не нажмет кнопку выхода.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
int count, count2;
    double Real1, Im1, Real2, Im2;
    do
    {
        cout << "Menu\n";
        cout << "1. Create complex\n";
        cout << "2. Addition\n";
        cout << "3. Subtraction\n";
        cout << "4. Multiplication\n";
        cout << "5. Division\n";
        cout << "6. Cout <<\n";
        cout << "0. End\n";
        cin >> count;
        switch (count)
        {
        case 1:
        {
            cout << "1. Enter first complex\n2.Enter second complex\n";
            cin >> count2;
            if (count2 == 1)
            {
                cout << "Enter Real and Im\n";
                cin >> Real1 >> Im1;
                Complex value1(Real1, Im1);
            }
            if (count2 == 2)
            {
                cout << "Enter Real and Im\n";
                cin >> Real2 >> Im2;
                Complex value2(Real2, Im2);
            }
            break;
        }
        case 2: cout << "Not ready\n";
        case 3: cout << "Not ready\n";
        case 4: cout << "Not ready\n";
        case 5: cout << "Not ready\n";
        case 6: cout << value1 << valu2;
        default:
            break;
        }
    } while (count != 0);
Проблема в том, что он не видит value1 и value2, которые я ввожу в первом case. Помогите пожалуйста, может можно как-то открыть видимость на эти переменные? или меню может как-то по другому реализоваться?
Буду рад за помощь!
Ответ: Я вроде так и сделал)
Вопрос: Что нужно сделать, чтобы запустилась программа?

Что нужно сделать, чтобы запустилась программа?
Ответ: Ошибка:
"access violation at address in module ...
Говорит, о том, что Вы пытаетесь обратится к переменной, для которой не выделена память, почти всегда решить её можно: variable:=T<тип компоненты>.create.
А остальное - нужно смотреть сам код.

Добавлено через 9 минут
Ну или эта память была преждевременно освобождена методом ".FREE"