PDA

Просмотр полной версии : Студентам с лабораторными сюда


Страницы : 1 2 [3] 4 5 6 7 8 9 10 11 12

WinTREI
06.05.2008, 22:07
а чоу мою задачку пропустили ><

Дан типизированный файл символов. Все символы цифр записать в конец файла.

пояснение:

дан файл с символов, нужно найти среди символов - символы чисел и вывести их в конец файла.

Myst
06.05.2008, 22:32
Т.е. все цифры перенести в конец ЭТОГО ЖЕ файла?
De-visible: ДА.

Myst
06.05.2008, 23:58
WinTREI

Program qwer;

Var
a:char;
s:string;
infile:text;
Begin

assign(infile,'yourfile.txt');
reset(infile);
s:='';
repeat
read(infile,a);
case a of
'0'..'9': s:=s+a+' ';
end;
until eof(infile);

close(infile);
append(infile);
writeln(infile,s);
close(infile);
End.

Catsy
07.05.2008, 14:41
:mad: up
функции
дано число n, ну то есть его вводят, потом дано некоторое число, ск которого начинается проверка, таким образом получаем некоторую последовательно чисел
то есть например, вводишь 100, и вводишь число, с которого начинается последовательность, например 233, получается в результате массив из целых чисел, начиная от 233, заканчивая 333
из них, нужно найти те числа, из которых можно извлечь корень
например от 1 до 10, должно вывести 4 9

criz
07.05.2008, 14:42
Люди, сроки поджимают. Хелп ми :)
Изменил код.

memcpy( pkt, srcmac, 7);
memcpy( (void *)(pkt + 7), (void *)destmac, 7);
memcpy( (void *)(pkt + 14), &ip_hd, 20 );
memcpy( (void *)(pkt + 14 + sizeof(ip_hd)), &tcp_hd, 20);

Но, экзепшен вылетает =(

krypt3r
07.05.2008, 14:54
подскажи, что добавить чтоб выводилось на экране, а не в файле?
WinTREI, третью с конца строку

writeln(infile,s);

замени на

writeln(s);

criz
07.05.2008, 16:40
дано число n, ну то есть его вводят, потом дано некоторое число, ск которого начинается проверка, таким образом получаем некоторую последовательно чисел
Если я не забыл паскаль, то код должен быть примерно такой:

var
beg, end, k : double ;
i : integer ;
begin
readln(beg, end);

for i=beg to (beg+end) do
begin
k = sqrt(i);
if i / k = k then
writeln(i);
end;
end;

Catsy
07.05.2008, 20:20
Если я не забыл паскаль, то код должен быть примерно такой:

что-то тут вобще не понятное, да и через функции надо :rolleyes:

Myst
08.05.2008, 00:09
Catsy
Program qwer;

Var

n,k,i:integer;

Function kvadrat(i:integer) : boolean;
begin
if frac(sqrt(i))=0 then
kvadrat:=true else
kvadrat:=false;
end;


Begin
write('Введите количество чисел ');
readln(n);
write('Введите начальное число ');
readln(k);
for i:=k to k+n do
if kvadrat(i) then
begin
write(i);
write(' ');
end;
readln;
End.

TheSoul
09.05.2008, 12:20
C++
Помогите пож-та ...
Дана последовательность символов a1 ... an . Удалить из последовательности все группы букв типа "abcd"

043nKRuT0y
09.05.2008, 20:46
Нужно организовать имитатор калькулятора для операндов любого типа !!!
Я накидал некий код :
#include <stdio.h>
#include <conio.h>

void main()
{
clrscr();
float a=0,b=0,res=0;
char o;
int ok;
printf("Input Operation");
scanf("%lf%c%lf",&a,&o,&b);
ok = 1;
switch(o){
case '+' : res = a+b;break;
case '-' : res = a-b;break;
case '*' : res = a*b;break;
case '/' : if (b=0) ok = 2;
else {
res = a/b;break;
}
default : ok = 0;
}
if (ok == 1){
printf("%.2f%c%.2f=%.2f",a,o,b,res);
}
else{
if (ok == 0)printf("Unknow Operation %c",o);
else{
puts("Divizion By Zero");
}
}
getch();
}
но нужно штобы он работал для любого типа (int , float ,unsigned) через шаблоны классов типа templete <class Type> !!! Ветом разобраться немогу!!! Кто знает как ето организовать поделитесь кодом , с меня + ;

CbIcTeMn1k
09.05.2008, 23:31
Дано:
Корень из 2 + под корнем еще прибовляется корень из 2 + сного корень из 2х приболяется и так n раз задающаяся переменной пользователя... буду оч. благодарен если будет решение, сам я ее не могу доконца решить...
√(2+√(2+√(2+√(2+...+√(2+√2) ) ) ) )

De-visible
09.05.2008, 23:38
Будь добр отредактируй свое сообщение и уточни язык программирования на котором надо реализовать...
+ Эта последовательность точно не определена?

Delimiter
10.05.2008, 00:24
2 TheSoul

примерно так строка str

for(int i=0;*(str+i)!=0;i++)
{
for(int j=1;*(str+i+j)!=0 && *(str+i)+j==*(str+i+j);j++) ;
if(j>1)
{
strcpy(str+i,str+i+j);
}
}

WinTREI
10.05.2008, 10:35
опять контрольная ><
помогите плиз :cool: (Паскаль)

Текстовый файл содержит информацию о номерах гостиницы: номер, категория, количество мест, количество проживающих, наличие телевизора, стоимость за место.
Например:
456, эконом, 2, 1, есть, 500 руб.
Считать этот файл и переписать в типизированный файл, записав данные в соответствующие поля.
Получить следующие сведения:
А) свободные номера люкс.
Б) самые дорогие номера (номера, которые приносят самую большую выручку и при этом, количество мест не превышает 2).
В) найти номера, в которых есть свободные места, и имеется телевизор.
Выполнить задание без использования массива.

Delimiter
10.05.2008, 17:49
2 Системник!!! (CbIcTeMn1k)

Task:√(2+√(2+√(2+√(2+...+√(2+√2) ) ) ) )

double decide(int curn,int N)
{
double rez;
if(curn<N)
{
rez=sqrt(2+decide(curn+1,N));
}
else
rez=sqrt(2));
return rez;
}

/*
вызов .... */
decide(0,n);

Myst
10.05.2008, 18:41
CbIcTeMn1k
А это если на паскале:

program qwer;
var
q:real;
i,n:integer;
begin
write('Введите n');
read(n);
q:=sqrt(2);
for i:=1 to n-1 do
q:=sqrt(q+2);
write('Ответ: ');
write(q:2:10);
readln;
end.

CbIcTeMn1k
11.05.2008, 15:52
Delimiter, Myst Спасибо вам, оч благодарен...

avton0m
11.05.2008, 17:23
Помогите с решением. Можете, пожалуйста, не писать код, а только разяснить алогоритм,а то так ничему не научусь.

Имеются N человек, и матрица A(N;N)
Для А справедливо A[i;j]=1, если i и j знают друг друга.
Можно ли разбить всех людей на 2 группы, так, чтоб в каждой группе были только незнакомые люди? Если да, то как.

Delimiter
11.05.2008, 17:32
если по условию это можно сделать, разбить всех людей на 2 группы
то проще простого
сортируешь матрицу так что в верхней строчке оказались те у кого больше всех знакомых

берешь 1-го и выбираешь всех с кем он не знаком(ПРОВЕРЯЕШЬ ЧТО НЕ ЗНАКОМЫЕ НЕ ЗНАКОМЫ ДРУХ С ДРУХОМ), это и будет первая группа, а остальные вторая, естественно проверка должна дать, что это действительно так!

В итоге если нельзя так сделать то ответ должен быть "Разбить на 2 группы нельзя"

представь себе человека который знаком сразу с 2-мя человеками, и сразу станет все на место! Куда ты его поместишь и что делать с его знакомыми?

avton0m
12.05.2008, 18:24
Спасибо, а не мог ты б рассказать мне математическую сущьность этого алгоритма. Т.е. почему так?

Delimiter
12.05.2008, 20:58
ну сущности то нет!
Ведь это есть "тупое" раскидывание на 2 группы, суть его сводится к
ЕСЛИ ЧЕЛОВЕК ЗНАЕТ ДРУГОГО ТО ЕГО В ДРУГУЮ ГРУППУ!

Stern
12.05.2008, 21:18
Язык паскаль......девушка припахала........

Даны: n, матрица a(2n*2n). Матрица а естественным образом развивается на 4 блока n*n:
1 | 2
-----
3 | 4
Поменять местами блоки 2 и 3. Исходные данные прочитать из файла. Результаты вывести в новый файл

De-visible
12.05.2008, 21:37
Вот код, для массива заданного как константа:

program zamena;
const
n=3;
k=n*2;
a:array [1..k,1..k] of integer= ((0,2,1,2,5,6),
(4,5,7,8,1,8),
(0,6,2,3,3,4),
(5,6,1,9,7,1),
(1,2,3,4,5,6),
(6,5,4,3,2,1));
Var
buff:integer;
i:integer;
j:integer;
Begin
For i:=1 to k Do
Begin
For j:=1 to k DO write(a[i,j],' ');
writeln;
end;

For i:=1 to k Do
Begin
For j:=n+1 to k Do
Begin
If i<=n then
Begin
buff:=a[i,j];
a[i,j]:=a[i+n,j-n];
a[i+n,j-n]:=buff;
End;
End;
End;
writeln;
writeln('RESULT:');
writeln;
For i:=1 to k Do
Begin
For j:=1 to k DO write(a[i,j],' ');
writeln;
end;
readln;

End.
Ввод, вывод, думаю сам сможешь:) ;)

Результат:

http://www.valar.ru/gallery/0508/1210619740_.png

avton0m
13.05.2008, 22:13
Delimiter, вроде так вот?


#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>

#define N 4

int m[N][N];
void fill_m();
void out_m();


int cnt[N];

int main()
{
fill_m();
out_m();

for(int i=0;i<N;i++) // idem po personam
{
for(int j=0;j<N;j++) // idem po znakomstvam
{
if(m[i][j]==1) cnt[i]++;
}
}
int top_m=0; // bolshe vsego znak
int max=0;
for(i=0;i<N;i++)
{
if(cnt[i]>max) {max=cnt[i]; top_m=i;}
}


cout << "\n\nOdna gruppa:\n";
for(int j=0;j<N;j++)
{
if(m[top_m][j]==0) cout << " " << j << " ";
}
cout << " & " << top_m << "\n";

out_m();
getch();
return 0;
}

void fill_m()
{
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
cout << i << " with " << j <<": ";
cin >> m[i][j];
}
cout << "\n";
}
}

void out_m()
{
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
cout << m[i][j];
}
cout << "\n";
}

}

Stillik
14.05.2008, 22:35
Помогите плз! Нада решить задачу:

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

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

De-visible:Может ЯП уточнишь?
Sorre, забыл, Pascal

B1t.exe
15.05.2008, 15:20
Привет народ !

помогите кто небудь написать программу для зачета .. достали уже преподы :(
программа можете написать на чем угодно, лишь бы выполнял следующие пункты:
- построение ЭЛИПС
- Сдвиг и вращение элипса
- предусмотреть возможность одновременного появления нескольких (n=4) обектов с начальной позицией в разных местах экрана и противоположным направлением движения
- процедуры управлением цветом, толшиной контура линии
МЕНЮ
- выбор количества обектов (n=1, 2, 3, 4)
- Выбор характера движения (скорость, начальная позиция)
БЕГУЩАЯ СТРОКА
- Появляется до выполнения основного блока программы, содержит информацию об авторе.

Stillik
15.05.2008, 19:03
Помогите плз! Нада решить задачу:

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

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

De-visible:Может ЯП уточнишь?
Sorre, забыл, Pascal

Кому интересно, я узнал как она решается!


program slova;
Uses Crt;
var
stroka, slovo,s : string;
i, max : integer;
begin
ClrScr;
WriteLn('введите текст с любыми разделителями ');
TextColor(Cyan);
ReadLn(stroka);
stroka:=stroka + '.';
i:= 1; TextColor(LightGreen);
while Length(stroka) <> 0 do
begin

if pos(copy(stroka,i,1),' ,.?!-:;') <> 0

then begin
slovo := copy(stroka,1,i-1);
if length(slovo)=4 then
begin
s:=s+' '+slovo[1];
end
else s:=s+' '+slovo;
delete(stroka,1,i);
i := 1;
end
else i := i+1;
end;
writeln(s);
ReadLn;

end.

De-visible: Не забывай теги [code]

Sipitah
15.05.2008, 23:35
Помогите написать 6 прог в паскале!!! очень срочно!!! ответы в личку!!!
De-visible: Лучше дай ссылку на архив с заданиями!

Sipitah
16.05.2008, 00:57
Надо найти сумму элементов последовательности x=(x1,x2,...,xn), начиная от первого отрицательного элемента и до конца последовательности!!!

Надо составить прогу обработки массива (n=7). В эхо-проверке выводить его элементы по k штук в строке.

Заранее благодарен!!!

Sipitah
16.05.2008, 01:01
ещё надо :

Составьте процедуру Max_rearrange, находящую макс по модулю элемент в каждой строке квадратной матрицы A и осуществляющую его перестановку с соответствующим диагональным элементом !!!

Тоже надо решить! оч. прошу!!!

Garfi
16.05.2008, 16:52
Надо найти сумму элементов последовательности x=(x1,x2,...,xn), начиная от первого отрицательного элемента и до конца последовательности!!!



uses crt;
var a: array [1..100] of longint;
i,k,n,s:integer;
begin
clrscr;

{vvod elementov, k-kol-vo elementov}

for i:=a[1] to k do
if a[i]<0
then i:=n;

s:=0;
begin
for i:=a[n] to k do
s:=s+a[i];
end;

writeln(s:5:2);
readln;
end.

алгоритм набросал, дальше сам...

Sipitah
16.05.2008, 17:13
Пасибки

Far2k
18.05.2008, 22:28
Так никто и незнает как первую часть задачки сделать? (Паскаль)

Разработать программу, которая позволяет найти площадь заштрихованной области:

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

http://avoreg.ru/pic_s/f45e17b886006d1b3f97803c579ca44d.jpg (http://avoreg.ru/v.php?id=f45e17b886006d1b3f97803c579ca44d)

Kaban
19.05.2008, 08:14
Привет, помогите пожалуйста с лабами по Delphi.

1) Данны 3 массива целых чисел: (4*5), (5*5), (5*4). Вставить после первого столбца, содержащего хотя бы один нулевой элемент, столбец из единиц. Использовать StringGrid.

2) Создать приложение, предлагающее пользователю ввести массив строк и выдающее минимальную длинну строки в массиве строк. Выделить самую короткую строку символом "!". Если строк с минимальной длинной несколько, выдать сообщение.

3) Имеется список, элементами которого являются вещественные числа. Создать консольное приложение, описывающее подпрограмму, которая добавляет в начало списка элемент, равный минимальному элементу в списке.

Помогите пожалуйста с этими лабами, а то я вообще не знаю Delphi и паскаль.

freddi
19.05.2008, 09:51
вопрос от Undernative:

Quant'овый (09:46:45 19/05/2008)
7. Сколько раз встречается заданное слово.
Определить, сколько раз в строке встречается заданное слово.


Quant'овый (09:46:53 19/05/2008)
Задача по строкам

на делфи. от меня и от него по +5 ))

krypt3r
19.05.2008, 14:22
program laba07;

var
p, cnt : integer;
str, sub : string;

begin
write ('Vvedite stroku: ');
readln (str);
write ('Vvedite iskomuyu podstroku: ');
readln (sub);
cnt := 0;
repeat
p := pos (sub, str);
if p > 0 then begin
delete (str, 1, p + length (sub));
inc (cnt);
end;
until p = 0;
writeln ('Kolichestvo: ', cnt);
end.

CorAX
19.05.2008, 14:48
Помогите плиз!
Нужно аписать игру "Пулемёт" на с++.
Правила игры. Пулемёт находится в нижнейчасти экрана, может перемещаться вправо и влево с помощью клавиш управлением курсора и стрелять. Слева направопо экрану перемещаются различные обьекты. При попадании из пулемёта объект взрывается.

Разработать иерархию классов для представления пулемёта и различных (два- три) типов объектов.

Delimiter
19.05.2008, 23:57
2 CorAX

С этим справиться не сложно. Просто тут в основном помогают тем, чей код может уместиться в качестве соурса! Ждать что будут делать проект заливать на слил.ру и выкладывать стцылку на него - ГЛУПО ! :D

Ping.Win
20.05.2008, 15:54
Зачет горит, нужна программа на Java
Создать двумерный массив и заполнить его сотней любых чисел и найти максимальное число. Помогите, есль не трудно, буду очень благодарен :)

Forcer
20.05.2008, 18:20
Ping.Win

public static void main(String[] args) {
int range = 100; // диапазон возможных случайных значений
int size = 10; // размер матрицы = size * size
int array[][] = new int[size][size];
int maxElement = 0;

for(int i=0; i < size; i++) {
for(int j=0; j < size; j++) {

// заполняем массив случайными элементами
array[i][j] = (int) (Math.random() * range);

// выводим на экран элементы массива
System.out.print( "" + array[i][j] + '\t');

// определеяем максимальный элемент массива
// (можно вынести в отдельный цикл/метод/etc)
if( i == 0 && j == 0) {
maxElement = array[i][j];
} else {
maxElement = Math.max( maxElement, array[i][j]);
}
}
System.out.println();
}

System.out.println("Max element of matrix is " + maxElement);

}

redlain
20.05.2008, 19:27
надо сканер компов под win32 с показанием шары на компе + сканер портов по заданному ip + сниффер - С++

groundhog
20.05.2008, 19:29
Пароли от всего чего только можно тырить должно?

Платить готовы? Ибо это не лаба...

UltraLogistic
20.05.2008, 21:08
Кто может, решите плиз задачку, оч надо :)

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

заранее спасибо :p

MaDfUn
21.05.2008, 00:27
Оригинал:
Скласти алгоритм для перевірки правильності розстановки фігурних дужок у текстовому файлі – програмі на Сі.
-----------
Составить алгоритм для проверки правильности розстановки фигурных скобок в текстовом файле---программе на Си
ЗЫ
язык C#, тому кто поможет решить ещё пару задачек 6 знак в подарок огромная благодарность, если есть желание и время стукните в аську 7872092....

}I{ek
21.05.2008, 12:39
Помогите плз
Разреженный массив на основе статического массива указателей
Тип элементов раз-реженного массива данных - структура с полями: регистрационный номер, ФИО, ад-рес, ИНН.
Данные. Размер массива, массив указателей на данные.
Операции. Конструктор с параметром, инициализирующий размер массива и запол-няющий все элементы массива указателей значением 0. Получение значения элемента по его индексу. Подсчет количества непус-тых элементов в массиве данных. Вывод элементов массива.
вот лаба :

#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <vcl.h>
#pragma argsused
struct info
{
int RegCode;
char FIO[25];
char Address[255];
int INN;
};

class array
{
private:
int size;
info** a;
int counter;
void SetArray( int );
public:
array( int );
~array();
void Input();
void Output();
void OutputByIndex();
void GetSize();


};
array::array(int size)
{
SetArray(size);
}
array::~array()
{
for( int i = 0; i < counter; i++ )
{
delete a[i];
}
delete []a;
}
void array::SetArray(int siz)
{
a = new info*[siz];
for(int i = 0; i < siz; i++)
{
a[i] = 0;
}
size = siz;
counter = 0;
}
void array::Input()
{

if( counter != size )
{
a[ counter ] = new info;
cout << "Input registration code: ";
cin >> a[ counter ]-> RegCode;
cout << "Input FIO: ";
cin.get();
cin.getline(a[ counter ]->FIO, 25);
cout << "Input address: ";
cin.getline(a[ counter ]->Address,255);
cout << "Input INN: ";
cin >> a[ counter ]->INN;
counter++;
}
else
{
cout << "Error. Array is full";
}
}
void array::Output()
{
if( counter )
{
for( int i = counter - 1; i >= 0; i--)
{
cout << "Registration code: " << a[ i ]->RegCode << "\n";
cout << "FIO: " << a[ i ]->FIO << "\n";
cout << "Address: " << a[ i ]->Address << "\n";
cout << "INN: " << a[ i ]->INN << "\n";
cout << "\r\n";
}
}
else
{
cout << "Error. Array is empty";
}
}
void array::OutputByIndex()
{
int ind;
cout << "Input index: ";
cin >> ind;
if( counter )
{
if( ind >= counter )
cout << "Error. Index out of range";
else
{
cout << "Registration code: " << a[ ind ]->RegCode << "\n";
cout << "FIO: " << a[ ind ]->FIO << "\n";
cout << "Address: " << a[ ind ]->Address << "\n";
cout << "INN: " << a[ ind ]->INN << "\n";
cout << "\r\n";
}
}
else
cout << "Array is empty\n";

}
void array::GetSize()
{
cout << counter << "\n";
}
void menu()
{
cout<<"\n Viberite:\n";
cout<<"\n1. vvod.";
cout<<"\n2. vivod";
cout<<"\n3. vivod po indeksu.";
cout<<"\n4. kol-vo";

}


void main()
{
array obj(999999);
int i;
while (true)
{
menu();
cin>>i;
clrscr();
switch(i)
{
case 1: obj.Input(); break;
case 2: obj.Output(); break;
case 3: obj.OutputByIndex(); break;
case 4: obj.GetSize(); break;
default : cout<<"\nError!\n" ;
}
}
}
//---------------------------------------------------------------------------



Помогите плз сделать перегрузку операций :
[] Доступ к элементу массива(вывод по индексу)
= Присваивание массива
= = Проверка массивов на равенство
! Удаление всех данных из массива

Forcer
21.05.2008, 18:08
изменил(добавил код) структуру:

struct info {
int RegCode;
char FIO[25];
char Address[255];
int INN;

bool equals(const info& obj) {
return ( RegCode == obj.RegCode &&
!strcpy(FIO, obj.FIO) &&
!strcpy(Address, obj.Address) &&
INN == obj.INN
) ;
}
};



info& operator[](int i) {
if( i < 0 || i >= size ) {
std::cerr << "ArrayOutOfBounds" << std::endl;
} else {
return *(a[i]);
}
}

bool operator==(const info** right) const {
info* curInfo = 0;
for(int i = 0; i < counter; ++i) {
curInfo = a[i];
if( !curInfo->equals(*(right[i])) ) {
return false;
}
}
}

// предполагается что массивы одинаковых размеров
const info** operator=(const info** right) {
for( int i = 0; i < counter; ++i ) {
if( a[i] != 0 ) {
delete a[i];
}

a[i] = new info();
a[i]->RegCode = right[i]->RegCode;
a[i]->INN = right[i]->INN;
strcpy(a[i]->FIO, right[i]->FIO);
strcpy(a[i]->Address, right[i]->Address);
}

return (const info**)a;
}

void operator!() {
if(a == 0) {
return;
}

for( int i = 0; i < counter; ++i ) {
if( a[i] != 0 ) {
delete a[i];
}
}

delete []a;
}

AdReNa1!Ne
21.05.2008, 20:13
Народ, тут срочно надо решить 2 задачки на Бейсике:

первая: Заданы три стороны треугольника x,y,z. Определить, является ли треугольник прямоугольным. Если да, то опечатать какая сторона служит гипотенузой.
Вторая: заданы длины a,b,c,d четырёх отрезков прямой. Проверить, могут ли эти отрезки быть сторонами квадрута, прямоугольника.

С меня +!!!! Актуально ток сегодня. Плз помогите)

Irdis
22.05.2008, 00:16
Помогите с задачей, (хотя бы хорошей идеи).
Дана матрица n*n переводов валют.
надо написать алгоритм который за n переводов даёт макс выгоду.
Пояснение: мы должны выйти из какой-то валюты и за n переводов вернутся в неё же.
Валюта с которой начинаются переводы выбирается произвольно(ну то есть надо отыскать ещё валюту из которой наиболее выгодно надо начинать производить переводы)
Вывести путь выгоднейшего перевода
(n<=20)
----------------------
комбинаторика умирает на n=10((((

}I{ek
22.05.2008, 09:24
Forcer спс

043nKRuT0y
22.05.2008, 13:01
Вектор задан уравнением типа :

Ах+Ву+С=0

...и дано массив таких векторов !

Напомните какое условие ПАРАЛЛЕЛЬНОСТИ и ПЕРПЕНДИКУЛЯРНОСТИ векторов ??? Помню точно там чтото со СКАЛЯРНОСТЬЮ связано !

Если не трудно - формулу укажите...

Заранее спс .

krypt3r
22.05.2008, 15:47
Больше смахивает на уравнение прямой, а не вектора
Условие параллельности

A1/B1 = A2/B2

Условие перпендикулярности

A1 * A2 + B1 * B2 = 0

Badanga
22.05.2008, 20:44
Delphi
как сделать эфект пишущегося текста? можно конечно под каждую букву лейбел поставить с задержкой...но это некатит..

desTiny
22.05.2008, 22:11
Delphi
как сделать эфект пишущегося текста? можно конечно под каждую букву лейбел поставить с задержкой...но это некатит..
text := 'abcdefghi';
Label1.Caption := '';
for i := 1 to length(text) do
begin
Label1.Caption := Label1.Caption + text[i];
for j := 1 to 10 do
begin
sleep(10);
Application.ProcessMessages;
end;
end;

}I{ek
22.05.2008, 22:19
помогите плз
Описать шаблон контейнерного класса, разработанного в лабораторной работе № 6. Протестировать шаблон для различных типов данных, хранящихся в контейнере. Варианты заданий приведены в табл.
double, структура с полями: шифр книги, авторы, название книги

лаба 6 написанна....вот для нее перегруз...но что то не айс=((

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <vcl.h>
#include <stdio.h>
#pragma argsused
struct info
{
int RegCode;
char FIO[25];
char name[255];

};
template <class t>
class array
{
private:
int size;
t** a;
int counter;
void SetArray( int );
public:
array( int );
array(array &x);
~array();
void Input(t );
void Output();
void OutputByIndex(int);
void GetSize();
array operator !();
array operator =(array );
void operator [](int );
bool operator ==(array);

};
template <class t>
array<t>::array(int size)
{
SetArray(size);
}
template <class t>
array<t>::array (array &x)
{
size=x.size;
counter = x.counter;
a = new t*[size];
for ( int i=0; i < counter; i++)
{
a[i]= x.a[i];
}
}

template <class t>
array<t>::~array()
{
if (a)
delete []a;
}
//--------------------------------------------
template <class t>
void array<t>::SetArray(int siz)
{
a = new t*[siz];
for(int i = 0; i < siz; i++)
{
a[i] = 0;
}
size = siz;
counter = 0;
}
template <class t>
void array<t>::Input(t x)
{

if( counter != size )
{
a[ counter ] = new t;
*a [ counter ] = x;
counter++;
}
else
{
cout << "Error. Array is full";
}
}
template <class t>
void array<t>::Output()
{
if( counter )
{
for( int i = 0; i <counter; i++)
{
cout << "SHifr: " << a[ i ]->RegCode << "\n";
cout << "FIO: " << a[ i ]->FIO << "\n";
cout << "nazvanie: " << a[ i ]->name<< "\n";
cout << "\r\n";
}
}
else
{
cout << "Error. Array is empty"<<endl;
}
}
template <class t>
void array<t>::OutputByIndex(int ind)
{
if( counter )
{
if( ind > counter )
cout << "Error. Index out of range";
else
{
cout << "SHifr: " << a[ ind-1 ]->RegCode << "\n";
cout << "FIO: " << a[ ind -1]->FIO << "\n";
cout << "nazvanie " << a[ ind -1]->name << "\n";

cout << "\r\n"<<endl;
}
}
else
cout << "Array is empty\n"<<endl;

}
template <class t>
void array<t>::GetSize()
{
cout << counter << "\n";
}
//----------------------------------------------
template <class t>
array<t> array<t>::operator =(array<t> x)
{
counter = x.counter;
size = x.size;
a = new t* [size];
for(int i = 0; i < counter; i++)
{
a[i] = x.a[i];
}
return *this;
}

template <class t>
void array<t>::operator [](int ind)
{
OutputByIndex(ind);
}

template <class t>
array<t> array<t>::operator !()
{
if( counter )
{
for( int i = 0; i < counter; i++ )
{
delete a[i];
a[i] = 0;
}
}
counter = 0;
return *this;
}
template <class t>
bool array<t>::operator ==(array<t> x)
{
if (x.counter !=counter)
return false;
for (int i=0;i<counter;i++)
if (a[i]!=x.a[i] )
return false;
return true;
}

void menu()
{
cout << "\n Viberite:\n";
cout << "\n1. vvod ";
cout << "\n2. vivod ";
cout << "\n3. ! Clear array.";
cout << "\n4. = Prisvaivanie." ;
cout << "\n5. [] vivod po indeksu." ;
cout << "\n6. == proverka na ravenstvo." ;
}


int main()
{
int x, ind;
info temp;
cout << "Input array size: ";
cin >> x;
array<double> obj(x);
array<double> obj1(x);
int i;
while (true)
{
menu();
cin>>i;
clrscr();
switch(i)
{
case 1:
cout << "SHifr: ";
cin >> temp.RegCode;
cout << "Input FIO: ";
cin.get();
cin.getline(temp.FIO, 25);
cout << "Input nazvanie: ";
cin.getline(temp.name,255);
obj.Input(temp);
break;
case 2: obj.Output(); break;

case 3: !obj;!obj1; break;
case 4:
obj1 = obj;
obj.Output();
obj1.Output();
break;
case 5:
cout << "Input index: ";
cin >> ind;
obj[ind];

break;
case 6:
if(obj==obj1)
{ cout<<"MHO}|{ECTBA PABHbI"<<endl;
obj.Output();obj1.Output(); }
else
{ cout<<"MHO}|{ECTBA HE PABHbI"<<endl;
obj.Output();obj1.Output(); }
break;
case 0: return 0;
default : cout<<"\nError!\n" ;
}
}
}

ДЖО
23.05.2008, 17:43
люди помогите пожалуйста, погибаю....
задали курсовую, я вобще незнаю что там делать...
вобще выглядеть эт должно так:
есть поле 5х5
есть ячейки с фиксированными значениями
сумма по строкам и столбцам = 20
путем перебора находим оставшиеся числа

ASERVIC
23.05.2008, 20:05
Всем привет! Помогите пож-та с генерацией звука с помощью писиспикера на асм

ASERVIC
23.05.2008, 20:09
Вот код : (работает но с небольшим косяком: прри запуске проги пищит со второго раза а потом все становится нормально)
.model tiny
locals
.386
.code
.startup
;ввод частоты и длительности звука
beep MACRO fr,ms
pusha

;расчёт коэффициента деления: c = 1193180 Гц / f
mov ax,34DCh ;dx:ax = 1193180
mov dx,12h
div fr

;запись коэффициента деления в 3-й канал таймера
mov dx,ax
mov al,0B6h
out 43h,al
mov al,dl
out 42h,al
mov al,dh
out 42h,al

;включить динамик
in al,61h
or al,3
out 61h,al

;задержка
xor ax,ax
mov es,ax
mov ax,es:[46Ch]
add ax,ms
delay:
mov dx,es:[46Ch]
cmp dx,ax
ja exit_delay

jmp delay
exit_delay:

;выключить динамик
in al,61h
and al,2
out 61h,al
popa
endm



;приглашение ко вводу
start:
lea dx,msg1
call read_int
jc exit
mov freq,ax
lea dx,msg2
call read_int
jc exit
mov len,ax

beep freq,len

jmp start
exit:
mov ax,4C00h
int 21h


;--- Ввод целого числа ---
read_int proc
n= word ptr [bp-2]
push bp
mov bp,sp
sub sp,2
mov n,0
mov ah,9 ;вывод промпта
int 21h
@@read_char:
mov ah,8 ;ввод символа
int 21h
cmp al,27 ;ESC -> выход с CF = 1
je @@cancel
cmp al,13 ;CR -> завершение ввода
je @@done
cmp al,'0' ;является ли введённый символ цифрой?
jb @@read_char
cmp al,'9'
ja @@read_char
push ax ;эхопечать
mov dx,ax
mov ah,2
int 21h
pop bx
sub bl,'0' ;добавление цифры в результат
xor bh,bh
mov ax,10
mul n
add ax,bx
mov n,ax
jmp @@read_char
;выход с CF = 1
@@cancel:
stc
jmp @@exit
@@done:
;переход на новую строку
mov dl,13
mov ah,2
int 21h
mov dl,10
mov ah,2
int 21h
;выход с результатом в AX и CF = 0
mov ax,n
clc
@@exit:
mov sp,bp
pop bp
ret
read_int endp

.data?
freq dw ?
len dw ?

.const
msg1 db 'Chastota [Gtc]> $'
msg2 db 'Dlitelnost [1/18 c]> $'

end

Delimiter
23.05.2008, 20:44
2 ДЖО
сумма в каждой строке и в каждом столбце =20? Числа только положительные?

WinTREI
23.05.2008, 20:53
помогите с задачей (паскаль)
тема записи:

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

ДЖО
24.05.2008, 01:17
2 ДЖО
сумма в каждой строке и в каждом столбце =20? Числа только положительные?
да равно 20 и числа только положительные

Catsy
24.05.2008, 12:27
помогите, срочно надо
паскаль

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

wermah
25.05.2008, 17:24
Помогите сделать тест с подсчетом результатов и возможностью добавления тестового задания. Наполняемость не имеет значения.

Sinex
25.05.2008, 19:32
Ребят, помогите пожалуйста, очень нужна помощь, асемблер не знаю вообще, а на нем надо составить уравнение:
(sin^2альфа-2cos^2альфа)/(5sinальфа*cosальфа+3)
и задание:
Дан одномерный массив из 40 1-значных положительных и отрицательных чисел. Расположить массив в памяти. Произвести замену всех отрицательных элементов массива на 0. Вывести исходный и итоговый массив на экран.

Catsy
25.05.2008, 22:17
4_Catsy

что-то не работает =((

WinTREI
25.05.2008, 22:44
Дан список товаров, содержащий следующие данные: название товара,
стоимость покупки, стоимость продажи, количество проданного товара.
вывести список товаров отсортировав его по полученной прибыли.

вот, может кому надо будет
program zap6;
uses crt;
type tovar=record
name:string;
pro,kol,pok,qwe,pri:integer;
end;
var f,c:array[1..20] of tovar;
i,n,j,max:integer;
pr:tovar;
begin
clrscr;
write('Введите кол-во товаров: ');
readln(n);
for i:=1 to n do
begin
writeln;
writeln('Товары',i);
write('Введите название товара: ');
readln(f[i].name);
write('Введите стоимость покупки: ');
readln(f[i].pok);
write('Введите стоимость продажи: ');
readln(f[i].pro);
write('Введите кол-во товара*: ');
readln(f[i].kol);
end;

for i:=1 to n do
begin
f[i].pri:=(f[i].pro-f[i].pok)*f[i].kol;
for j:=i+1 to n do
begin
f[j].pri:=(f[j].pro-f[j].pok)*f[j].kol;
if f[j].pri>f[i].pri then
begin
pr:=f[j];
f[j]:=f[i];
f[i]:=pr;
end;
end;
end;
writeln;
for i:=1 to n do
writeln(i,' товар "',f[i].name,'" (',f[i].pri,' прибыль)');
readln
end.

new задача:

Создать модуль с подпрограммами: propose, replacetext, forma, endpos. Используя указанные подпрограммы выполнить следующее задание. Текст представляет собой адрес, преобразовать этот текст заменяя ул. на улица, д. на дом, название улицы может содержать несколько слов, которые надо записать с заглавной буквы и удалить лишние пробелы.

krypt3r
26.05.2008, 08:28
2Catsy. Вот немного переработанный и рабочий вариант Добермана

const
znaki = [',', '.', '!', '?', ':', ';'];
var
t, tx: text;
s: string;
i, len: integer;
begin
assign (t, 'c:\xxx.txt');
reset (t);
assign (tx, 'c:\yyy.txt');
rewrite (tx);
while not eof (t) do begin
readln (t, s);
len := length (s);
for i := 1 to len do begin
if (s[i] in znaki) and (s[i+1] <> ' ') then
insert(' ', s, i+1);
end;
write (tx, s[i]);
end;
close (t);
close (tx);
end.

Catsy
26.05.2008, 09:23
2Catsy. Вот немного переработанный и рабочий вариант Добермана

а как сделать, чтоб каждое слово стоящее после точки писалось с большой буквы?

krypt3r
26.05.2008, 10:07
Catsy, тогда код цикла for будет таким

for i := 1 to len do
if (str [i] in znaki) and (str [i + 1] <> ' ') then begin
insert (' ', str, i + 1);
if str [i] = '.' then begin
c := upcase (str [i + 2]);
delete (str, i + 2, 1);
insert (c, str, i + 2);
end;
end;

Kub
27.05.2008, 18:22
кто может помочь с С++... надо решать простенькие задачки...


1. в массиве из 5 элементов найти максимум и минимум

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


3. Напис. прогу, в кот. +,-,*,/. с помощью swich case. При этом кажд. из этих действий описать в отдельной формуле.

4. напис. прогу для работы с указателем в режиме "калькулятор". +,-,*,/ . Пользователь должен ввести 2 числа и операцию, комп вышлет результат.

WinTREI
28.05.2008, 12:02
4_WinTREI
Вот тебе процедура преобразования сокращений:
Не ленись...создать из этого модуль проще простого =)
создал, тока нужно еще название улицы (стостящие не из двух слов) чтоб писалось с заглавной буквы (оба слова)

Лайт
28.05.2008, 15:13
У меня вот какая задачка на Делфях
Есть текстовый файл с данными, такого вида:

#data1
name\data2

Нужно чтоб программа могла 2 действия на выбор
I при нахождении двух последовательных одинаковых имен перемещала строку с именем\data2 и data1 (который выше) рандомно на несколько строк вниз, чтоб имена не повторялись подряд.
II перемещала имена (которые повторяются на примерно равные промежутки друг от друга, первое имя не трогаем)
считывала все это из 1 файла, затем писала во второй

#data1 (для примера написал 1,2,3, могут присутвовать буквы,цифры, знаки)
имя (в имени могут присутствовать пробелы, знаки, но не "\")
\ (разделение имени от данных слешем всегда)
прочие данные (все на одной строке, может присутствовать "\")

Вот пример работы, цветом выделено то, что перемещаем.


До обработки

#1a
Jack\...
#2t
Cris\...
#3f
Chack\...
#4q
Mr_Devil\...
#5u
J Bush\...
#6r
Dr J Evil\...
#7ii
Jack\...
#8q
Jack\...
#9.4
Kyle\...
#10
Kenny\...



После обработки (перемещение на равные промежутки)

#1a
Jack\...
#2t
Cris\...
#3f
Chack\...
#4q
Mr_Devil\...
#7ii
Jack\...
#5u
J Bush\...
#6r
Dr J Evil\...
#9.4
Kyle\...
#10
Kenny\...
#8q
Jack\...


Заранее примного благодарен.

NeOz
29.05.2008, 20:45
Задача:
написать на любом языке программирования, который вам нравиться):
переформировать строку "Bugtrack for guru!!!!" из 21 байта, в бинарную строку из 24 байт.
Причем из заданной строки берутся последовательно по 7 бит, и записывается в новую строку.

Кто поможет - тому еще 6ти знак дам))

WinTREI
29.05.2008, 21:00
Dober'man
примерно вводим так:
ул. ывпывп впыпы д. 5

должно изменить так:
улица Ывпывп Впыпы дом 5

Ping.Win
30.05.2008, 15:48
Препод озадачил задачкой про робота=( суть такова:

“Глупый” робот движется по клеткам прямоугольного поля n x m случайным образом. Начальное положение робота - клетка (0,0).
Необходимо написать алгоритм, в результате которого робот попадет в клетку (n-1, m-1)
Робот может двигаться за один шаг только на одну клетку вверх (север), влево (запад), вправо (восток) или вниз (юг) и не может выходить за границы поля.
Каждый следующий шаг робота определяется случайным образом с помощью генератора случайных чисел. Попытка выхода за границы поля считается неправильным шагом, и робот насильно возвращается в предыдущую неправильному шагу клетку поля.
Необходимо подсчитать общее количество шагов, сделанных роботом и количество неправильных шагов.
Ниже приведена структура программы. Жирным шрифтом выделены фрагменты, которые
необходимо воспроизвести полностью, как есть. Короткими комментариями (нежирный шрифт) определены места для самостоятельной вставки кода программы. Необходимо строго следовать инструкциям, воспроизводить в коде программы указанные в комментариях имена переменных. Сами комментарии воспроизводить не нужно.

Ниже сам текст программы, который нужно дополнить:


//= == == === ===
//Глупый робот» . Файл Robot2.java

import /* присоединить библиотеку, в которой находятся математические операции и счетчик
случайных чисел */

class Pole {
// Определить две целые переменные n и m, определяющие размер поля, к которым можно
//обращаться по имени класса Pole и static переменную Pole - двумерную матрицу, элементами
// которой являются объекты типа string

Pole (int x, int y) {
// инициализировать п и м в конструкторе значением параметров х и у
pole = new string [n][];
// далее провести инициализацию матрицы pole пробелами, те. строками со ~

System.out.println (“Размер поля:”+ n + “Х ” + m);
}
}
void inPole() {
/*вставить операторы, заполняющие каждый элемент массива pole четырьмя символами
«подчеркивание” _
*/

}
void prPole() {

// Метод выводит на экран содержимое переменной pole в специальном формате.

for (int i=0; i<n; i++){
System.out.println (“\n”);
for ( int j=0; j<m; j++){
System.out.print(“\t” + pole[i][j]);
}
}
System.out.println (“\n”);
}

class Robot {
// Определить целые переменные kX и kY - текущее положение робота;
// определить и инициализировать целую переменную ws, в которую будет заноситься число
// неправильных шагов робота

Robot(int x, int у) {
// инициализировать kX и kY параметрами конструктора и вывести на печать
System.out.println (”Робот в точке х= “+ kX + “,у = “ + kY);
}

void moveN( ) {
// метод, описывающий шаг робота наверх
// если робот пытается выйти за границу поля, вернуть его в ту же клетку, прибавить счетчик неправильных ходов и напечатать

System.out.println (”Выше нельзя!”);
// напечатать текущее положение робота
System.out.println (”Робот в точке х = “+ kX + “,у =“+ kY);
}

void moveE( ) {
// метод, описывающий шаг робота направо
// если робот пытается выйти за границу поля, вернуть его в ту же клетку, прибавить счетчик
// неправильных ходов и напечатать
System.out.println (”правее нельзя!”);
// напечатать текущее положение робота
System.out.println (”Робот в точке х = “+ kX + “,у =“ + kY);
}

void moveW( ) {
// метод, описывающий шаг робота влево
// если робот пытается выйти за границу поля, вернуть его в ту же клетку, прибавить счетчик
//неправильных ходов и напечатать
System.out.println (”левее нельзя!”);
// напечатать текущее положение робота
System.out.println (”Робот в точке х = “+ kX + “,у =“ + kY);
}

void moveS( ) {
// метод, описывающий шаг робота вниз
// если робот пытается выйти за границу поля, вернуть его в ту же клетку, прибавить счетчик
//неправильных ходов и напечатать
System.out.println (”Ниже нельзя!”);
//напечатать текущее положение робота
System.out.println (”Робот в точке х = “+ kX + “, у =“ + kY);
}
class Robot2 {

// Класс для запуска программы

public static void main(string args[]) {

// определить и инициализировать нулем целую переменную ns1, в которую будет
// суммироваться общее число шагов робота
// объявить и инициализировать значениями (10, 5) переменную р, как экземпляр класса Pole
//объявить и инициализировать значениями (0,0) переменную r1 как экземпляр класса Robot

Random rand = new Rаndоm();

p.inPole();
p.pole[0][0] = “_R1_”;



p.prPole();

while (//1 написать условие, задающее положение робота, отличное от конечной точки поля (n-1, m-1))
{

// написать пустой цикл с не менее 1 000 000 000 проходов, имитирующий визуальную задержку
//вывода

//сгенерировать случайным образом целую переменную ii меньшую или равную 4 с помощью метода
// Math.abs(rand.nextlnt())

// с помощью оператора switch — case имитировать шаги робота
switсh (i1) {
case 1: {System.out.println (”шаг вверх…”);
// сделать шаг наверх, прибавить общее число шагов
break ;}
// выполнить аналогичные действия, т.е. написать case-секции при шаге вправо (значение — 2),
//влево (значение — 3) и вниз (значение — 4)

default: System.out.println (”стоим на месте”);
}

p.inPole ();
p.pole[r1.kX][r1.kY] = “_R1_”;
p.prPole();

}
// сделать вывод результатов:
System.out.println (“=====================================“);
System.out.println (“Размер поля: “+ /* продолжить вывод */);
System.out.println (“Кратчайший путь: “+ /* продолжить вывод */);
System.out.println (”Робот дошел за “/* вставить нужную переменную */ + “шагов”);
System.out.println (”Из них”+ /*вставить нужную переменную */ +“неправильных шагов”);
}
}


Таблица по которой он должен двигаться по вертикали 7 клеток по горизонтали 10, координаты-
Верхний левый клетка - (0, 0)
Верхний правый клетка - (0, m-1)
Нижний левый клетка - (n-1, 0)
Нижниый правый клетка - (n-1, m-1)


Буду очень благодарен за помощь, с меня плюс, большой=)

lab
30.05.2008, 22:03
на С++
завтра надо сдавать:( помогите плз, неуспеваю сам
1.в одномерном массиве состоящем из n-целых элементов вычислить:
- минимальный по модулю элемент массива
- сумму модулей элементов массива расположенного после первого элемента равного 0
преобразовать массив таким образом чтобы в первой его половине располагались элементы стоявшие в четных позициях, а во второй половине - элементы, стоявшие в нечетных позициях

2. написать программу которая считывает английские и выводит на экран только строки не содержащие 2значных чисел

3.
1) описать струкруту MARSH содержащую следующие поля:
- название начального пункта маршрута
- название конечного пункта машрута
- название маршрута
2) написать программу выполняющие следующие действия:
- ввод с клавиатуры данных в массив состоящий из 8ми эл-в типа MARSH; записи должны быть упорядочены по номерам маршрута
- вывод на экран информации о маршруте, № которого введен с клавиатуры, если таких маршрутов нет, выдать на дисплей соответствующее сообщение

A2GIL
31.05.2008, 02:14
Нужно до субботы написать программу "Моделирование трехмерной графики в объектно ориентированной среде" желательно на Паскале.

С меня куча плюсов!

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

Исходник (http://www.aladin88.jino-net.ru/prove.rar)

P.S. ОО среда Паскаля = Delphi =))

Lancellot
31.05.2008, 10:38
delphi 5/7 без разницы!
Создать абстрактный класс с виртуальной функцией- площадью и методом определения количества краски необходимой для зарисовки фигуры (количество краски на единицу площади задать самастаятельно ). Создать производные классы : прямоугольник, круг, прямоугольный треугольник трапецию со своими собственными функциями площади!
Использовать эти объемы для определения количества краски необходимой зарисовки указанной фигуры!!!
=================
У кого есть какие-то похожие задания помогите или напишите эту/сам ничего не понимаю не мой профиль\=
флуд в репу + гарантирован!
заранее спасибо

filosof_x86
31.05.2008, 16:18
Задача:
написать на любом языке программирования, который вам нравиться):
переформировать строку "Bugtrack for guru!!!!" из 21 байта, в бинарную строку из 24 байт.
Причем из заданной строки берутся последовательно по 7 бит, и записывается в новую строку.

Кто поможет - тому еще 6ти знак дам))
Я правильно понял задание что, например, из последовательности:

0100.0001 0100.0001 0100.0001 0100.0001 0100.0001 0100.0001 0100.0001 (эта последовательность эквивалентна строке "AAAAAAA")

Надо получить получить:
0010.0000 0101.0000 0010.1000 0001.0100 0000.1010 0000.0101 0000.0010 0100.0001
?

klown
02.06.2008, 01:58
lab, первая задача на коленке
#include <iostream>
using namespace std;
/*
1.в одномерном массиве состоящем из n-целых элементов вычислить:
- минимальный по модулю элемент массива
- сумму модулей элементов массива расположенного после первого элемента равного 0
преобразовать массив таким образом чтобы в первой его половине располагались элементы стоявшие в четных позициях, а во второй половине - элементы, стоявшие в нечетных позициях
*/
int main()
{
const int n = 10;
int min;
int Array[n]={2,3,4,-5,-1,0,7,-4,9,-5};
min=Array[0];
int minIndex;
for(int i=1;i<n;i++)
{
if(Array[i]>0&&Array[i]<min)
{
min=Array[i];
minIndex=i;
}
else if (Array[i]<0&&(-Array[i]<min))
{
min = -Array[i];
minIndex=i;
}
}
int zeroIndex;
int summ=0;
for(int i=0;i<n;i++)
{
if(Array[i]==0)
{
zeroIndex=i;
break;
}
}
for(int i=zeroIndex;i<n;i++)
{
if(Array[i]>0)
summ+=Array[i];
else summ+=(-Array[i]);
}
int modifyArray[n]={0};
int k=0;
int m=n/2;
for(int i=0;i<n;i++)
{


if(i%2==0)
{

modifyArray[k] = Array[i];
k++;
}
else
{

modifyArray[m] = Array[i];
m++;
}
}
cout<<"Minimal number has index "<<minIndex<<" and it is "<<min<<endl;
cout<<"Summ is "<<summ<<endl;
for(int i=0;i<n;i++)
{
cout<<modifyArray[i]<<" ";
}
cout<<endl;
return 0;
}

alextoun
02.06.2008, 10:47
т.к я в асме ну почти что 0
надо помочь
1)
Пусть задан текст, представляющий собой последовательность строк.
На каждой строке находится имя, фамилия и отчество.
Распечатать отчества по алфавиту,
а также текст, содержащий строки, состоящие только из имен и фамилий.
*Распечатать = вывести на экран.

2) В некоей фирме работают 7 сотрудников -
сборщиков компов.
Для того, что бы повысить производительность их труда,
в компьютер в конце каждой недели заносят количестово компов,
собранных каждым сборщиком за неделю за каждый день.
Вывести на печать (читай - экран) - наибольшее кол-во компов,
собранных одним сборщиком за неделю,
среднее за день количество компов,
лучшее за день количество компов и номер сборщика,

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

Delimiter
02.06.2008, 23:21
2 NeOz

через строку символов решается тривиально
... примерно так:

unsigned char str[100];
unsigned char tempbuf[800];
unsigned char buf[10];
unsigned char rezult[100];
int i,j,k;
unsigned long l;

strcpy(str,"Bugtrack for guru!!!!");
for(i=0;*(str+i)!=0;i++)
{
itoa(*(str+i),buf,2);
for(j=0;j<8-strlen(buf);j++)
strcat(tempbuf,"0");
strcat(tempbuf,buf);
}
for(i=0,j=0,buf[7]=0;*(tempbuf+i)!=0;i+=7,j++)
{
memmove(buf,tempbuf+i,7);
rez[j]=(unsigned char )strtoul(buf,0,2);
}


код не проверял! Проверь!

CrazyStudentS_Mi}{
03.06.2008, 12:24
"вывести упорядоченное бинарное дерево послойно, начиная с корня, сначала исходное, а затем - после удаления указанного слоя" прошу помочь исходниками или мануалами чтобы самому разобраться, если есть что дельного предложить то стучите в асю на аватарке

Karapuziko
03.06.2008, 18:38
Здравствуйте уважаемые!Помогите решить:

http://www.valar.ru/gallery/0608/1212502108_.jpg
----------------------------------------
http://www.valar.ru/gallery/0608/1212502157_11.jpg
----------------------------------------
http://www.valar.ru/gallery/0608/1212502244_2.jpg
Заранее очень благодарен!
Язык программирования ПАСКАЛЬ!

Serios
03.06.2008, 21:55
в универе дали задание, для допуска к экзамену.
Создать виндоуз-приложение "Учет автотранспортных перевозок по заказчику"
предусмотреть:
1. Создание входного файла
Справочник марок автомобилей (код марки автомобиля, марка автомобиля, стоимость перевозки одного ткм)
Автомобили (инвентарный номер, код марки автомобиля)
Заказчики (код заказчика, Наименование заказчика, адрес, телефон)
2. На основе данных входных файлов и заданного в форме кода заказчика, инвентарного номера авто и введенных в форме Массы груза и Расстояния, номера заказа и тады заказа получение выходного файла Заказы (номер заказа, дата заказа, код заказчика, инвентарный номер авто, масса груза в т, расстояние км)
3. Выводим стоимость заказа по заданному коду заказчика
4. Создание меню для выполнения всех указанных в задании пунктов.

делать нужно в байсике. кому не трудно =)

A2GIL
03.06.2008, 22:22
2 CrazyStudentS_Mi}{

Здесь я писал бинарные деревья. Есть необходимые тебе функции (Delphi)

Скачать (~36kb) (http://www.aladin88.jino-net.ru/BTrees.rar)

P.S. Призываю нуждающихся в помощи указывать язык прогроммирования!

2 Karapuziko

uses
Crt;

const
a=20.3;
var
f,x:real;
res_sin,arg_sin:real;

function Log(x, b: Real): Real;
begin
Result := ln(x) / ln(b);
end;

function Rus(mes:string):string;
var
i:integer;
begin
for i:=1 to length(mes) do
case mes[i] of
'А'..'п': mes[i]:=Chr(Ord(mes[i])-64);
'р'..'я': mes[i]:=Chr(Ord(mes[i])-16);
end;
rus:=mes;
end;

begin
{Первая задача}
writeln('========================================= ==============');
write(rus('Введите значение аргумента : '));readln(x);
if x>1 then f:=log((x+1),10)
else
f:=sqr(sin(sqrt(abs(a*x))));
write(rus('Значение функции : '));writeln(f);
{Вторая задача}
arg_sin:=0.1;
res_sin:=(1+sin(arg_sin));
while arg_sin<9.9 do
begin
arg_sin:=arg_sin+0.1;
res_sin:=res_sin*(1+sin(arg_sin));
end;
writeln('========================================= ==============');
write(rus('Вычисление прогресии : ')); Write(rus('Ответ : ')); Writeln(res_sin);
writeln('========================================= ==============');
readln;
end.


В Паскале не писал, но должно быть так :)

0verbreaK
04.06.2008, 00:54
Почти так


function Log(x, b: Real): Real;
begin
Log := ln(x) / ln(b);
end;


=========

De-visible: просто он видимо на DELPHI кодить привык...

plat
04.06.2008, 18:52
Помогите пожалуйста написать программу на С++,срочно...
Надо решить головоломку
Send
+more
---------
Money, здесь каждой букве соответствует какое-то 1 число..надо найти соответствие..
Заранее спасибо...(есть уже некоторые известные M=1, S=8, О=0)...

Delimiter
05.06.2008, 00:55
2 plat

1000*s+100*e+10*n+d+1000*m+100*o+10*r+e=10000*m+10 00*o+100*n+10*e+y
индексируем переменные
s-> a[0]
e-> a[1]
n-> a[2]
d-> a[3]
m-> a[4]
o-> a[5]
r-> a[6]
y-> a[7]

далее простая рекурсия с глубиной 8 шагов

int a[8];
void step(int cur)
{
int i,j,fl;
if(cur<8)
{
for(i=0;i<10;i++)
{
for(j=0,fl=0;j<cur && fl==0;j++)
if(a[j]==i)
fl=1;
if(fl==0)
{
a[cur]=i;
step(cur+1);
}
}
}
else
{
if(1000*a[0]+100*a[1]+10*a[2]+a[3]+1000*a[4]+100*a[5]+10*a[6]+a[1]==10000*a[4]+1000*a[5]+100*a[2]+10*a[1]+a[7])
{
// тут вываливай результат ... он в массиве
}
}
}

plat
05.06.2008, 13:35
2 plat

1000*s+100*e+10*n+d+1000*m+100*o+10*r+e=10000*m+10 00*o+100*n+10*e+y
индексируем переменные
s-> a[0]
e-> a[1]
n-> a[2]
d-> a[3]
m-> a[4]
o-> a[5]
r-> a[6]
y-> a[7]

далее простая рекурсия с глубиной 8 шагов

int a[8];
void step(int cur)
{
int i,j,fl;
if(cur<8)
{
for(i=0;i<10;i++)
{
for(j=0,fl=0;j<cur && fl==0;j++)
if(a[j]==i)
fl=1;
if(fl==0)
{
a[cur]=i;
step(cur+1);
}
}
}
else
{
if(1000*a[0]+100*a[1]+10*a[2]+a[3]+1000*a[4]+100*a[5]+10*a[6]+a[1]==10000*a[4]+1000*a[5]+100*a[2]+10*a[1]+a[7])
{
// тут вываливай результат ... он в массиве
}
}
}

спасибо большое!!! а можно чуть чуть поподробнее про программу...нам пытались дать весь С++ за 3 мес. и многое пока непонятно

Delimiter
05.06.2008, 13:42
Код дан в рамках Си (Керниган и Ритчи)

#include "stdio.h"

int a[8]; // массив в котором подбираем цифры (хотя они в виде чисел)
void step(int cur)
{
int i,j,fl;
if(cur<8) // проверяю не пора ли заканчивать
{
for(i=0;i<10;i++) // подбираю цифру
{
for(j=0,fl=0;j<cur && fl==0;j++) // проверяю не было ли такх цифр
if(a[j]==i)
fl=1;
if(fl==0)
{
a[cur]=i;
step(cur+1); // ухожу в глубь
}
}
}
else
{ // тут самое важное! Проверяю соответствуют ли цифры основному условию
if((1000*a[0]+100*a[1]+10*a[2]+a[3]+1000*a[4]+100*a[5]+10*a[6]+a[1])==(10000*a[4]+1000*a[5]+100*a[2]+10*a[1]+a[7]))
{
printf("\r\nРезультат:\r\n");
printf("s->%d\r\n",a[0]);
printf("e->%d\r\n", a[1]);
printf("n->%d\r\n", a[2]);
printf("d->%d\r\n", a[3]);
printf("m->%d\r\n", a[4]);
printf("o->%d\r\n", a[5]);
printf("r->%d\r\n", a[6]);
printf("y->%d\r\n", a[7]);
}
}
}
void main()
{
step(0);
}

plat
05.06.2008, 16:24
Код дан в рамках Си (Керниган и Ритчи)

#include "stdio.h"

int a[8]; // массив в котором подбираем цифры (хотя они в виде чисел)
void step(int cur)
{
int i,j,fl;
if(cur<8) // проверяю не пора ли заканчивать
{
for(i=0;i<10;i++) // подбираю цифру
{
for(j=0,fl=0;j<cur && fl==0;j++) // проверяю не было ли такх цифр
if(a[j]==i)
fl=1;
if(fl==0)
{
a[cur]=i;
step(cur+1); // ухожу в глубь
}
}
}
else
{ // тут самое важное! Проверяю соответствуют ли цифры основному условию
if((1000*a[0]+100*a[1]+10*a[2]+a[3]+1000*a[4]+100*a[5]+10*a[6]+a[1])==(10000*a[4]+1000*a[5]+100*a[2]+10*a[1]+a[7]))
{
printf("\r\nРезультат:\r\n");
printf("s->%d\r\n",a[0]);
printf("e->%d\r\n", a[1]);
printf("n->%d\r\n", a[2]);
printf("d->%d\r\n", a[3]);
printf("m->%d\r\n", a[4]);
printf("o->%d\r\n", a[5]);
printf("r->%d\r\n", a[6]);
printf("y->%d\r\n", a[7]);
}
}
}
void main()
{
step(0);
}

Огромнейшее спасибо!!!!

plat
05.06.2008, 17:29
Помогите пожалуйста написать еще одну программу на С++...для меня она совсем неподъемная...
надо решить следующую задачу:
есть некая прямоугольная площадь...она разделена на 6 квадратов..5 из них заняты мебелью,а шестая свободна. надо переставить мебель так, чтобы шкаф и кресло поменялись местами,при этом никакие 2 предмета не могут стоять на 1 квадрате...
расположение мебели следующее:
_____________
стол|стул|шкаф|
_____________
стул| |кресло|

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

Delimiter
05.06.2008, 17:34
хммм .... классы тут как-то боком!
их придется впихивать совсем без их преимуществ


давай набросаю суть а ты ее засунешь хоть в классы , хоть в мусорку!

будем обозначать символами
a-кресло(arm chair)
c-стул(chair)
t-стол(table)
s-шкаф(shelves)


#defane MAX_STEPS 50
char a[3][3]; //третий ряд забит нулями
char steps[MAX_STEPS][7];
char rez[3][3];

int abs(int numb) // просто извращаюсь...
{
if(numb<0)
return numb*(-1);
else
return numb;
}
void step(int step,int pusto_x,int pusto_y)
{ // step -текущая глубина рекурси
// pusto_x - координата пустого места
// pusto_y - координата пустого места
int i,j,k;
if(steps<MAX_STEPS-1)
{
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(i!=pusto_y || j!=pusto_x) // проверяю чтоб счетчики
// не совпадали с пустой клеткой
if(i==pusto_y || j==pusto_x) // проверяю на условие движения
if(abs(pusto_x-j)==1) // через клетку не прыгать
{
// могем менять местами
a[pusto_y][pusto_x]=a[i][j];
a[i][j]=' '; // передвигаю чегото
for(k=0,fl=0;k<MAX_STEPS && k<step && fl==0;k++)
if(strcmp(a,rez)==0) // проверяю не встречалось ли
fl=1; // данное расположение
if(strcmp(a,rez)==0) // проверяю не получили ли мы то что
{ // нужно достичь
// вываливай весь steps
// хоть в файл хоть на печать
fl=1;
}
if(fl==0)
{
strcpy((char *)&steps[step][0],a); // записываю ход
step(step+1,j,i); // уход в глубь
// стирать ход не нужно поскольку ПЕРЕЗАПИСЬ
}
a[i][j]=a[pusto_y][pusto_x]; // востанавливаю предыдущее
a[pusto_y][pusto_x]=' '; // состояние
}
}
else
return ; // возврат если перебор по глубине
}

void main()
{
int i,j;
// подготавливаем массивы
for(i=0;i<MAX_STEPS;i++)
strcpy((char *)&steps[i][0],"");
a[0][0]='t'; // исходный массив
a[0][1]='c';
a[0][2]='s';
a[1][0]='c';
a[1][1]=' ';
a[1][2]='a';
a[2][0]=0; // забиваем нулями для того чтобы
a[2][1]=0; // сформировалась идентифицирующая строка
a[2][2]=0;
rez[0][0]='t'; // массив который нужно получить
rez[0][1]='c';
rez[0][2]='a';
rez[1][0]='c';
rez[1][1]=' ';
rez[1][2]='s';
rez[2][0]=0; // забиваем нулями с целью как и
rez[2][1]=0; // для массива a
rez[2][2]=0;
steps(0,1,1);
}


КОД НЕ ПРОВЕРЯЛ!!! БИЛ ПРЯМО В ОКНО СООБЩЕНИЙ!

ну мне простительно у меня репутация маленькая :D
да и решение таких задач тут дешево стоит!

Catsy
05.06.2008, 21:36
помогите пожалуйста
(паскаль)

1) сумма с точностью
Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых
http://ipicture.ru/uploads/080605/lVkf4OH86W.jpg

2) рекурсия
Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых
http://ipicture.ru/uploads/080605/Lsb2o31vgE.jpg
Вычисление выражения под знаком суммы выполнить через рекурсию.

043nKRuT0y
05.06.2008, 22:56
Народ помогите решить проблему ! Вообщем приведенная ниже программа должна сортировать массив рандомных чисел ПИРАМИДАЛЬНЫМ методом.... Вообщем она и сортирует вот только чаще всего выбивает STACK OVERFLOV.... я там уже и функцию проверки на сортировку кинул штобы не вращалось слишком много и всеравно облом .... Вообщем код ниже кто сможет подправить укажите ошибку исправленным кодом !!!

{-$S}
Program Piramida;

Uses CRT;

Const
max = 100;

Type myArray = array[0..max] of Integer;

Var dimension, i : Integer;
arr, sortArray : myArray;
{***********************************\
\**************************************}
Procedure Sift( Var arr : myArray; L, R : Integer );
Var i, j : Integer;
item : Integer;
Begin
i := L;
j := 2*L;
item := arr[L];
If ( j < R ) And ( arr[j] < arr[j + 1] ) Then Begin
j := j + 1;
End;
While ( j <= R ) And ( item < arr[j] ) do
Begin
arr[i] := arr[j];
i := j;
j := 2*j;
If ( j < R ) And ( arr[j] < arr[j + 1] ) Then Begin
j := j + 1;
End;
End;
arr[i] := item;
End;
{***********************************\
\**************************************}
Function Anti_Overflow( mas : myArray; rozmir : Integer) : Boolean;
Var
i , j: Integer;
max : Integer;
Begin
For j := 0 To rozmir Do
Begin
max := mas[j];
For i := 1 To rozmir+1 Do
Begin
If max > mas[i] Then Anti_Overflow := False
End;
End;
End;
{***********************************\
\**************************************}
Procedure HeapSort( arr : myArray; size : Integer );
Var i, L, R : Integer;
item : Integer;
Begin
L := ( size div 2 );
R := size - 1 ;
While L > 0 do
Begin
L := L - 1;
Sift( arr, L, R );
End;
While R > 0 do
Begin
item := arr[0];
arr[0] := arr[R];
arr[R] := item;
R := R - 1;
Sift( arr, L, R );
End;
If Anti_Overflow(arr,size) = False Then HeapSort (arr,size)
Else Begin
Write('Sorting array: ');
For i := 0 To size-1 do
Begin
Write( Arr[i] );
Write(' ');
End;
End;
End;
{***********************************\
\**************************************}
Begin
ClrScr;
Write('Rozmirnist Masivu : ');
ReadLn( dimension );
Write('Enter ');Write( dimension );Write(' elements: ');
Randomize;
For i := 0 To dimension Do Begin
arr[i] := Random(50);
WriteLn(arr[i]);
End;
HeapSort( arr , dimension );
WriteLn;
WriteLn('Press "Enter" to continue...');
ReadKey;
End.

plat
06.06.2008, 15:05
хммм .... классы тут как-то боком!
их придется впихивать совсем без их преимуществ


давай набросаю суть а ты ее засунешь хоть в классы , хоть в мусорку!

будем обозначать символами
a-кресло(arm chair)
c-стул(chair)
t-стол(table)
s-шкаф(shelves)


#defane MAX_STEPS 50
char a[3][3]; //третий ряд забит нулями
char steps[MAX_STEPS][7];
char rez[3][3];

int abs(int numb)
{
if(numb<0)
return numb*(-1);
else
return numb;
}
void step(int step,int pusto_x,int pusto_y)
{
int i,j,k;
if(steps<MAX_STEPS-1)
{
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(i!=pusto_y || j!=pusto_x)
if(i==pusto_y || j==pusto_x)
if(abs(pusto_x-j)==1)
{
// могем менять местами
a[pusto_y][pusto_x]=a[i][j];
a[i][j]=' ';
for(k=0,fl=0;k<MAX_STEPS && strlen((char *)&steps[k][0])>6 && fl==0;k++)
if(strcmp(a,rez)==0)
fl=1;
if(strcmp(a,rez)==0)
{
// вываливай весь steps
// хоть в файл хоть на печать
fl=1;
}
if(fl==0)
{
strcpy((char *)&steps[k][0],a);
step(step+1,j,i);
strcpy((char *)&steps[k][0],"");
}
a[i][j]=a[pusto_y][pusto_x];
a[pusto_y][pusto_x]=' ';
}
}
else
return ;
}

void main()
{
int i,j;
// подготавливаем массивы
for(i=0;i<MAX_STEPS;i++)
strcpy((char *)&steps[i][0],"");
a[0][0]='t'; // исходный массив
a[0][1]='c';
a[0][2]='s';
a[1][0]='c';
a[1][1]=' ';
a[1][2]='a';
a[2][0]=0; // забиваем нулями для того чтобы
a[2][1]=0; // сформировалась идентифицирующая строка
a[2][2]=0;
rez[0][0]='t'; // массив который нужно получить
rez[0][1]='c';
rez[0][2]='a';
rez[1][0]='c';
rez[1][1]=' ';
rez[1][2]='s';
rez[2][0]=0; // забиваем нулями с целью как и
rez[2][1]=0; // для массива a
rez[2][2]=0;
steps(0,1,1);
}


КОД НЕ ПРОВЕРЯЛ!!! БИЛ ПРЯМО В ОКНО СООБЩЕНИЙ!

ну мне простительно у меня репутация маленькая :D
да и решение таких задач тут дешево стоит!

Спасибо большущее!!!...но все же...пожалуйста...можно и эту программу тоже поподробнее..нам давали только теорию практически...примеров совсем мало...на классы дали только пример класса комплексного числа...я сам понимаю, что в принципе там классы ни к чему...но надо чтобы прога была обязательно с ними...
я с классами совсем пока не дружу...а задачу надо в понедельник сдать...
Заранее спасибо!

Delimiter
06.06.2008, 15:57
извини .... но тут ПОМОГАЮТ а не занимаются ВМЕСТО!

.... ЭТУ МАЛОСТЬ ЗАСУНУТЬ КОД В КЛАССЫ ТЫ ДОЛЖЕН СДЕЛАТЬ САМ!!!!!

.... ведь весь смысл этой ветки не поддерживать ХАЛЯВУ, а давать возможность посмотреть алгоритмы обсудить их.... помочь основной идеей, чтоб человек ВЫРОС в своих и чужых глазах.

ТВОИ ЗАДАЧКИ БЫЛИ ИНТЕРЕСНЫМИ ПОЭТОМУ Я И ПОМОГ ТЕБЕ.... а была бы лажа прошел мимо!

plat
06.06.2008, 16:03
Спасибо большое и на этом!!!!

A2GIL
06.06.2008, 17:23
Народ помогите решить проблему ! Вообщем приведенная ниже программа должна сортировать массив рандомных чисел ПИРАМИДАЛЬНЫМ методом.... Вообщем она и сортирует вот только чаще всего выбивает STACK OVERFLOV.... я там уже и функцию проверки на сортировку кинул штобы не вращалось слишком много и всеравно облом .... Вообщем код ниже кто сможет подправить укажите ошибку исправленным кодом !!!

У тебя ошибка на ошибке. Вот смотри, зачем делать HeapSort процедурой? Ведь ей нужно передавать массив! Поэтому она должна быть функцией. И не зачем было делать Anti_Overflow. То есть:

//переделываем на функцию
function HeapSort( arr : myArray; size : Integer ):myArray;
Var i, L, R : Integer;
item : Integer;
Begin
L := ( size div 2 );
R := size - 1 ;
While L > 0 do
Begin
L := L - 1;
Sift( arr, L, R );
End;
While R > 0 do
Begin
item := arr[0];
arr[0] := arr[R];
arr[R] := item;
R := R - 1;
Sift( arr, L, R );
End;
heapsort:=arr;
End;

// и рендомное заполнение массива переделай:
ClrScr;
Write('Vvedite rozmirnist'' massiva : ');
ReadLn( dimension );
writeln;
writeln('***************************************** *******');
Write('Ishodnii massiv iz ');Write( dimension );Write(' elementov: ');
Randomize;
For i := 0 To dimension-1 Do
Begin
arr[i] := Random(50);
Write(arr[i]);write(' ');
End;
writeln;
writeln('***************************************** *******');
SortArray:=HeapSort( arr , dimension );
write('Otsortirovanii massiv : ');
for i := 0 to dimension-1 do begin
write( sortArray[i] ); write(' '); end;
writeln;
writeln('***************************************** *******');
writeln;
WriteLn('Press "Enter" to continue...');
Readln;
Readln;

P.s. МаССив пишется с двумя с ... Надо увОжать русский язык :)

A2GIL
06.06.2008, 18:21
2Catsy

помогите пожалуйста
(паскаль)
1) сумма с точностью
Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых

2) рекурсия
Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых
Вычисление выражения под знаком суммы выполнить через рекурсию.

Эх студент... :)


var
Sx,e:real;
x:integer;
k:word;

function Factorial(n: Word): Int64;
var
f: Int64;
i: Integer;
begin
f := 1;
for i := 2 to n do
f := f * i;
Factorial := f;
end;

function Degree(x: real;y:word): real;
begin
if (x=0) then begin
Degree:=0;
end
else begin
Degree:=Exp(y*Ln(abs(x)));
if (x<0) and (y mod 2<>0) then begin
Degree:=(-1)*Exp(y*Ln(abs(x)));
end;
end;
end;

function RecursiveSum(x:integer;e:real):real;
begin
sx:=sx+(Degree((-1),k)*Degree((x/2),2*k+1))/(Factorial(k)*Factorial(k+1));
if Abs(Sx)<e then
RecursiveSum(x,e);
RecursiveSum:=Sx;
end;

begin
ClrScr;
Sx:=0;
k:=0;
write('Vvedite x (x!=0) : ');readln(x);
write('Vvedite e (e>0) : ');readln(e);
if (e<=0) or (x=0) then
begin
writeln('Error!');
writeln('Press any key to exit...');
readln;
exit;
end;
writeln('****************************');
writeln('1) Summa s tochnostju e:');
writeln;
while abs(Sx)<e do
begin
sx:=sx+(Degree(-1,k)*Degree(x,4*k+1))/(Factorial(2*k)*(4*k+1));
k:=k+1;
end;
writeln(Sx);
writeln;
writeln('****************************');
writeln('2) Recursiya s tochnostju e:');
writeln;
Sx:=0;
k:=0;
Sx:=RecursiveSum(x,e);
Writeln(Sx);
writeln;
readln;

Buffalon
07.06.2008, 10:57
Плиз помогите ... .На СИ+
Разработать программу, оперирующую элементами. Способы динамического представления элементов,
Элементы реализуются структурами (struct).
Обработка исключительных ситуаций обязательна. (Можно и без неё)
=>
2. Очередь
Операции:
включение элемента;
исключение элемента;
просмотр элемента, находящегося в начале очереди;
поиск элемента по заданному значению;
просмотр всего содержимого.
=>многочлены (тип – double).

Fata1ex
07.06.2008, 13:55
>>Очередь
Операции:
включение элемента;
исключение элемента;
просмотр элемента, находящегося в начале очереди;
поиск элемента по заданному значению;
просмотр всего содержимого.
=>многочлены (тип – double). <<

Все это довольно просто реализуется средствами STL

Buffalon
07.06.2008, 15:03
612... .
Я понимаю.. .Обминяю на скрипт ПХП+MySQL_)
Но тем неменее нимогу реализовать ,((

Delimiter
07.06.2008, 22:11
счас придумаем чиво нидь 8) .... скрипты не нужны плюсуйте!


struct spelem
{
int flag; //-1=net elementa 1=srednii element 2=poslednii
long znach;
char *p_prev; // ukazatel na prediduschii
char *p_next; // ukazatel na sleduiuschii
};

struct mspis
{
int flag;
spelem first;
};

mspis my_spisok;

void add_elem(long znach)
{
spelem *elem;
spelem *p;
int i;
if(my_spisok.first.flag==-1)
{
my_spisok.first.flag=2;
my_spisok.first.znach=znach;
}
else
{
for(elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
i++;
elem->flag=1;
p=new spelem;
elem->p_next=(char *)p;
p->flag=2;
p->p_prev=(char *)elem;
p->znach=znach;
}
}

void show_all()
{
spelem *elem;
spelem *p;
char buf[30];

for(elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
printf("%d\r\n",elem->znach);
printf("%d\r\n",elem->znach);

}
int find_elem(long znach)
{
spelem *elem;
spelem *p;
char buf[30];
int counter;
for(counter=1,elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
{
if(elem->znach==znach)
return counter;
counter++;
}
if(elem->znach==znach)
return counter;
else
return -1;
}
void delete_elem(int number)
{
spelem *elem;
spelem *p;
spelem *prev;

char buf[30];
int counter;
if(my_spisok.first.flag==2)
my_spisok.first.flag=-1;
else
{
for(counter=1,elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
{
if(counter==number)
{
prev=(spelem *)(elem->p_prev);
p=(spelem *)(elem->p_next);
prev->p_next=elem->p_next;
p->p_prev=elem->p_prev;
free elem;
}
counter++;
}
if(counter==number)
{
prev=(spelem *)(elem->p_prev);
prev->flag=2;
free elem;
}
}
}
void init_spisok()
{
my_spisok.first.flag=-1;
}

Alrion
08.06.2008, 11:45
По лабораторной нужно написать сниффер. Сниффер я нашел даже смог его собрать (что для меня уже круто :) ) НУжно сделать так что бы сниффер записывал выводимую информацию в лог файл. Спасибо. (Язык Vc++)
#include <conio.h>
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")

#define MAX_PACKET_SIZE 0x10000
#define SIO_RCVALL 0x98000001
// Буфер для приёма данных
char Buffer[MAX_PACKET_SIZE]; // 64 Kb

//Структура заголовка IP-пакета

typedef struct IPHeader {
UCHAR iph_verlen; // версия и длина заголовка
UCHAR iph_tos; // тип сервиса
USHORT iph_length; // длина всего пакета
USHORT iph_id; // Идентификация
USHORT iph_offset; // флаги и смещения
UCHAR iph_ttl; // время жизни пакета
UCHAR iph_protocol; // протокол
USHORT iph_xsum; // контрольная сумма
ULONG iph_src; // IP-адрес отправителя
ULONG iph_dest; // IP-адрес назначения
} IPHeader;

char src[10];
char dest[10];
char ds[15];
unsigned short lowbyte;
unsigned short hibyte;

void main()
{
WSADATA wsadata; // Инициализация WinSock.
SOCKET s; // Cлущающий сокет.
char name[128]; // Имя хоста (компьютера).
HOSTENT* phe; // Информация о хосте.
SOCKADDR_IN sa; // Адрес хоста
IN_ADDR sa1; //
unsigned long flag = 1; // Флаг PROMISC Вкл/выкл.

// инициализация
WSAStartup(MAKEWORD(2,2), &wsadata);
s = socket( PF_INET, SOCK_RAW, 0 );
gethostname(name, sizeof(name));
phe = gethostbyname( name );
ZeroMemory( &sa, sizeof(sa) );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));

// Включение promiscuous mode.
ioctlsocket(s, SIO_RCVALL, &flag);

// Бесконечный цикл приёма IP-пакетов.
while( !_kbhit() )
{
int count;
count = recv( s, Buffer, sizeof(Buffer), 0 );
// обработка IP-пакета
if( count >= sizeof(IPHeader) )
{
IPHeader* hdr = (IPHeader *)Buffer;
//Начинаем разбор пакета...

strcpy(src,"Пакет: ");
CharToOem(src,dest);
printf(dest);
// Преобразуем в понятный вид адрес отправителя.
printf("From ");
sa1.s_addr = hdr->iph_src;
printf(inet_ntoa(sa1));

// Преобразуем в понятный вид адрес получателя.
printf(" To ");
sa1.s_addr = hdr->iph_dest;
printf(inet_ntoa(sa1));

// Вычисляем протокол. Полный список этих констант
// содержится в файле winsock2.h
printf(" Prot: ");
if(hdr->iph_protocol == IPPROTO_TCP) printf("TCP ");
if(hdr->iph_protocol == IPPROTO_UDP) printf("UDP ");
if(hdr->iph_protocol == IPPROTO_IP) printf("IP ");
if(hdr->iph_protocol == IPPROTO_ICMP) printf("ICMP ");
if(hdr->iph_protocol == IPPROTO_IGMP) printf("IGMP ");
if(hdr->iph_protocol == IPPROTO_GGP) printf("GGP ");
if(hdr->iph_protocol == IPPROTO_PUP) printf("PUP ");
if(hdr->iph_protocol == IPPROTO_IDP) printf("IDP ");
if(hdr->iph_protocol == IPPROTO_ND) printf("ND ");
if(hdr->iph_protocol == IPPROTO_ICLFXBM) printf("ICLFXBM");
if(hdr->iph_protocol == IPPROTO_ICMPV6) printf("ICMPV6");
if(hdr->iph_protocol == IPPROTO_IPV6) printf("IPv6");
if(hdr->iph_protocol == IPPROTO_RAW) printf("RAW ");
if(hdr->iph_protocol == IPPROTO_MAX) printf("MAX ");




// Вычисляем размер. Так как в сети принят прямой порядок
// байтов, а не обратный, то прийдётся поменять байты местами.
printf("Size: ");
lowbyte = hdr->iph_length>>8;
hibyte = hdr->iph_length<<8;
hibyte = hibyte + lowbyte;
//printf("%s",itoa(hibyte,ds,10));
printf("%u", hibyte);

// Вычисляем время жизни пакета.
printf(" TTL:%s",itoa(hdr->iph_ttl,ds,10));
printf("\n");

}
}

closesocket( s );
WSACleanup();
}

0verbreaK
08.06.2008, 14:14
void log_create(char *log_name)
{
FILE *fp;
if ((fp=fopen(log_name, "w+") ==NULL)
{
printf("Не удалось создать файл журнала\n");
exit(1);
}

fprintf(fp, "текст лога\n");
fclose(fp);
}

Delimiter
08.06.2008, 16:49
Во-первых это не снифер.... ВЕРНЕЕ это не совсем снифер!
(Отгадай какие пакеты он не будет выводить? Ответ внизу :cool: )

Во вторых НЕПОХЕК(z0mbie код давать с кривой вставкой 8))) ГЛАЗ РЕЖЕТ)!!! множественные сравнения!
if(hdr->iph_protocol == IPPROTO_TCP) printf("TCP ");
if(hdr->iph_protocol == IPPROTO_UDP) printf("UDP ");
if(hdr->iph_protocol == IPPROTO_IP) printf("IP ");
if(hdr->iph_protocol == IPPROTO_ICMP) printf("ICMP ");
if(hdr->iph_protocol == IPPROTO_IGMP) printf("IGMP ");
if(hdr->iph_protocol == IPPROTO_GGP) printf("GGP ");
if(hdr->iph_protocol == IPPROTO_PUP) printf("PUP ");
if(hdr->iph_protocol == IPPROTO_IDP) printf("IDP ");
if(hdr->iph_protocol == IPPROTO_ND) printf("ND ");
if(hdr->iph_protocol == IPPROTO_ICLFXBM) printf("ICLFXBM");
if(hdr->iph_protocol == IPPROTO_ICMPV6) printf("ICMPV6");
if(hdr->iph_protocol == IPPROTO_IPV6) printf("IPv6");
if(hdr->iph_protocol == IPPROTO_RAW) printf("RAW ");
if(hdr->iph_protocol == IPPROTO_MAX) printf("MAX ");

ХЭК! Если хочешь не пятерку лабу сдать! :cool:

switch(hdr->iph_protocol)
{
case IPPROTO_TCP: printf("TCP "); break;
.........
case IPPROTO_MAX: printf("MAX "); break;
default: printf("UNKNOWN ");
}

В третьих ты упустил мааааааааленький параметр ПОРТ!
Давай угодаю с одного раза .....попробовал но выводится лажа? (порядок байтов - великая сила!)

Ответ... такие програмульки не выводят трафик портов обработчики которых ОТСУТСТВУЮТ!
да и файрволы блокируют в 50-ти случаях из 100 (в зависимости от сетевухи ) исходящий трафик, та же ситуация наблюдается и с мопедами даже в отсутствии файерволофффф!
НО ДЛЯ ЛАБЫ СОЙДЕТ!

hoty
08.06.2008, 22:34
ЗАДАНИЕ:
По предлагаемому алгоритму, написать программу:

На Вход подаются: Два УпорядоченныХ множества A и B (МассивЫ).
Нужно проверить, принадлежит A к B или нет. Если да, то 1, нет, то 0.
Выход: да или нет (1 или 0, true или false).

ОПИСАНИЕ АЛГОРИТМА (по нему программу составит нужно):
i:=1; j:=1; // указатели на начало множеств
пока i№ |A|+1 и j№ |B|+1 цикл
если A[i] < B[j] то вернуть 0 и выход // элемент A отсутствует в B
иначе если A[i] > B[j] то j:=j+1 // переход к след. элементу B
иначе // элементы совпали – перейти к следующим
i:=i+1; j:=j+1;
конец если
конец цикла
если i=|A|+1 то вернуть 1 иначе вернуть 0.<


ЧТО Я ДЕЛАЮ:
uses crt;
const n=5;
var a: array [1..n] of integer;
var b: array [1..n] of integer;
var i,j,x,y: integer;
begin
clrscr;
writeln('a[i]');

for i:=1 to n do // солздаем массиив a (множество)
begin // упорядоченное
write('Eneter ',i,' Element : ');
readln(x); a[i]:=x;
end;

writeln; writeln('b[i]');

for i:=1 to n do // солздаем массиив b (множество)
begin // упорядоченное
write('Eneter ',i,' Element : ');
readln(y); b[i]:=y;
end;


i:=1; j:=1; // код, написанный на основе
while (a[i]+1) and (b[i]+1) do //представленнго алгоритма
begin
if a[i] < a[i]+1 then return 0;
else
begin
if a[i] > b[i] then j:=j+1;
else i:=i+1; j:=j+1;
end;
end;
if i:=a[i]+1 then return 1; else return 0;

readkey;
end.

программма не запускается. пишет ошибку 40 в условии цикла while.
естественно, как заработает (если заработает :-( .. ), сделаю, так чтобы после ввода любого массива, он сортировался автоматом. Это чтобы препод, совсем расслабился, просто вбил много цифр, а они на ему отсортировались в упорядоченное множество))))

ПРОШУ ПОМОГИТЕ МНЕ. ПРОГРАММ НЕ РАБОТАЕТ.
ТНКНИТЕ МНЕ НОСОМ, ПОЖАЛУЙСТА. ДВА ДНЯ МУЧАЮСЬ (((
Все таки раздел помощи (я свои наработки даю).
Помогите, ПОЖАЛУЙСТА.

Mosvit
09.06.2008, 12:18
Всем привет!
Есть код в котором дана матрица 6*6, программа меняет столбцы местами (первый и последний, второй и предпоследний и т.д.), эта часть программы работает хорошо, но у полученой матрицы ещё нужно поставить элементы побочной диагонали по-возрастанию, в этом и нужна помощь.

Код программы:
program pr7;
uses crt;
const n=6; m=6;
a:array[1..n,1..m] of integer=((0,2,1,2,5,6),
(4,5,7,8,1,8),
(0,6,2,3,3,4),
(5,6,1,9,7,1),
(1,2,3,4,5,6),
(6,5,4,3,2,1));
var i,j,k:integer;
begin
clrscr;
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j],' ');
writeln;
end;
for i:=1 to n do
begin for j:=0 to m-1 do
begin
if j<3 then begin
k:=a[i,j+1];
a[i,j+1]:=a[i,n-j];
a[i,m-j]:=k;
end; end; end;
writeln;
writeln;
for i:=1 to n do begin
for j:=1 to m do write(a[i,j],' ');
writeln;
end;
readkey
end.
Паскаль

R@zoR
09.06.2008, 12:38
2Hoty
Ну для начала советую нормально организовать ввод массива:

Program n11;
uses crt;
const n=5;
var a,b: array [1..n] of integer;
i,j,x,y: integer;
begin
clrscr;

{Ввод массива a}

for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;

{Ввод массива b}

for j:=1 to n do
begin
write('b[',j,']=');
readln(b[j]);
end;

с програмной частью пока не совсем разобрался.

R@zoR
09.06.2008, 12:48
пока i№ |A|+1 и j№ |B|+1 цикл
пока чего, вот этого я не понимаю организация такого цикла должна быть
пока function {<..>..=} constant(или др. function)

например while a<b do
begin
end;

очень много ошибок в плане прерывания цикла if..else ктож так ; расставляет..

--продолжение--
после вводов массивов идем на проверку совпадений:
i:=1; j:=1;
While a[i]=b[j] do
begin
x:=1;
i:=i+1;
j:=j+1;
end;

щас разберусь как сделать если нет совпадения

Fata1ex
09.06.2008, 13:09
Начал писать на Паскале - понял что них не помню уже ))

Сортировка побочной диагонали по возрастанию выглядит примерно так:


for(i=6 ;i>0 ;i--) {
for(j=0 ;j<6 ;j++) {
if (a[i][j]>a[i-1][j+1]) {
temp[0][0]=a[i][j];
a[i][j]=a[i-1][j+1];
a[i-1][j+1]=temp[0][0]; }
}
}


j-соответственно счетчик столбцов, а i-строк
Не проверял, писал прямо здесь

Fata1ex
09.06.2008, 21:10
Dober'man, хоть бы посмотрел что выкладываешь
var temp: integer;

..................

for i:=1 to n do
for j:=1 to n do
begin
if a[i,i]<a[i+1,i+1] then
begin
temp:=a[i,i];
a[i,i]:=a[i+1,i+1];
a[i+1,i+1]:=temp;
end;
end;

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

hoty
09.06.2008, 22:31
Спасибо Всем кто отписался.
В том задании множества можно представлять как упорядоченные массивы [1,2,3..n];
------------------
пишу для себя, чтобы лучше программировать.

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

for i:=1 to n do
readln(a[i]);

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


ВОТ МОЙ КОД:

uses crt;
const n=5;
var a,b,x: array [1..n] of integer; // a,b, - наши массивы, x - массивы для функции, через него заполняю нужные мне массивы.
var i,j, y: integer;

function fill_mas (x: array of integer):integer; // функция заполнения массива x);
begin
for i:=1 to 5 do
begin
readln(x[i]);
end;
fill_mas:=x[n];
end;

begin
clrscr;

a[n]:=fill_mas(x[n]); // заполняем нужный нам массив a через вызов функции.


for i:=1 to n do
begin
writeln('Element ',i,' : ', a[i]); // выводим полученный массив на экран.
end;

readkey; // ждем нажатия клавишы для закрытия.
end.

!!!но появляется,
!!!ОШИБКА 202 - ПЕРЕПОЛНЕНИЕ СТЕКА.
Поясните как исправить код так чтобы все работало.[HTML]

P.S: это Паскаль 7.0

Dober'man
09.06.2008, 22:44
4_hoty

const N = 1000;
type massiv = array [1..N] of integer;
procedure ReadMas(var mas: massiv; k: integer);
var i: integer;
begin
randomize;
for i:=1 to k do mas[i]:=random(100);
end;
var mas: massiv;
k,i: integer;
begin
write('>');
readln(k);
ReadMas(mas,k);
for i:=1 to k do write(mas[i],' ');
readln
end.

hoty
09.06.2008, 23:18
4_Dober'man

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

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

Кстаи, можно обойтись, без описания массива как типа?

Mosvit
10.06.2008, 11:09
4_Mosvit

Цикл переставит элементы массива (по возрастанию) по диагонали сверху вниз:
....

Попробовал, что-то не пашет, элементы переставляет, но явно не по-возрастанию, а как-то на бум.

Само задаине тут (http://forum.antichat.ru/showpost.php?p=723660&postcount=619)

Dober'man
10.06.2008, 11:12
hoty

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


читаешь - for i:=1 to k do mas[i]:=read(mas[i]);
выводишь - for i:=1 to k do write(mas[i],' ');


Кстаи, можно обойтись, без описания массива как типа?

Да. Разницы нет.

Dober'man
10.06.2008, 11:15
Mosvit
Так я же исправил: предпоследний пост, 63 страницы!.

hoty
10.06.2008, 16:10
--------PASCAL 7.0---------------
Все разобрался.
В программе две процедуры:
1) Заполняет массив, путем ввода цифр.
2) Выводит массив.
Также реализована возможность в теле программы создания и вывода массива через одну (!) строчку.

uses crt;
const n=5; {n-1}
var a,b, x: array [1..n] of integer;
var i,j: integer;

procedure fullmas (var x: array of integer); {procedure for create mas}
begin
writeln('x[i]');
for i:=1 to n do
begin
write('Enter ',i,' Element : '); readln(x[i]);
end;
end;

procedure printf (x: array of integer); {procedure for print mas to display}
begin
writeln('x[i]');
for i:=1 to n do
begin
writeln(i,'Element : ',x[i]);
end;
end;

begin
clrscr;

fullmas(a); {create mas with procedure}
printf (a); {print mas to dislay with procedure}

fullmas(b); {create mas with procedure}
printf (b); {print mas to dislay with procedure}

readkey;
end.

спасибо, всем кто помогал.

xxxxxxxxxxxxxxx
10.06.2008, 20:26
задачка
дан *.cpp файл нужно убратьв нем все коментарии // и /* ----- */ помогите плиз
программа нужна на c++

Alrion
11.06.2008, 15:19
Мда такое ощущение что не видать мне зачета :( .
Теперь нужно в сниффер вставить анализатор пакетов, что бы содержимое пакета выводилось в виде 16 и ascii таблиц. Спасибо.
#include <conio.h>
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")

#define MAX_PACKET_SIZE 0x10000
#define SIO_RCVALL 0x98000001
// Буфер для приёма данных
char Buffer[MAX_PACKET_SIZE]; // 64 Kb

//Структура заголовка IP-пакета

typedef struct IPHeader {
UCHAR iph_verlen; // версия и длина заголовка
UCHAR iph_tos; // тип сервиса
USHORT iph_length; // длина всего пакета
USHORT iph_id; // Идентификация
USHORT iph_offset; // флаги и смещения
UCHAR iph_ttl; // время жизни пакета
UCHAR iph_protocol; // протокол
USHORT iph_xsum; // контрольная сумма
ULONG iph_src; // IP-адрес отправителя
ULONG iph_dest; // IP-адрес назначения
} IPHeader;

char src[10];
char dest[10];
char ds[15];
unsigned short lowbyte;
unsigned short hibyte;

void main()
{
WSADATA wsadata; // Инициализация WinSock.
SOCKET s; // Cлущающий сокет.
char name[128]; // Имя хоста (компьютера).
HOSTENT* phe; // Информация о хосте.
SOCKADDR_IN sa; // Адрес хоста
IN_ADDR sa1; //
unsigned long flag = 1; // Флаг PROMISC Вкл/выкл.

// инициализация
WSAStartup(MAKEWORD(2,2), &wsadata);
s = socket( PF_INET, SOCK_RAW, 0 );
gethostname(name, sizeof(name));
phe = gethostbyname( name );
ZeroMemory( &sa, sizeof(sa) );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));

// Включение promiscuous mode.
ioctlsocket(s, SIO_RCVALL, &flag);

// Бесконечный цикл приёма IP-пакетов.
while( !_kbhit() )
{
int count;
count = recv( s, Buffer, sizeof(Buffer), 0 );
// обработка IP-пакета
if( count >= sizeof(IPHeader) )
{
IPHeader* hdr = (IPHeader *)Buffer;
//Начинаем разбор пакета...

strcpy(src,"Пакет: ");
CharToOem(src,dest);
printf(dest);
// Преобразуем в понятный вид адрес отправителя.
printf("From ");
sa1.s_addr = hdr->iph_src;
printf(inet_ntoa(sa1));

// Преобразуем в понятный вид адрес получателя.
printf(" To ");
sa1.s_addr = hdr->iph_dest;
printf(inet_ntoa(sa1));

// Вычисляем протокол. Полный список этих констант
// содержится в файле winsock2.h
printf(" Prot: ");
if(hdr->iph_protocol == IPPROTO_TCP) printf("TCP ");
if(hdr->iph_protocol == IPPROTO_UDP) printf("UDP ");
if(hdr->iph_protocol == IPPROTO_IP) printf("IP ");
if(hdr->iph_protocol == IPPROTO_ICMP) printf("ICMP ");
if(hdr->iph_protocol == IPPROTO_IGMP) printf("IGMP ");
if(hdr->iph_protocol == IPPROTO_GGP) printf("GGP ");
if(hdr->iph_protocol == IPPROTO_PUP) printf("PUP ");
if(hdr->iph_protocol == IPPROTO_IDP) printf("IDP ");
if(hdr->iph_protocol == IPPROTO_ND) printf("ND ");
if(hdr->iph_protocol == IPPROTO_ICLFXBM) printf("ICLFXBM");
if(hdr->iph_protocol == IPPROTO_ICMPV6) printf("ICMPV6");
if(hdr->iph_protocol == IPPROTO_IPV6) printf("IPv6");
if(hdr->iph_protocol == IPPROTO_RAW) printf("RAW ");
if(hdr->iph_protocol == IPPROTO_MAX) printf("MAX ");




// Вычисляем размер. Так как в сети принят прямой порядок
// байтов, а не обратный, то прийдётся поменять байты местами.
printf("Size: ");
lowbyte = hdr->iph_length>>8;
hibyte = hdr->iph_length<<8;
hibyte = hibyte + lowbyte;
//printf("%s",itoa(hibyte,ds,10));
printf("%u", hibyte);

// Вычисляем время жизни пакета.
printf(" TTL:%s",itoa(hdr->iph_ttl,ds,10));
printf("\n");

}
}

closesocket( s );
WSACleanup();
}

Зы. Хотелось бы что бы код был вписан в текущий, потомучто сам я никак не спралюсь с этим :( . Еще раз спасибо

Delimiter
11.06.2008, 15:48
#include <conio.h>
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")

#define MAX_PACKET_SIZE 0x10000
#define SIO_RCVALL 0x98000001
// Буфер для приёма данных
char Buffer[MAX_PACKET_SIZE]; // 64 Kb

//Структура заголовка IP-пакета

typedef struct IPHeader {
UCHAR iph_verlen; // версия и длина заголовка
UCHAR iph_tos; // тип сервиса
USHORT iph_length; // длина всего пакета
USHORT iph_id; // Идентификация
USHORT iph_offset; // флаги и смещения
UCHAR iph_ttl; // время жизни пакета
UCHAR iph_protocol; // протокол
USHORT iph_xsum; // контрольная сумма
ULONG iph_src; // IP-адрес отправителя
ULONG iph_dest; // IP-адрес назначения
} IPHeader;

char src[10];
char dest[10];
char ds[15];
unsigned short lowbyte;
unsigned short hibyte;


void mytransstr( char *buf,int len,char *dst)
{
int i,k=0;
char prstr[10];
char tstr[10];
char pstr[40];
char dstr[40];
unsigned long m;
strcpy(dst,"");
strcpy(pstr,"");
for(i=0,k=0;i<len;i++)
{
if(*((unsigned char *)(buf+i))<16)
{
strcpy(prstr,"0");
strcat(pstr,".");
}
else
{
strcpy(prstr,"");
sprintf(dstr,"%c",*((unsigned char *)(buf+i)));
strcat(pstr,dstr);
}
m=(long )*((unsigned char *)(buf+i));
ultoa(m,tstr,16);
strcat(prstr,tstr);
strcat(dst,prstr);
strcat(dst," ");
if(k>14)
{
strcat(dst,"\t| ");
strcat(dst,pstr);
strcpy(pstr,"");
strcat(dst,"\r\n");
k=0;
}
else
k++;


}
strcat(dst,"\t| ");
strcat(dst,pstr);
strcat(dst,"\r\n");
strupr(dst);
}



void main()
{
WSADATA wsadata; // Инициализация WinSock.
SOCKET s; // Cлущающий сокет.
char name[128]; // Имя хоста (компьютера).
HOSTENT* phe; // Информация о хосте.
SOCKADDR_IN sa; // Адрес хоста
IN_ADDR sa1; //
unsigned long flag = 1; // Флаг PROMISC Вкл/выкл.
char *place_for; // added !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!

// инициализация
WSAStartup(MAKEWORD(2,2), &wsadata);
s = socket( PF_INET, SOCK_RAW, 0 );
gethostname(name, sizeof(name));
phe = gethostbyname( name );
ZeroMemory( &sa, sizeof(sa) );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));

// Включение promiscuous mode.
ioctlsocket(s, SIO_RCVALL, &flag);

// Бесконечный цикл приёма IP-пакетов.
while( !_kbhit() )
{
int count;
count = recv( s, Buffer, sizeof(Buffer), 0 );
// обработка IP-пакета
if( count >= sizeof(IPHeader) )
{
place_for=new char[count*3]; // added !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!
IPHeader* hdr = (IPHeader *)Buffer;
//Начинаем разбор пакета...

strcpy(src,"Пакет: ");
CharToOem(src,dest);
printf(dest);
// Преобразуем в понятный вид адрес отправителя.
printf("From ");
sa1.s_addr = hdr->iph_src;
printf(inet_ntoa(sa1));

// Преобразуем в понятный вид адрес получателя.
printf(" To ");
sa1.s_addr = hdr->iph_dest;
printf(inet_ntoa(sa1));

// Вычисляем протокол. Полный список этих констант
// содержится в файле winsock2.h
printf(" Prot: ");
if(hdr->iph_protocol == IPPROTO_TCP) printf("TCP ");
if(hdr->iph_protocol == IPPROTO_UDP) printf("UDP ");
if(hdr->iph_protocol == IPPROTO_IP) printf("IP ");
if(hdr->iph_protocol == IPPROTO_ICMP) printf("ICMP ");
if(hdr->iph_protocol == IPPROTO_IGMP) printf("IGMP ");
if(hdr->iph_protocol == IPPROTO_GGP) printf("GGP ");
if(hdr->iph_protocol == IPPROTO_PUP) printf("PUP ");
if(hdr->iph_protocol == IPPROTO_IDP) printf("IDP ");
if(hdr->iph_protocol == IPPROTO_ND) printf("ND ");
if(hdr->iph_protocol == IPPROTO_ICLFXBM) printf("ICLFXBM");
if(hdr->iph_protocol == IPPROTO_ICMPV6) printf("ICMPV6");
if(hdr->iph_protocol == IPPROTO_IPV6) printf("IPv6");
if(hdr->iph_protocol == IPPROTO_RAW) printf("RAW ");
if(hdr->iph_protocol == IPPROTO_MAX) printf("MAX ");




// Вычисляем размер. Так как в сети принят прямой порядок
// байтов, а не обратный, то прийдётся поменять байты местами.
printf("Size: ");
lowbyte = hdr->iph_length>>8;
hibyte = hdr->iph_length<<8;
hibyte = hibyte + lowbyte;
//printf("%s",itoa(hibyte,ds,10));
printf("%u", hibyte);

// Вычисляем время жизни пакета.
printf(" TTL:%s",itoa(hdr->iph_ttl,ds,10));
printf("\n");
// added !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!
mytransstr( Buffer,count,place_for); // дать весь
printf("%s\r\n",place_for); // дамп включая
// заголовок IP

delete[] place_for;
}
}

closesocket( s );
WSACleanup();
}

xxxxxxxxxxxxxxx
11.06.2008, 19:02
У кого есть исходники похожих программ на с++ поедлитесь плз с меня плюсы=)

1) решение квадратного уравнения
входные даннные текстовый файл с 3 мя действительными
числами. программа читает имя файла с командной строки

2) найти угол между двумя векторами данные в файле ( размерность векторов, действительные коэфициенты векторов(
угол вывести в градусах

3) дан файл с исходником на убрать все коментарии с него такие как (// и /* */)

4) перевод ссуммы с одной валюты в другую входные данные вывод в виде матрицы. 3 валюты

Delimiter
11.06.2008, 19:31
2 xxxxxxxxxxxx (3-я)

void delete_rem(char *m_path)
{
CFile f;
CFileException e;
char *file_buf;
int fl=0;
long l,i,n;
if(f.Open(m_path,CFile::modeRead,&e))
{
f.SeekToEnd();
l=f.GetPosition();
file_buf=new char[l];
f.SeekToBegin();
l=f.ReadHuge(file_buf,l);
f.Close();
for(i=0;i<l;i++)
{
switch(*(file_buf+i))
{
case 0x0d:
if(fl==1)
{
memmove(file_buf+n,file_buf+i,l-i);
l-=i-n;
i-=i-n;
fl=0;
}
break;
default:
if(i>0)
if(strncmp(file_buf+i-1,"//",2)==0 && fl==0)
{ fl=1; n=i-1;}
else
if(strncmp(file_buf+i-1,"/*",2)==0)
{ fl=2; n=i-1;}
else
if(strncmp(file_buf+i-1,"*/",2)==0)
{
if(fl==2)
{
memmove(file_buf+n,file_buf+i+1,l-i-1);
l-=i-n;
i-=i-n;
fl=0;
}

}

}
}
if(f.Open(m_path,CFile::modeCreate | CFile::modeWrite,&e))
{
f.WriteHuge(file_buf,l-1);
f.Close();
}
delete[] file_buf;
}
}


по поводу остальных задач .... ты должен был давать примеры входных данных в файле, если планируешь что ктото напишет, а если как некоторые думаешь ,что все уже кем то было написано, то Google в руки!

xxxxxxxxxxxxxxx
12.06.2008, 00:56
а как реализовать получение входных данных с текстового файла ? к прммеру в блокноте написано 1 3 6 и что бы эти цыфры заганялись в переменные в программе?

Delimiter
12.06.2008, 01:04
считывай строку из файла затем из строки тащи числа sscanf -ОМ!

Mosvit
12.06.2008, 17:29
Попытался составить программу, но чувствую что делаю не правильно
Задание такое:
Составить программу, предусматривающую чтение исходных данных с дискового файла. Задана числовая матрица. Представить столбцы в порядке возрастания наибольших элементов столбцов.

Я не могу понять, как файлу с набором цифр, загружаемому с компьютера, присвоить значение матрицы (a:array[1..n,1..m] of integer) если ему не надо ничего присваивать, то как дальше с ним работать (искать наибльший элемент в столбцах)?

Хочу загрузить этот файл, каким-то образом объяснить Паскалю что это матрица, а потом уже с помощью циклов искать в столбцах максимальные элементы и переставлять их соответственно.

Заранее всем откликнувшемся спасибо!

Вот что я сам написал:

program lab2;
uses crt;
const
m=5; n=5;
var a:array[1..n,1..m] of integer;
max,i,j,max,k:integer;
ft:text;
begin
clrscr;
assign(ft,'123.pas');
reset(ft);
max:=-1e20;
for j:=1 to m do
i:=i+1;
if max<a[i,j] then begin max:=a[j];
end;


readkey;
end.

Pascal.

Fata1ex
12.06.2008, 17:32
Берешь символ - если цифра, записываешь в массив, если пробел, идешь дальше. Берешь символ - если цифра, записываешь в массив, если переход на новую строку, инкрементируешь соответствующий аргумент. И так до конца файла.

Mosvit
12.06.2008, 18:02
Берешь символ - если цифра, записываешь в массив, если пробел, идешь дальше. Берешь символ - если цифра, записываешь в массив, если переход на новую строку, инкрементируешь соответствующий аргумент. И так до конца файла.
а как это программно реализовать?

Как-то так?

for i:=1 to n do
If <символ> = <цифра> then <символ>:=a[i,j]
else next <символ>?

А что тогда брать за символ и цифра? Как их обозначть?

Fata1ex
12.06.2008, 18:22
Сорри, я Паскаль совсем не помню ( Алгоритм такой можно использовать, а вот как...

Dober'man
12.06.2008, 19:47
4_Mosvit
ft:text;
begin
clrscr;
assign(ft,'123.pas');
Oшибка: переменная ft у тебя типа text => она не откроется на чтение из 123.pas, только 123.txt (т.к. тип text, а не file).

Считываем массив из файла (тут посложней будет) :

var mas: array of [1..n,1..m] of integer;
ft: text;

............................

assign(ft,'123.txt');
reset(ft);

......................

i:=1;
while not seekeof(ft) do
begin
j:=1;
while not seekeoln(ft) do
begin
read(ft, mas[i,j]);
j:=j+1;
end;
readln(ft);
i:=i+1;
end;

Массив считан в переменную mas...
Дальше работаешь как с обычным массивом чисел...

hoty
12.06.2008, 22:16
На днях спрашивал про PASCAl 7.0:

1. Проверка включения AÌ B (все элементы массива A есть в массиве B).

Вход: Два УПорядоченных множества A и B (массивы).
Выход: да или нет (1 или 0, true или false).

i:=1; j:=1; // указатели на начало множеств
пока i¹ |A|+1 и j¹ |B|+1 цикл
если A[i] < B[j] то вернуть 0 и выход // элемент A отсутствует в B
иначе если A[i] > B[j] то j:=j+1 // переход к след. элементу B
иначе // элементы совпали – перейти к следующим
i:=i+1; j:=j+1;
конец если
конец цикла
если i=|A|+1 то вернуть 1 иначе вернуть 0.<


Вот решение (разобрался :-) :

uses crt;
const n=4, m=4; {n,m - proportion of our mas}
var a[n],b[n];

uses crt;
const n=3; m=7;
var a: array [1..n] of integer;
b: array [1..m] of integer;
i,j: integer;
otvet: boolean;

begin
clrscr;


writeln('a[',n,']');
for i:=1 to n do
begin write('Enter ',i,' Element : '); readln(a[i]); end;

writeln('b[',m,']');
for j:=1 to m do
begin write('Enter ',j,' Element : '); readln(b[j]); end;


i:=1; j:=1;

while ( (i<n+1) and (j<m+1) ) do

if a[i]<b[j] then begin otvet:=false; break; end
else
if a[i]>b[j] then j:=j+1;
else
begin i:=i+1; j:=j+1; end;

if (i=n+1) then otvet:=true else otvet:=false; writeln('otvet : ',otvet);

writeln; writeln('Press to button'); readkey;
end.

Спасибо форумчанам.

Mosvit
14.06.2008, 13:16
Опять возникла проблема,
Задание тоже: Переставить столбцы матрицы в порядке возрастания наибольших элементов столбцов.

Выводить максимальные элементы столбцов не обязательно, я составил из максимальных элементов одномерный массив и в нём хотел всё расствить, но ничего не меняется

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


program lab2;
uses crt;
const n=5; m=5;
var mas: array[1..n,1..m] of integer;
mne:array[1..99] of integer;
ft: text;
i,j:integer;
x,y:integer;
begin
clrscr;
assign(ft,'123.txt');
reset(ft);
i:=1;
while not seekeof(ft) do
begin
j:=1;
while not seekeoln(ft) do
begin
read(ft, mas[i,j]);
j:=j+1;
end;
readln(ft);
i:=i+1;
end;
writeln;
writeln('Ishodnaya matrica:');
writeln;
for i:=1 to n do begin
for j:=1 to m do write(' ',mas[i,j]);
writeln;
end;
writeln;


writeln (' Massiv iz naibolchih el-ov stolbcov: ');
for i:=1 to n do
writeln (' max el-ent ',i,' stolbca ',mne[i]:4);


for i:=1 to n do
if mne[i]<x+1 then
y:=mne[i];




writeln;
writeln (' Polucheniy massiv ');
for i:=1 to n do
begin
for j:=1 to m do
write (mas[i,j]:4);
writeln;
end;



readkey;
end.

hoty
15.06.2008, 04:59
В ПАСКАЛЕ:

Есть задание: отсортировать массив различными способами.

почти сделал)

но ещё нужно: "Правильность сортировки проверить путем подсчета контрольной суммы и числа серий в массиве."
что такое "контрольная сумма" понятно. Это сумма элементов до сортировки и после.

но, что такое "число серий".??.??. ??

Подскажите, плиз.

+ скажите, как сделать подсветку символа
(цифры, хранящейся в integer, допустим a:=7).

Fata1ex
15.06.2008, 07:42
http://faqs.org.ru/progr/common/sorting.htm

Посмотри тут, может разберешься

Dober'man
15.06.2008, 10:34
4_hoty
Опять не туда рыть начал =)
что такое "контрольная сумма" понятно. Это сумма элементов до сортировки и после.
т.е. ты хочешь сказать, что от перестановки слагаемых сумма поменяется?!?!?! :)
Контрольная сумма - биты - 0 и 1 - XOR'ом считаются...

hoty
15.06.2008, 11:13
to Fata1ex : thank.

to Dober'man : 4_hoty
Опять не туда рыть начал =) т.е. ты хочешь сказать, что от перестановки слагаемых сумма поменяется?!?!?! :)
ужас, я подумал, что сумма не изменится если отсортировать массив ))))
Контрольная сумма - биты - 0 и 1 - XOR'ом считаются...
thank, посмотрю.

To All : кто-нибудь в курсе, что такое число серий в массиве?

Dober'man
15.06.2008, 11:20
4_Mosvit

Выводить максимальные элементы столбцов не обязательно, я составил из максимальных элементов одномерный массив и в нём хотел всё расствить, но ничего не меняется


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

Исправил:


program lab2;
uses crt;
const n=5; m=5;
var mas: array[1..n,1..m] of integer;
mne:array[1..n] of integer;
ft: text;
i,j:integer;
x,y:integer;
begin
clrscr;
assign(ft,'123.txt');
reset(ft);
i:=1;
while not seekeof(ft) do
begin
j:=1;
while not seekeoln(ft) do
begin
read(ft, mas[i,j]);
j:=j+1;
end;
readln(ft);
i:=i+1;
end;
writeln;
writeln('Ishodnaya matrica:');
writeln;
for i:=1 to n do begin
for j:=1 to m do write(' ',mas[i,j]);
writeln;
end;
writeln;


writeln (' Massiv iz naibolchih el-ov stolbcov: ');
for i:=1 to n do
begin
for j:=1 to m-1 do
begin
if mas[j,i]<mas[j+1,i] then
begin
mne[i]:=mas[j+1,i];
end;
end;
writeln (' max el-ent ',i,' stolbca ',mne[i]:4);
end;


// for i:=1 to n do
// if mne[i]<x+1 then
// y:=mne[i];




// writeln;
// writeln (' Polucheniy massiv ');
// for i:=1 to n do
// begin
// for j:=1 to m do
// write (mas[i,j]:4);
// writeln;
// end;



readkey;
end.

Fata1ex
15.06.2008, 11:58
кто-нибудь в курсе, что такое число серий в массиве?
Дык перейди по ссылке, там несколько примеров с использованием серий.

П.С.
Сам когда искал, больше всего было вариантов таких -
Серия – это один или несколько одинаковых элементов, стоящих подряд в массиве
Боюсь что так оно и есть ;)
Длинна же серии - это количество данных элементов, идущих подряд.

hoty
15.06.2008, 14:02
to Fatalex : спасибо за определение :-)
p.s: переходил по ссылке. смотрел инфу по числу серий в массиве, но там было только их использование, а определения не было.

to all: Сортровка методом "прямого включения" (базовый для метода Шелла):
программа запускается, НО после ввода массива
begin через readln, показывает ошибку в строке (см.код).

uses crt;
const n=5;
var i,j, t, buffer: integer;
a: array [1..n] of integer;
begin
clrscr;
for i:=1 to n do readln(a); {enter mas}
clrscr;
write('Your Mas : '); for i:=1 to n do write(' ',a[i]:3); writeln; writeln; {print mas}

for i:=1 to n do
begin
t:=a[i]; j:=i-1;
while ( ((j>0) and (t<a[j]) ) do [I]программа запускается, НО после ввода массива
через readln, показывает ошибку в этой строке.
begin
a[j+1]:=a[j]; j:=j-1;
end;
a[j+1]:=t;
end;
writeln;

writeln('New Mas'); for i:=1 to n do write(a[i]:3); {print mas}

readkey;
end.

help me, please. Как закончу с этими сортировками, выложу сюда ссылку на скачку алгоритмов всех основных сортировок (около 6) массивов.

+ to Fata1ex : опечатка (( там 0. + это не метод Шелла, а метод прямого включения (базовый для метода Шелла).

Fata1ex
15.06.2008, 14:28
for i:=2 to n do
begin
t:=a[i]; a[0]:=a[i]; j:=i;
while t<a[j-1] do
begin
a[j]:=a[j-1]; Dec(j);
end;
a[j]:=t;
end;
writeln;

hoty
15.06.2008, 17:27
с этой строчкой не работает
while ( ((j>0) and (t<a[j]) ) do - ошибку выдает.

А вот так работает: :-)
while ( ((j>0) xor (t<a[j]) ) do
только вот массив сортируется в убывающем порядке, попробую код подправить, чтобы в возрастающем было.

0verbreaK
15.06.2008, 23:51
ну так одну скобку пропустили


while ( ((j>0) and (t<a[j]) )) do

hoty
16.06.2008, 05:26
to : 0verbreaK

Thank you). Странно, если бы была скобка лишняя Паскаль должен ведь был выдать ошибку, а он запускался и только после этого выдавал ошибку.

С xor сортирует массив в убывающем порядке.
С and в возрастающем.

to ALL:

Кто в курсе, расскажите, "простым языком", что такое "ключ сортировки" ?

_empty
16.06.2008, 12:08
to : 0verbreaK

Thank you). Странно, если бы была скобка лишняя Паскаль должен ведь был выдать ошибку, а он запускался и только после этого выдавал ошибку.

С xor сортирует массив в убывающем порядке.
С and в возрастающем.

to ALL:

Кто в курсе, расскажите, "простым языком", что такое "ключ сортировки" ?

Это обычно функция, которая задает порядок сортировки, т.е. по убыванию, возрастанию, или по знаку и т.д. и т.п.

Benzin
17.06.2008, 18:28
Люди добры помогите плиз решить 2 задачи по asm, я в нем мало что понимаю, спасите плиз.
Если можно, то код как можно проще, не нужны всякие хитрые приемы, чтоб хоть смог разобраться, ПОЖАЛУЙСТА

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

2) Даны целые числа A1,....., An. Если в данной последовательности ни одно четное число не расположено после нечетного, то получить все отрицательные члены последовательности, иначе - все положительные. Порядок следования чисел в обоих случаях заменяется на обратный.

avton0m
18.06.2008, 23:48
Помогите плз с решением (ака решите за меня :)

Задан массив M натуральных чисел, начинающийся с единицы.
Как найти минимальное натуральное число, не представимое суммой никаких элементов массива M.


C/C++

Delimiter
20.06.2008, 09:54
сортируешь элементы в порядке возрастания
затем берешь функцию

int check(int curindex,int maxindex,int sum,int rezult)
{
int i,cursum;
for(i=curindex;i<maxindex;i++)
{
cursum=A[i]+sum;
if(cursum==rezult)
return 1;
else
if(cursum>rezult)
return 0;
else
if(check(i+1,maxindex,cursum,rezult)==1)
return 1;
}
return 0;
}

// использование функции
for(j=0;j<M;j++)
if(check(0,j,0,A[j])==0)
{ printf("Minimal is:%d",A[j]); break; }



не проверял бил прямо тут!

avton0m
20.06.2008, 10:18
Это ж просто перебор?

Delimiter
20.06.2008, 22:11
а ты думаешь есть формула которая сразу даст тебе число ? 8))))))))))))))))))))))))))

или хитрые шаг вперед два шага назад , которые тебя сразу выведут на решение?

тебе же написали по русски "на ОТСОРТИРОВАННОМ массиве"! Или ты думаешь что и в шахматы комп играет по хитрым формулам без перебора! Эхххх .... горе математики , алгоритмистикта и есть дискретная математика которая целые книги посвящает умным переборам (на графах ,на цепях.... но множествах отображений и перестановок)!!! Автоном это последняя задача которую я тебе помог сделать.... подрости чуток(свою единицу в репе забери обратно, раз не в коня корм)!

BARk
22.06.2008, 03:33
Помогите плз с написанием программы :
Создание класс Vector для выполнения над векторами операций =,+,-,*, на число, нахождение нормы (длины), скалярное произведение векторов, вывод вектора.
Составить программу для тестирования класса.
С/C++

Murena
24.06.2008, 15:04
Помогите пожалуйста!
надо на объектно-ориентированном с++ написать программку, которая демонстрирует роботу пульта дистанционного управление видеосистемой,которая состоит из телевизора и двд-тюнера
ПЛИЗЗЗЗ!!!!

Garfi
24.06.2008, 16:42
Помогите пожалуйста!
надо на объектно-ориентированном с++ написать программку, которая демонстрирует роботу пульта дистанционного управление видеосистемой,которая состоит из телевизора и двд-тюнера
ПЛИЗЗЗЗ!!!!
Ищи здесь (http://ishodniki.ru) ! ;)

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

Murena
24.06.2008, 19:30
Не нашла

_empty
24.06.2008, 21:34
Не нашла

Уточни на чем это должно быть написано, и графически или нет :)

Murena
24.06.2008, 22:19
На ООП с++
Графически

advokat.holy
30.06.2008, 20:43
Сдрасти, ели кто может помочь помогите плз
Надо написать программу для роботы с двоичними деревьями. на си или си++
программа должна уметь создавать дерево, обход дерева, подсчет количества элементов, добавить элемент, удалить элемент, сливание двух деревьев

хоть что-то помогите! плз

Novi4ek
30.06.2008, 23:09
дай 100 долларов на починку ноута - дам такую программку

0verbreaK
30.06.2008, 23:34
advokat.holy здесь смотрел

http://ishodniki.ru/list/?show=alg-ds&cat=18

advokat.holy
01.07.2008, 17:24
спамибо помогло

CrazyStudentS_Mi}{
04.07.2008, 22:19
Требуется прога на Дельфи
В задании требуется реализовать на основе определенного типа интерфейса какой-либо функционал (у меня Single Document Interface (SDI) ?x96; однодокументный интерфейс пользователя). В созданном проекте необходимо реализовать базовый функционал работы с числами то есть: умножение; деление; вычитание; сложение; возведение в степень; взятие корня; взятие модуля числа. Кроме базового функционала необходимо реализовать также дополнительный функционал: Поддержка функции решения линейных уравнений методом Гаусса, Поддержка арифметики комплексных чисел, Поддержка выгрузки результатов в HTML, Поддержка выгрузки результатов в MS Word.


контакт icq 6553782



НЕАКТУАЛЬНО

Пиотр Тотамович
09.08.2008, 00:48
Скажи, это из ПТУ задание или ВУЗовское?
Без задней мысли

sharkerr
19.08.2008, 11:32
Помогите пожалуйста! Надо написать прогу которая будет искать шестнадцатиричные числа в строке.
Задание:
Подсчитать колличество шестнадцатиричных чисел
Пример: 0xabcd12 0xghjhgh sdfgsdfg rtrt 0x23f
p.s. C++

4p3
19.08.2008, 11:33
Какой язык? Могу предложить С++

sharkerr
21.08.2008, 13:02
Какой язык? Могу предложить С++
Есть исходник?

4p3
21.08.2008, 13:12
К вечеру будет, ты не появлялся пару дней, я и не писал...

jawbreaker
21.08.2008, 13:38
Есть исходник?
http://paste.pocoo.org/show/82883/

eLWAux
21.08.2008, 13:47
0xabcd12 0xghjhgh sdfgsdfg rtrt 0x23f
я предлагаю так делать:
в тексте ищеш 0х,
потом после 0х читаеш ЦИФРИ до тех пор пока не будет конец (тоесть встретитса буква, пробел, знаки разние и тд (a,b,c,d,e,f - ето подходит!)),
и в конце копируеш текст, начиная с 0х до ..

Результат:
0xabcd12
0x23f

п.с.: если надо, могу на делфи такое сделать для тебя =)

4p3
21.08.2008, 14:25
http://paste.pocoo.org/show/82883/
На сколько я вижу этот исходник только считает количество вхождений. + он не фильтрует бяку типо 0xsdfsdfsfsfsf или просто 0x

Calcutta
21.08.2008, 18:19
Нужно сделать 3 элементарных проги на паскале -)
1) Даны значения переменных: a = 8, b = -23, c = -48, d = 63. Вычислить значения e1, e2, e3, e4 по следующим формулам: (тут формулы)

2) (Обработка массивов)
Для заданной целочисленной квадратной матрицы F найти номер строки в которой находится самая длинная серия. Серия - это последователь-ность, составленная из совпадающих элементов. Исходную матрицу вывести в общепринятом виде. Также вывести в произвольном виде длины всех серий заданной матрицы и результат.

3) Дана зависимость f(t)=(cos(5t/2))/tg(3t) . Величина t изменяется от 0 до 150 с шагом 0,1. Построить график функции.

100% высылаю 250wmr после проверки прог преподом.
за заданиями в асю: 276-166-663

jawbreaker
21.08.2008, 23:21
http://paste.pocoo.org/show/82944/ полноценная версия =)

4p3
22.08.2008, 00:04
К паскалю какое имеет отношение?!
Это наша дискуссия про исходник на С++, который ищет гексы.

jawbreaker, классно написано. свой я постить не буду, набыдлокодил на 100 строк, твой изящнее.

DrugS
26.08.2008, 13:09
Привет! Дали задание для курсача...не пойму как это должно все выглядеть...рассталкуйте пожалуйста.

Текс задания:
Тема: Программная реализация динамического списка динамических очередей

Цель работы: разработать набор подпрограмм для реализации основных операций с заданной составной структурой. Требования к программе:

-Поддержка двух структур данных: основной и вспомогательной (для хранения элементов, удаленных из основной)
-Информационные составляющие элементов структуры хранятся отдельно в динамической памяти и адресуются указателями.
-Описание основной структуры и все необходимые операции (список базовых операций дается ниже) собираются в отдельном модуле
-Описание вспомогательной структуры и операции с ней - в своем отдельном модуле
-Отдельно создается демонстрационный модуль для отображения текущего состояния реализуемой структуры

Типовой набор операций:

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

Программная реализация выполняется в среде Windows с помощью пакета Delphi (или С++) с использованием стандартных компонентов отображения данных или в виде консольного приложения с простейшим диалогом.

Примерное содержание пояснительной записки

1. Постановка задачи (цель работы, исходные данные, результат, требования к реализации)
2. Теоретическое описание используемых структур данных с ссылками на литературу
3. Описание общей структуры проектируемой программы
4. Словесное описание логики работы основных подпрограмм
5. Листинги всех подпрограмм с краткими комментариями
6. Результаты тестирования
7. Список литературы

Основные этапы выполнения с ОБЯЗАТЕЛЬНЫМ предоставлением отчета по каждому этапу преподавателю:

1. Подбор теоретического материала и описание всех используемых структур данных и алгоритмов
2. Разработка и описание демонстрационного модуля
3. Программная реализация и отладка
4. Оформление пояснительной записки

Внимание! Каждый следующий этап выполняется ТОЛЬКО после получения положительной оценки за предыдущий этап!!!

4p3
26.08.2008, 13:33
ну и что ты хочешь, чтобы кто-то помаялся 5 часов ради твоего курсового нашару?

DrugS
26.08.2008, 13:45
я не прошу его делать за меня, на оборот, хочется самому его сделать...только я не пойму что нужно сделать

4p3
26.08.2008, 14:18
Надо накрапать двусвязный список(или односвязный). Который будет хранить две очереди. Первая для текущих элементов. Вторая для удаленных элементов. Все на указателях. то есть
class TQueue // очередь. Нужны указатели на начало и конец.
{
public:
// быдлокод здесь
private:
TQueue *Begin;
TQueue *End;
TQueue *Left;
TQueue *Right;
}

class TList
{
public:
// здесь разместишь какой-то быдлокод (конструкторы, функции)
// двусвязный список
private:
TList *Next;
TList *Prev;
TQueue queue;
}

DrugS
26.08.2008, 14:31
Спасибо!! Пошел работать! =))

4p3
26.08.2008, 14:48
Спасибо!! Пошел работать! =))
Есть листинг с книги давыдова "технологии программирования на С++" могу запостить с него листинг. Там универсальная очередь на указателях. Если знаешь классы и шаблоны, то разобраться понты времени.

DrugS
26.08.2008, 15:38
Будет хорошо! Ссылку в личку кинь тогда

UnPazz
31.08.2008, 07:14
to Drugs :

Держи решение:
Создание очередь (случайными числам).
Вывод очереди на экран.



Описываем очередь
uses crt;
type pLE = ^tLE; { tip = ukazatel }
tLE = record {ukazatel na :}
next: pLE; {sleduushii ukazatel}
data: integer; {tekushii element тип исправь на массив или char - если нужно}
end;

Queue = record{ukazatel na :}
head: pLE; {nachalo ocheredi}
tail: pLE; {konec ocheredi }
end;


Создание очереди
procedure create_list(var s: PLE; n:integer); {inicializaciya i dobavlenie elementov}
var i: integer;
begin
i:=1;
randomize;
s := nil;
while n>0 do {sluchaino ot 0 do n}
begin
new(p); {inicializaciya novogo ukazatelya}
p^.data := random(n); {znachenie elementa ocheredi cherez ukazatel} поставь readln, если нужно).
p^.next := s;
s := p;
dec(n);
end;

Вывод на экран
procedure print_list (s: pLE; n: integer); {vivod na ekran ne bolshe 100 elementov}
var test,i: integer;
begin
while n>0 do
begin
write(s^.data,' ');
s:=s^.next;
dec(n);
end;
writeln; writeln;
end;
end;


begin
clrscr;
write('Opredelite kol-vo elementov v spiske : '); readln(n);

create_list(s,n);
print_list(s,n);

readkey;
end.

p.s: очередь это и есть список.
Виды очередей : очередь, стек ...

Jer1cho
03.09.2008, 13:56
Оффтоп:
Может кто-нибудь написать простенькую программу на любом языке, которая бы без остановки нажимала на пробел (для Cs1.6, чтоб распрыжку делать =))) ).
Если можно чтоб активировалась при нажатии, например, CTRL+кнопка, и чтоб вырубалась также))).

Желательно бинарик. Огромное спасибо.

pixelm
03.09.2008, 17:12
Оффтоп:
Может кто-нибудь написать простенькую программу на любом языке, которая бы без остановки нажимала на пробел (для Cs1.6, чтоб распрыжку делать =))) ).
Если можно чтоб активировалась при нажатии, например, CTRL+кнопка, и чтоб вырубалась также))).

Желательно бинарик. Огромное спасибо.
а не проще кнопку забиндить в кс через кфг или консоль ?

St0nX
08.09.2008, 17:37
INPUT input[1];
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = VK_SPACE;
input[0].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1,input,sizeof(input));


Вот код пробел жмет(С++). писать полностью программу нету времени.

DiMb9IH
11.09.2008, 21:20
Добрые люди помогите создать программку на паскале, пожалуйста помогите бедному студенту ((((
а то завтра мне ######
вот задача:
------------------------------
Даны с и d. Вычислить

A=((sin(abs(c*x1^3+d*x2^2-c*d)))^3)/(sqr((c*x1^3+d*x2^2-x1)^2+3.15))+tg(c*x1^3+x2^2)

где : x1-больший, х2-меньший корень уравнения
x1^2-3*x2-│c*d│=0
------------------------------

Вот то что я нарешал:
program lab2;
const p=3.14;
var c,d:real;
x1,x2,k,result:real;
z1,z2,z3:real;
begin

k:=c*10+d;
d:=9-4*c;
x1:=(-3+sqrt(d))/2;
x2:=(-3-sqrt(d))/2;
if x2>x1 then begin k:=x1; x1:=x2; x2:=k; end;



z1:=(sin(abs(c*(x1*x1*x1)+d*sqr(x2)-c*d )));
z2:=sqrt(sqr(c*sqr(x1*x1)+d*sqr(x2)-x1)+pi);
z3:=tan(c*SQR(x1*x1)+d*sqr(x2));
result:=(Sqr(z1*z1))/(z2)+z3
writeln(result);
readln;
end.

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

AnOcToJI
25.09.2008, 17:41
Нужны исходники простого, можно и сложного телефонного справочника)
желательно на C++ но приветствуется и Delphi
Заранее очень ОГРОМНОЕ спасибо и по возможности +++

UnPazz
25.09.2008, 18:20
Нужны исходники простого, можно и сложного телефонного справочника)
желательно на C++ но приветствуется и Delphi
Заранее очень ОГРОМНОЕ спасибо и по возможности +++Функции:
- добавить запись;
- удалить запись;
- посмотреть;uses crt;
const N = 50; {maksimalnoe kolvo zapisei v baze}

type PData = ^TData; {ukazatel na zapis}
TData = record {zapis}
name : string[20]; {name}
adress: string[30]; {adress}
tel : extended; {telefon}
end;

var base : array [1..N] of PData; {Massiv ukazatelei (indeksov)}
R: integer; {R - tekushee kolvo zapisei}
select: integer;

var f: file of TData; {file}
P,S,Snext : PData; {ukazatel}

procedure add (var base: array of Pdata; var R: integer); {dobavit zapis}
var select: char;
begin
new(p); {inicializaciya novogo ukazatelya}
R:=R+1; {tekushee kolvo ukazatelei}

write('ь ',R,' ”?Ћ [1..20] : '); readln(P^.name);
write('Ђ¤аҐб [1..30] : '); readln(P^.adress);
write('’Ґ«Ґд®* [1..11] : '); readln(P^.tel);
base[R]:=P; {zapisali v massiv ukazatelei}
end;


procedure del (var base: array of Pdata; var R: integer); {udalit zapis}
var select,L: integer;
tmp: Pdata;
begin
write('“Є*¦ЁвҐ *®¬Ґа г¤*«пҐ¬®© §*ЇЁбЁ ®в 1 ¤® ',R); readln(select);
for L:=select to R-1 do base[L]:=base[L+1];
R:=R-1; {udalili odnu zapis}
end;

procedure print (const base: array of Pdata; const R: integer); {vivod po indeksam}
var L: integer;
begin
clrscr;
gotoxy( 5,1); write('”?Ћ'); gotoxy(25,1); write('Ђ„ђ…‘'); gotoxy(55,1); write('’…‹…”ЋЌ');

for L:=1 to R do
begin
gotoxy( 1,L+2); write('#',L);
gotoxy( 5,L+2); write(base[L]^.name,' ');
gotoxy(25,L+2); write(base[L]^.adress);
gotoxy(55,L+2); write(base[L]^.tel:10:0);
end;
writeln; writeln;
end;


begin {telo programmi}
clrscr;

while select <> 7 do
begin {menu na ekran}
writeln('0.Џа®б¬®ва бЇа*ў®з*ЁЄ*');
writeln('1.„®Ў*ўЁвм §*ЇЁбм');
writeln('2.“¤*«Ёвм §*ЇЁбм');
writeln('3.‚л室');
readln(select);
case select of
0: print(base,R); {vivod bazi na ekran}
1: add(base,R); {dobavit zapis}
2: del(base,R); {udalit zapis}
4: select:=7; {vihod}
end;
write('Ќ*¦¬ЁвҐ «оЎго Є«*ўЁиг '); readkey; clrscr;
end;
end. Если с отображением русского шрифта в Паскале проблемы, используй другой компилятор, например, FreePascal 7.0. Аналогично и для Delphi и C/C++.
Суть телефонного справочника в том, что он работает не на массивах элементов, а на массивах указателей на записи, или на списках записей. При работе с записями, сортировка данных производится быстрее.
Нужны дополнительные функции : сортировка данных, открыть/сохранить в файл? пиши.. добавлю =)

lisa99
25.09.2008, 19:01
Добрые люди помогите создать программку на паскале, пожалуйста помогите бедному студенту ((((
а то завтра мне ######
вот задача:
------------------------------
Даны с и d. Вычислить

A=((sin(abs(c*x1^3+d*x2^2-c*d)))^3)/(sqr((c*x1^3+d*x2^2-x1)^2+3.15))+tg(c*x1^3+x2^2)

где : x1-больший, х2-меньший корень уравнения
x1^2-3*x2-│c*d│=0
------------------------------



в описании убери пи, зачем здесь эта константа?

ты уверен в условии? точно там не квадратное уравнение:

x^2-3*x-|c*d|=0

а то, что ты написал?

Где ввод чисел? (параметров)?

Sharingan
05.10.2008, 17:35
Товарищи, нужна помощь, нужен код на С++ переводящий Сиситемы Счисления.
Тоесть как бы из Любой в любую (до 20-ричной) не на прямую, а через десятичную... буду благодарен

bons
05.10.2008, 19:07
Товарищи, нужна помощь, нужен код на С++ переводящий Сиситемы Счисления.
Тоесть как бы из Любой в любую (до 20-ричной) не на прямую, а через десятичную... буду благодарен


ну вобщем так работает хотя для красоты надо было бы не юзать ltoa а написать свою:

#include <stdio.h>
#include <windows.h>

int cc1,cc2;
char buf[256];

int N2CC(char* N, int cc)
{
char x,d;
int len, res = 0;

d = 1;

len = strlen(N) - 1;
while(1)
{
res = res + d * (N[len] - '0');
if(len==0)break;
d*=cc; len--;
}
return res;
}

int main(int argc, char** argv)
{
if(argc<4)
{
printf("Usage: labx N cc1 cc2");
return 0;
}

cc1 = atol(argv[2]);
cc2 = atol(argv[3]);

ltoa(N2CC(argv[1],cc1),buf,cc2);
printf("%s\n",buf);
return 0;
}

Sharingan
05.10.2008, 19:25
еще тут небольшая поправка надо что бы работало как с целыми так и с дробными числами

bons
05.10.2008, 19:47
в инете пример видел правда на делфи, думаю перевести на С труда не составит:
http://www.programmersforum.ru/archive/index.php/t-11035.html

Sharingan
05.10.2008, 23:58
к сожалению Делфи не знаю, вопрос по прежнему актуален

sv32
06.10.2008, 14:13
Помогите в Дельфи реализовать плиз..... :confused:
програмку авторизации (логин, пароль) с ограничением количества попыток ввода, Если авторизация прошла успешно и пользователь является админом то он может добавить или удалить usera в текстовом файле =)) вот такая вот :)

Larionich
06.10.2008, 22:28
Товарищи, нужна помощь, нужен код на С++ переводящий Сиситемы Счисления.
Тоесть как бы из Любой в любую (до 20-ричной) не на прямую, а через десятичную... буду благодарен
Сам бы ты точно не написал... А я осилил ^^
Фича моего кода такая, допустим надо перевести из 2-ной в 16-ную, сначала переводим в из 2-ной в десятичную, потом из десятичной в 16-ную (собственно, как ты и просил). 3 функции, только последняя возвращяет массив символов, первые две возвращают вещественное число. Комментарии я написал, пример использования функций тоже. ^^
/*переводит дробное число из одной СС в другую
(основание которой меньше 36)*/
#include <iostream>
#include <math.h>
char rezA[255];//буффер под вывод шестнадцатеричной СС
/*переводит из любой СС в десятичную (основание СС, указатель на строку,
с начальным числом*/
double perevod10(int num, char* base)
{
int n1=0,n2=0,i=0,rez1=0;
double rez2=0;
while ( base[++n1] != '.') { }
for (i=0; i<=n1-1; ++i)
{
if ((int)base[i] <= (int)'9')
{
rez1+=((int)base[i] - (int)'0') * (int)pow(num,n1-1-i);
}
else
{
rez1+=((int)base[i] - (int)'A' + 10) * (int)pow(num,n1-1-i);
}
}
while ( base[n1+1+(++n2)] != NULL) { }
for (i=n1+1; i<=n1+n2; ++i)
{
if ((int)base[i] <= (int)'9')
{
rez2+=((int)base[i] - (int)'0') * pow(num, -1-(i-n1-1));
}
else
{
rez2+=((int)base[i] - (int)'A' + 10) * pow(num, -1-(i-n1-1));
}
}
return rez1+rez2;
}
/*переводит из десятичной в СС, основание которой мешьше 10*/
double perevod2 (int num, double base)
{
const double e=0.01;
long base_temp1=(long)base,rez1=0,p=1;
double base_temp2=base - (long)base,rez2=0;
while (base_temp1!= 0)
{
rez1=rez1+ (base_temp1%num)*p;
base_temp1=base_temp1/num;
p=p*10;
}
while ((base_temp2) > e)
{
base_temp2*=num;
rez2=(rez2 + (long)base_temp2)*0.1;
base_temp2=base_temp2- (long)base_temp2;
}
return rez1+rez2;
}
/*переводит из десятичной в СС, основание которой больше 10*/
char* perevodA (int num, double base)
{
const double e=0.01;
char temp;
long base_temp1=(long)base,rez1=0,k=0,i=0;
double base_temp2=base - (long)base,rez2=0;
while (base_temp1!= 0)
{
if (base_temp1%num <= 9)
{
rezA[i]=(char)(base_temp1%num + (int)('0'));
}
else
{
rezA[i]=(char)(base_temp1%num + (int)'A' -10);
}

base_temp1=base_temp1/num;
++i;
}
for (k=0; k<i/2; ++k)
{
temp=rezA[k];
rezA[k]=rezA[i-1-k];
rezA[i-1-k]=temp;
}
rezA[i]='.'; ++i;
while ((base_temp2) > e)
{
base_temp2*=num;
if (base_temp2 <= 9)
{
rezA[i]=(char)(base_temp2 + (int)('0'));
}
else
{
rezA[i]=(char)(base_temp2 + (int)'A' -10);
}
base_temp2=base_temp2- (long)base_temp2;
++i;
}
rezA[i]=NULL;
return rezA;
}

int main()
{
std::cout << perevod10(2, "1100.011") << "\n"; //из двоичной в десятичную
std::cout << perevod10(16, "FF.8") << "\n";//из шестнадцатеричной в десятичную
std::cout << perevod2(2, 1.625) << "\n";//из десятичной в двоичную
std::cout << perevodA(16, 255.5) << "\n";//из десятичной в шестнадцатеричную
return 0;
}

UnPazz
06.10.2008, 22:53
Сам бы ты точно не написал... А я осилил ^^ любой осилит если захочет.

AKAdem1c
07.10.2008, 11:40
ребят помогите! в матрицах не силен(
9. Описать тип-объект Matrix (матрица произвольной размерности M*n) и его методы: ввод матрицы; вывод матрицы; дублирование столбцов матрицы, где каждый элемент содержит только неповторяющиеся цифры. Описать тип и методы его потомка Matr (методы: дублирование строк матрицы, где количество нулей среди цифр всех чисел строки равно номеру строки; дублирование столбцов матрицы, где все элементы повторяются одинаковое количество раз (замена метода)).

Vanterlog
24.10.2008, 21:58
Срочно нужна помощь
Нада на Visual C++ Программа перевода заданного числа из десятичной системы в двоичную.
Помоите срочно

jawbreaker
24.10.2008, 22:04
Держи!

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

string get_binary(int a)
{
string res = "";
while(a)
{
res += a%2+'0';
a /= 2;
}
reverse(res.begin(), res.end());
return res;
}
int main()
{
int a;
cin >> a;
cout << get_binary(a) << endl;
return 0;
}

Anutka
28.10.2008, 16:36
Люди.Помогите!Пожалуйста.м е срочно нужно решение двух задач на C++:
1) задан массив целых чисел. определим подвектор, как один или несколько последовательных элементов массива. Каждому подвектору поставить в соответствие сумму его элементов. Требуется написать функцию, вычисляющую максимум из сумм подвекторов в массиве.
2) Предложить алгоритм получения всех перестановок целого числа N.

prox1kk
28.10.2008, 18:52
Basic.
Задача следующая:
В зависимости от выбора пользователя найти сумму четных или кратных трем элементов массива. Массив ввести с клавиатуры.
я насоображал следующее:

print "1. summa chetnix elementov massiva"
print "2. summa kratnix trem elementov massiva"
print "vash vibor"
A$=input$(1)
If (A$="1") then
print "summa chetnix elementov massiva"
do
input "vvedite razmer massiva N"; N
If (N<=0) or (int(N)<>N) then print "net resheniy"
loop while (N<=0) or (int(N)<>N)
Dim (A)
for i=1 to N
print "Vvedite";i;"-i element massiva";
input A(i)
next i
summa=0
for i=1 to N
if A(i) mod 2=0 then
summa=summa+A(i)
end if
next i
for i=1 to N
print A(i);
next i
print "summa chetnix elementov massiva"; summa
Else If (A$="2") then
print "summa kratnix trem elementov massiva"
do
input "vvedite razmer massiva N"; N
If (N<=0) or (int(N)<>N) then print "net resheniy"
loop while (N<=0) or (int(N)<>N)
Dim (A)
for i=1 to N
print "Vvedite";i;"-i element massiva";
input A(i)
next i
summa=0
for i=1 to N
if A(i) mod 3=0 then
summa=summa+A(i)
end if
next i
for i=1 to N
print A(i);
next i
print "summa kratnix trem elementov massiva"; summa
выдает ошибку IF
может кто выручит, а то не пойму что еще не так ...

043nKRuT0y
29.10.2008, 15:33
Кто знает как решить :
Круг радиусом R движется из центра екрана по СПИРАЛИ к границам екрана !
Реализовать нужно на С# с элементами графики !
Кто может - помогите ! С меня + !

groupby
30.10.2008, 20:19
Кто знает как решить :
Круг радиусом R движется из центра екрана по СПИРАЛИ к границам екрана !
Реализовать нужно на С# с элементами графики !
Кто может - помогите ! С меня + !


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace CircleMoving
{
public partial class Form1 : Form
{
const int m_Radius = 100;
const int m_Addition = 4;
const int m_SmallCircleRadius = m_Radius / 2;

int m_StartPositionX;
int m_StartPositionY;
int m_SpiralX;
int m_SpiralY;

bool m_Sign = true;

List<Point> m_LastPoints;

public Form1()
{
InitializeComponent();

m_StartPositionX = this.Width / 2 - m_Radius / 2;
m_StartPositionY = this.Height / 2 - m_Radius / 2;
m_SpiralX = 0;
m_SpiralY = 0;
m_LastPoints = new List<Point>();
}

private void timer1_Tick(object sender, EventArgs e)
{
m_StartPositionX++;
m_StartPositionY++;

if (m_Sign)
m_SpiralX += m_Addition;
else
m_SpiralX -= m_Addition;

m_SpiralY = (int)Math.Sqrt(
Math.Pow(m_SmallCircleRadius, 2) - Math.Pow(m_SpiralX, 2)
);

this.Invalidate();

if (m_SpiralX + m_Addition >= m_SmallCircleRadius)
m_Sign = false;

if (m_SpiralX - m_Addition <= 0)
m_Sign = true;
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Point m_LastPoint = Point.Empty;
foreach (Point m_Point in m_LastPoints)
{
if(m_LastPoint == Point.Empty)
g.DrawEllipse(new Pen(Color.DarkSlateBlue), m_Point.X, m_Point.Y, 1, 1);
else
g.DrawLine(new Pen(Color.DarkSlateBlue), m_LastPoint, m_Point);
m_LastPoint = m_Point;
}
g.DrawEllipse(
new Pen(Color.DarkRed),
new Rectangle(
m_StartPositionX + m_SpiralX - m_SmallCircleRadius,
m_StartPositionY + m_SpiralY - m_SmallCircleRadius,
m_Radius,
m_Radius
)
);
m_LastPoints.Add(new Point(
m_StartPositionX + m_SpiralX - m_SmallCircleRadius + m_Radius / 2,
m_StartPositionY + m_SpiralY - m_SmallCircleRadius + m_Radius / 2
));
if ((m_LastPoints[m_LastPoints.Count - 1].X + m_Radius / 2 == this.Width)
||
(m_LastPoints[m_LastPoints.Count - 1].Y + m_Radius / 2 == this.Height))
{
timer1.Stop();
timer1.Enabled = false;
timer1.Dispose();
MessageBox.Show("Перемещение круга завершено");
}
}
}
}

lisa99
30.10.2008, 20:57
Basic.
Задача следующая:
В зависимости от выбора пользователя найти сумму четных или кратных трем элементов массива. Массив ввести с клавиатуры.
я насоображал следующее:
...

не пойму версию бейсика...
похоже на qbasic, но несоответсвие в командах объявления массива.

Для VB - другие ошибки.

(там лучше использовать ReDim)
Назови версию, я напишу тебе твою прожку

043nKRuT0y
31.10.2008, 20:08
2 groupby :
Слушай чето мне етот синтаксис не знаком ( На С++ можно туже задачу , ато добрую половину кода не пойму !

Да и для справки в чем ето было написано ???

omen-6-6-6
01.11.2008, 16:09
помогите с лабой..


1. Рисование на канве формы с использованием пиксельной графики и графических примитивов

1. Создать фон формы с плавным переходом от одного цвета к другому.
2. Используя пиксельную графику и графические примитивы, вывести на форму произвольный рисунок.
3. Выполнить простую анимацию следующими методами:
a) С использованием randomize, random ( ) и компонента TTimer (стр. VCL System);
Пример 1

procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer;
begin
randomize;
x:=Form1.ClientWidth div 2;
y:=Form1.ClientHeight div 2;
Canvas.MoveTo(x,y);
Canvas.Pen.Color:=RGB(random(255),random(255),rand om(255));
Canvas.LineTo(random(ClientWidth),random(ClientHei ght));
end;

procedure TForm1.FormMouseMove(……);
begin
Application.Terminate;
end;

Пример 2 (анимация объекта TShape)

Такая анимация достаточно проста, так как весь код рисования и перерисования скрыт в объекте. Например, чтобы заставить объект TShape перемещаться по горизонтали, нужно просто изменять свойство Shape1.Left.

b) Используя свойство пера Pen.Mode.
Режим Pen.Mode=pmNotXor или Pen.Mode=pmXor предназначен для рисования движущихся фигур. Если два раза нарисовать одну и ту же фигуру таким пером, то после первого раза она появится, после второго – сотрется.

Пример

Rectangle(x0,y0,x,y);
pause:=time;
while (time-pause)<1E-12 do;
Rectangle(x0,y0,x,y);

c) Анимацию можно организовать, если “стереть” фигуру прямоугольником с цветом фона:

procedure TForm2.Button1Click(Sender: TObject);
var rr:real;
angle,i,j,x,y:integer;
begin
for i:=1 to 5 do begin
angle:=random(368);
rr:=Angle*Рi/180;
for j:=1 to 100 do begin
x:=trunc(j*sin(rr))+100;
y:=trunc(j*cos(rr))+100;
with Form2.Canvas do begin
Вrush.Color:=clВlue;
Еllipse(x-16,y-16,x+16,y+16);
Вrush.Color:= clBtnFace;
Rectangle(0,0,Form2.ClientWidth,Form2.ClientHeight );end;
end; end; end;

К сожалению, такой метод дает сильное мерцание на экране.

d) Использование двойной буферизации для анимации.
Двойной буфер – это набор плоскостей, одна из которых используется для отображения на экране (это может быть канва формы или компонента TPaintBox), а другая – для рисования (это может быть компонент TBitMap или другой компонент TPaintBox). Использование двойного буфера позволяет получить плавное движениепри анимации и отсутствие мерцания, но уменьшает скорость движения фигуры.

Пример
procedure TForm3.Button1Click(Sender: TObject);
var rr:real;
angle,i,j,x,y:integer;
TheBitmap:TBitmap;
begin
TheBitmap:=TBitmap.Create;
TheBitmap.Height:=Form3.ClientHeight;
TheBitmap.Width:=Form3.ClientWidth;
for i:=1 to 10 do begin
angle:=random(368);
rr:=Angle*pi/180;
for j:=1 to 100 do begin
x:=trunc(j*sin(rr))+100;
y:=trunc(j*cos(rr))+100;
with TheBitmap.Canvas do begin
Brush.Color:= clBtnFace;
Rectangle(0,0,Width,Height);
Brush.Color:=clblue;
Ellipse(x-16,y-16,x+16,y+16);
Form1.Canvas.CopyRect(Rect(0,0,Width,Height),
TheBitmap.Canvas,
Rect(0,0,Width,Height));
end; end; end; end;

Выполните данную процедуру, а затем на ее основе напишите свой код анимации с двойным буфером.

4. Выведите в качестве фона формы какую-либо битовую матрицу так, чтобы она занимала всю площадь формы.

поставлю плюсы++

lisa99
02.11.2008, 02:34
помогите с лабой..

поставлю плюсы++
1. помогите? или "сделайте за меня"?
2. и много ты их поставишь с такой репой?

сделай сам хоть что-нибудь, тогда будет смысл "помогать"

groupby
04.11.2008, 21:46
2 groupby :
Слушай чето мне етот синтаксис не знаком ( На С++ можно туже задачу , ато добрую половину кода не пойму !

Да и для справки в чем ето было написано ???

Ты че бля, дебил? :confused: :mad:

Твои слова? :

Реализовать нужно на С# с элементами графики!

ToniKapuchon
06.11.2008, 00:03
Кароч, есть ли какая нить winapi функция, возвращающая значение хранящаяся по определённому адресу?
Нужно вобщем изучить файловую систему FAT
Задание:
Написать программу, которая показывает дампы.
Исследовать изменение элементов BOOT, FAT, ROOT и DIR при работе с файлами(команд: COPY, MOVE, DEL, RENAME).
Изучить алгоритм расположения файлов на диске и провести расчет цепочки кластеров для файла длиной не менее1кб.

Кароч подобие WinHex!!)) Подскажите алгоритм... а то я не могу въехать с чего начать!!
С++

bons
06.11.2008, 02:22
Написать программу, которая показывает дампы.

это наверно очень жестокая программа...

узнать содержимое ячейки памяти по ее адресу можно разыменовав указатель, содержащий этот адрес...

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

http://slil.ru/26306307

SI17
06.11.2008, 20:32
Народ... помогите плз нуно составить другу прогу на ассемблере.....собсно вот задание:

(24)+(1d)v8->(1f).(24)=15,(1D)=54

и плюсег еще в круглешочке... сам я на ВБА и дельфи пишу... ничего тут непонимаю... разбираться долго.... а сдавать завтра....=(
если поможите репы на кидаю и чем смогу помогу=) может пиго поставлю если близко живети ;-)

slesh
07.11.2008, 10:17
mov eax,24
add eax,1dh
and eax,8
это типа (24)+(1d)v8 если v - это and

vikseriq
07.11.2008, 13:46
Оо, кто сдает 7 ноября-то ?
Что за -> и . ?

F&D
08.11.2008, 12:55
Доброго времени суток друзья. У меня вот такая проблемка с задачей. Необходимо реализовать алгоритм шифрования RSA, т.е. шифрование и расшифровывание.

var
Form1: TForm1;
Fn,n,e,p,q,d:integer;
implementation

{$R *.dfm}
//наибольший общим делитель
function nod(a,b:integer):integer;
var i:integer;
begin
while a<>b do if a>b then a:=a-b else b:=b-a;
result:=a;
end;
//генерация ключей
procedure TForm1.Button1Click(Sender: TObject);
var i,k:integer;
begin
p:=strtoint(edit1.Text);
q:=strtoint(edit2.Text);
n:=p*q;
Fn:=(p-1)*(q-1);
for i:=2 to Fn do
if nod(i,Fn)=1 then
begin
e:=i;
break;
end;
k:=1;
while (k*Fn+1)mod e<>0 do
inc(k);
d:=(k*Fn+1)div e;

edit4.Text:='= '+inttostr(d);
edit3.Text:='= '+inttostr(e);
end;
//шифрование
procedure TForm1.Button2Click(Sender: TObject);
var s1,s:string;
k,c,m,nn,i,j:integer;
begin
memo1.Clear;
s:=Edit5.Text;
c:=1 ;
s1:='';
nn:=length(s);
for i:=1 to nn do
begin
m:=(ord(s[i])-ord('A')) mod 26;
c:=1 ;
for j:=1 to e do
c:=(c*m) mod n ;
memo1.lines.add(inttostr(c)) ;
c:=c mod 26;
s1:=s1 + chr(c+ord('A')) ;
end;
Edit6.Text:=s1;
end;
//дешифровка
procedure TForm1.Button3Click(Sender: TObject);
var s1,s:string;
k,c,m,nn,i,j:integer;
begin
s:= Edit6.Text;
//c:=1 ;
s1:='';
nn:=length(s);
for i:=1 to nn do
begin
m:=(ord(s[i])-ord('A')) mod 26;
c:=1 ;
for j:=1 to d do
c:=(c*m) mod n ;
memo1.lines.add(inttostr(c)) ;
c:=c mod 26;
s1:=s1 + chr(c+ord('A')) ;
end;
Edit7.Text:=s1;
end;
end.

вот шифрование написано вроде правильно, но не работает ,и дешифровка - тоже. И в мемо выводит не правильно. Можете подсказать, где что изменить, в чем я ошибся?!

kholann
08.11.2008, 17:04
Пожалуйста, подскажите, как можно отобразить пересечение сферы с кубом в OpenGL с помощью буфера трафарета?

krypt3r
10.11.2008, 08:00
вот шифрование написано вроде правильно, но не работает ,и дешифровка - тоже. И в мемо выводит не правильно. Можете подсказать, где что изменить, в чем я ошибся?!
Заюзать Crypto API

Namelles One
10.11.2008, 10:47
в чем я ошибся?!
Может в выборе деятельности? Перепиши хотя бы с комментариями - функция зашифрования, функция расшифрования.

Где ты ключевую пару генерируешь?

/me кажется - это вааще не RSA =\

F&D
10.11.2008, 13:24
Заюзать Crypto API

Благодарю за совет, обязательно попробую.

Может в выборе деятельности? Перепиши хотя бы с комментариями - функция зашифрования, функция расшифрования.
Где ты ключевую пару генерируешь?
/me кажется - это вааще не RSA =\

Вы вместо того чтобы критиковать, помогли бы. Комменты отредактировал.
Когда кажется креститься надо. Извените конечно за грубость.
Это RSA, можно хотя по генерации ключей это понять.

velvetdust
10.11.2008, 20:07
Надо перевести кусок кода из C++ в C! спс заранее!

long step(int i)
{
int g = 1;
for(int j = 1; j<i; j++)g*=10;
return g;
}

int main(int argc, char* argv[])
{
int k;
cin >> k;

int l = k, g=1;

while(l / 10 > 0)
{
l/=10;
++g;
}

int s1, s2;

s1 = k/step(g) + (k/step(g-1) % 10);
s2 = k %10 + (k/step(2))%10;

krypt3r
11.11.2008, 10:27
#include <stdio.h>

long step (int i) {
int g = 1, j;
for (j = 1; j < i; g *= 10, j++);
return g;
}

int main (int argc, char* argv[]) {
int k;
printf ("Enter your number: ");
scanf ("%d", &k);

int l = k, g = 1;

while (l / 10 > 0) {
l /= 10;
++g;
}

int s1, s2;

s1 = k / step (g) + (k / step (g - 1) % 10);
s2 = k % 10 + (k / step (2)) % 10;
return 0;
}

:)

Namelles One
11.11.2008, 10:43
Может я, конечно, жестоко ошибаюсь, но мне кажется, что по стандарту С - все переменные должны быть обьявлены в самом начале функции - до любого прочего кода.

criz
11.11.2008, 12:35
все переменные должны быть обьявлены в самом начале функции
можно еще в циклах обяъвлять :)

groupby
11.11.2008, 12:53
можно еще в циклах обяъвлять :)

Borland C это далеко не стандарт Си.. ИМХО

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

Ещё кстати на Си в старых компилерах типы параметров, передаваемых в функцию указываются после названия функции, но перед началом блока функции:


void some_func(a, b)
int a,
int b
{ //кодт
}


http://en.wikipedia.org/wiki/C_syntax

criz
11.11.2008, 13:19
Borland C это далеко не стандарт Си.. ИМХО
согласен, что не стандарт. Сам не люблю когда встречаю объявление в середине кода =\
не удобно блин))

velvetdust
11.11.2008, 16:00
ага, спасибо, ребят!)

advokat.holy
12.11.2008, 13:11
Люди помогите плиз!
Я хочу стать веб программистом, а мне тут в универе дают лабы на асме =((( я в нем ваще ОЛЕНЬ

вот надо посчитать такой вот пример: (8-10)*(5/2+4)/(9-3*2)
я вот тут чето пытался но не получается =(

;(8-10)*(5/2+4)/(9-3*2)
.8086
.model small
.stack 200h
.data
a db 8
b db 10
c db 5
d db 2
e db 4
f db 9
g db 3
result dw ?
zal dw ?
.code
.startup
mov al,a ;al=8
sub al,b ;ax=8-10
mov bx,ax ;bx=ax
mov ax,0 ;ax=0
mov al,c ;al=5
div d ;ax=5/2
mov cx,ax ;cx=ax
mov ax,0
mov al,e
add cx,ax ;cx=cx+ax=5/2+4
mov ax,0
mov ax,bx
div cx
.exit 0
end @startup

F&D
12.11.2008, 13:30
Я конечно не гений в ассемблере, но сразу на глаз вижу вроде не правильно. У нас в универе подобные задания есть, вечером постараюсь отписаться(если раньше никто не поможет), или если что пиши в личку - помогу.

groupby
12.11.2008, 13:37
!

Нет возможности проверить, но думаю должно работать (все деление целочисленное):


; 8 - 10
mov al, 8
sub al, 10
push al

; 5/2 + 4
mov ax, word ptr 5
mov bl, 2
div bl
add al, 4
xor ah, ah ; деление без остатка

; умножение скобок
mov bl, al
pop al
mul bl ; нам достаточно байта, чтобы не лезло в ax:dx
push ax

mov al, 3
mov bl, 2
mul bl

mov bx, word ptr 9
sub bx, ax

pop ax

div bx

; результат в al, остаток в ah
xor ah, ah ; договорились, что остаток не нужен

groupby
12.11.2008, 13:41
Да.. блин.. есть пара недочетов у меня.
Там 8-10 - это отрицательное число, поэтому нужно это учитывать
Соответственно использовать imul и idiv, и знаковый разряд расширить надо будет.
Думаю все понятно теперь )

Dr.zomber
12.11.2008, 20:03
Помогите плиз. c++
http://s47.radikal.ru/i118/0811/f0/d18ab3f77907.jpg

#include <stdio.h>
#include <math.h>
void main()
{double a=2, S, f1, x=1;
while (x<=3)
{f1=0;
if (x>=a)
{for (int n=0;n<=10;++n)
f1+=pow(x-1,2*n-1)/(2*n+1)/pow(x+1,2*n+1);
f1=2*f1;
S=a*f1; printf("\nz=%f\t",a*log(x));}
else
{for(int n=0;n<=10;++n)
f1+=pow(a-1,2*n-1)/(2*n+1)/pow(a+1,2*n+1);
f1=2*f1;
S=x*f1; printf("\nz=%f\t",x*log(a));}
printf("\nS=%f\n",S);
x+=0.5}
}

Чето вот после else все норм пашет, а до else криво, там по идее z=S быть равно. первые 3 варианта верно, а дальше мишура. Вобщем помогите плиз.

Maldini89
12.11.2008, 20:46
Подсобите с лабами на Си и Асемблере :confused:
---------------
1. [язык Си] Забить массив символами: латинскими большими и маленькими. Отсортировать: Большиме (заглавные) по алфавиту; Мелкие (прописные) - наоборот.

2. [Assembler] Ввести с клавиатуры строку символов длинной не менее 20 штук. Среди символов должно быть разнообразие: кирилица (Аа, Бб), латиница (Ss, Rr).
Сделать листниг (LIST)
---------------
Был бы очень благодарен, если были б комменты :rolleyes:
тут немного над началом 1й лабы сидел думал
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;
int const n=20;
int data[n]={a,b,C,D,E,f,g,h,E,q,q,A,Y,u,T,t,R,I,o,P,};
//Выводим исходный массив
printf("Initial array: \n");
for (i=0; i<n; i++)
{
printf("%d ", data[i]);
}
printf("\n");

spy-profi
12.11.2008, 21:15
ВОт есть лаба - не могу разобраться нубок я кароч в С++...

http://s49.radikal.ru/i123/0811/61/690b7f92a659.jpg

Напишите плиз для Microsoft Visual C++ 2008 Express Edition.


+++ НАСТАВЛЮ =) Плиз

Sinay
12.11.2008, 21:52
ты бы хоть задание сюда написал,лично мне влом еще ссылку вбивать
да и всю лабу бесплатно никто не решит,так: моментами помочь

Dr.zomber
12.11.2008, 21:59
проверь, я не уверен

#include <stdio.h>
#include <math.h>
void main()
{double b, a, n, i;
double S=0;
printf("\n VVedite a, b, n");
scanf_s("%lf%lf%lf",&a,&b,&n);
if (b>5)
b=4;
if (a<2)
a=2;
{for(i=1;i<=n;++i)
S+=pow(a*b,i-1)/i*(b-i);}
printf("\nS=%f\t",S);}

spy-profi
12.11.2008, 22:48
чтото не то + там факториал i!

Dr.zomber
12.11.2008, 23:18
хз, по тому че я написал можно легко сделать то че у тя, я ток хз как :) Большую часть я сделал.

spy-profi
12.11.2008, 23:30
Я б ето сделал сам. у меня трудности с факториалом

criz
12.11.2008, 23:31
пример как у Dr.zomber'a, тока с использованием факториала:

#include <stdio.h>
#include <math.h>

int fact(int fct);

int main(int argc, char* argv[])
{
int n, i;
double x;
double a = 0.0, b = 0.0;

scanf("%lf", &a);
scanf("%lf", &b);
scanf("%d", &n);

if(b>5.0) b = 4.0;
if(a<2.0) a =2.0;

for(i=1; i < n; i++)
{
x = x + pow(a*b, i-1) / (fact(i) * (b-i));
}

printf("%lf\n", x);

return 0;
}

int fact(int fct)
{
return (fct == 1)? 1 : fct * fact(fct-1);
}


З.Ы. интересная весчь: если n = 7, то выводится
1.#INF00
:)

groupby
12.11.2008, 23:47
Помогите плиз. c++
http://s47.radikal.ru/i118/0811/f0/d18ab3f77907.jpg

#include <stdio.h>
#include <math.h>
void main()
{double a=2, S, f1, x=1;
while (x<=3)
{f1=0;
if (x>=a)
{for (int n=0;n<=10;++n)
f1+=pow(x-1,2*n-1)/(2*n+1)/pow(x+1,2*n+1);
f1=2*f1;
S=a*f1; printf("\nz=%f\t",a*log(x));}
else
{for(int n=0;n<=10;++n)
f1+=pow(a-1,2*n-1)/(2*n+1)/pow(a+1,2*n+1);
f1=2*f1;
S=x*f1; printf("\nz=%f\t",x*log(a));}
printf("\nS=%f\n",S);
x+=0.5}
}

Чето вот после else все норм пашет, а до else криво, там по идее z=S быть равно. первые 3 варианта верно, а дальше мишура. Вобщем помогите плиз.

У тебя неверная формула на картинке)

там верхняя скобка должна быть в степени не 2*n-1, а 2*n+1

Тогда все сходится

spy-profi
12.11.2008, 23:58
хм...

у меня так норм выходит:
// lab4.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "math.h"
#include "stdio.h"



int _tmain(int argc, _TCHAR* argv[])
{
double b, a, n, i,i1;
double S=0;
i1=1;
printf("\n Vvedit a, b, n");
scanf_s("%lf%lf%lf",&a,&b,&n);
if (b>5)
b=4;
if (a<2)
a=2;
for(i=1;i<=n;i++)
S=pow(a*b,i-1)/i1*(b-i);
i1=i1*i;
printf("\n=%f\t",S);
return 0;
}


Не ну нормально ?? Начало 1го курса :( ппц

scrat
13.11.2008, 00:01
// lab1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <cstdlib>

using namespace std;

int fact(int); //факториал
int _tmain(int argc, _TCHAR* argv[])
{
int a,b,n;

//Ввод
cout<<"Enter a:";
cin>>a;
cout<<"Enter b:";
cin>>b;
cout<<"Enter n:";
cin>>n;

//Условия
if(b>5) b=4;
if(a<2) a=2;

int s = 0; //сумма
//Суммируем
for(int i=0;i<n;i++)
{

s += (pow((double)(a*b),(double)i-1))/(fact(i)*(b-i));
}
cout<<"Answer:"<<s;
return 0;
}

int fact(int a)
{
if(a==0) return 1;
else return a*fact(a-1);
}

uzer2008
13.11.2008, 12:53
Здравствуйте!
Помогите написать прогу или подскажите где можна найти инфу по етой теме.
Перевод однозначново восьмеричнова числа в символьное представления.
в инети находил как переводить с одной системы счисления в другую, а вот как символьное представления немогу чото найти. Благодарен за любую помощь.

groupby
13.11.2008, 13:24
Здравствуйте!
Перевод однозначново восьмеричнова числа в символьное представления.


#include <stdio.h>
void main()
{
//Твое однозначное 8-ное число (0-7)
int chislo = 6;
char a[3] = {'0', 0, 0};
//строка с числом
a[1] = chislo + '0';
printf("%s\n", a);
}

Red_Red1
13.11.2008, 13:25
Хм, может я чего то не знаю, но
Восьмеричная система счисления построена на цифрах от 0 до 7. Однозначное число в восьмеричной системе это числа от 0 до 7.
Дальше, что значит символьное представление? Эти цифры и есть символы которые обозначают число! В языках программирования обычно принято так. Если записано "просто число" то это десятичное, если впереди стоит 0 то это восмеричное, если 0x - шестнадцатиричное. Значит, если я правильно понял насчет символьного представления, то тебе нужно просто приписать впереди 0 (ноль).
Т.е.
Восьмеричное число 6 будет записано как 06.

uzer2008
13.11.2008, 14:26
я вот токо начал изучать ассемблер,вот и нада на ассемблере. вот паскаль и с++ чото ищо рублю а в ассемблере ноль.помогите.извините что ненаписал сразу

groupby
13.11.2008, 18:04
я вот токо начал изучать ассемблер,вот и нада на ассемблере. вот паскаль и с++ чото ищо рублю а в ассемблере ноль.помогите.извините что ненаписал сразу

А в русском языке ты рубишь?

в чем сложность переписать написанный мною выше код на ассемблер? В каком месте загвоздка?

MCSnake
14.11.2008, 08:39
народ помогите лабу доделать, сделал почти все но не могу вывести печать на принтере(пункт 4) 1. Разместите на форме следующие компоненты:
 TToolBar (компонент VCL с закладки Win32. Он объединяет расположенные на нем кнопки и другие элементы управления и централизованно управляет ими);
 на TToolBar выведите 4 кнопки TSpeedButton для диалогов открытия файла, выбора шрифтов, печати и выхода из приложения;
 компоненты диалогов открытия файла, выбора шрифтов и печати;
 два компонента TMemo;
2. Напишите код для кнопки TSpeedButton1:
 свяжите файловую переменную с выбранным файлом;
 откройте файл для чтения с установкой размера считываемого блока в 1 байт;
 в цикле While, который выполняется, пока не будет достигнут конец файла
a) получите положение файлового указателя:
Pointer:=FilePos(F); // var Pointer: Longint;
b) считайте из файла блок размером 1К в буфер:
BlockRead (F, Buf, SizeOf(Buf), BytesRead); // Byf – массив типа Byte р-ром 1К
Здесь используется расширенный синтаксис процедуры BlockRead, при котором в программу возвращается количество реально считанных блоков (переменная BytesRead). Вместо SizeOf(Buf) можно указать 1024 (т.е. 1К).
c) используя дополнительную переменную типа String, выведите в TMemo1 считанный блок;
d) выполните редактирование считанного блока, например, замените символ пробела на запятую:
for i:=1 to BytesRead do if Buf[i]=32 then Buf[i]:=44;
e) выведите отредактированный текст в TMemo2;
f) передвиньте указатель в файле на начало обрабатываемого блока, так как при выполнении процедуры BlockRead он переместился на конец блока;
g) запишите отредактированный блок из буфера на диск:
BlockWrite (F, Buf, BytesRead);
Указатель при этом передвинется на конец блока.
3. Напишите код для диалога выбора шрифтов, позволяющий устанавливать шрифты в обоих TMemo.
4. Организуйте печать текста из окна TMemo2 (не более двух страниц !), предусмотрите возможность печати нескольких копий.

+++++ обещаю, хз правда с этой репой мона нет, если че друга попрошу))

krypt3r
14.11.2008, 12:25
http://sources.ru/delphi/system/print_without_tprinter.shtml