Просмотр полной версии : Студентам с лабораторными сюда
Страницы :
1
[
2]
3
4
5
6
7
8
9
10
11
12
Delimiter
29.02.2008, 12:27
прикольно я первый раз пробую на паскале
max:=0;
for i := 1 to n do begin
cnt:=0;
for j := i+1 to n do begin
if A[i]=A[j] then
cnt:=cnt+1;
end;
if max<cnt then begin
max:=cnt;
el:=A[i];
end;
end;
.... и тут вывести результат el
не бейте мну :D
прикольно я первый раз пробую на паскале
max:=0;
for i := 1 to n do begin
cnt:=0;
for j := i+1 to n do begin
if A[i]=A[j] then
cnt:=cnt+1;
end;
if max<cnt then begin
max:=cnt;
el:=A[i];
end;
end;
.... и тут вывести результат el
не бейте мну :D
Вначале надо n объявить а то компилятор матюгаться будет!;)
Товарищи, помогите пожалуйста с лабой:
Выполнить слияние двух упорядоченных по убыванию массивов в один массив, упорядоченный по убыванию
Методом слияния
Массивы из n и m элементов
a: 20 19 16 12 // резмер n
b: 13 5 4 // резмер m
c: 20 19 16 13 12 5 4 // резмер n+m
ну я примерно написал неполностью, но не уверен:
void sort (int a[],int b[], int c[],int m,int n)
{
int i=0
int j=0
for (int z=0;z<m+n;z++)
if (a[i]>b[j])
{
c[z]=a[i]; i++}
else {c[z]=a[j]; j++}
вот а как дальше сделать так чтобы если один массив исчерпали другой чтобы не проверялся а сразу копировался ????
a - 18 17 16 10
b - 11 9 8 7 6 5 4 3 2 1
так вот итог :
c - 18 17 16 11 10 сравниваем..... а вот начиная от 9 просто копируем и все
nc.STRIEM
29.02.2008, 15:37
не проверял
void sort (int a[],int b[], int c[],int m,int n)
{
int i=0
int j=0
for (int z=0; z<m && z<n; z++)
if (a[i] > b[j])
{
c[z]=a[i];
i++;
}
else
{
c[z]=b[j];
j++;
}
while(i<m)
{
c[z]=a[i];
i++;
z++;
}
while(j<n)
{
c[z]=b[i];
j++;
z++;
}
}
не .....билиберду выдает.....
void sort(int* a, int* b, int* c, int size_a, int size_b)
{
for(int i=0, j=0, k=0; k < size_a + size_b;) {
if( a[i] > b[j] )
c[k] = a[i++];
else if ( a[i] < b[j] )
c[k] = b[j++];
else
c[k] = a[i++], ++j;
++k;
}
}
Во спс....
работает только при size_a = size_b
если же
size_a=4
size_b=4
снова билиберда.....
кароче, вот код
#include <iostream.h>
#include <conio.h>
void input (int a[],int n);
void output (int a[],int n);
void sort (int a[],int b[],int c[],int n, int m);
void main ()
{
int n,m;
int a[100],b[100],c[200];
cout<<"n?" ; cin>> n;
cout<<"m?" ; cin>> m;
input (a,n);
input (b,m);
sort (a,b,c,n,m);
output (c,n+m);
getch();
}
void input(int a[], int n)
{
cout<< "vvedite "<<n<<" 4isel: "<<endl ;
for(int i=0;i<n;i++)
cin>>a[i];
}
void output(int a[], int n)
{
for(int i=0;i<n;i++)
cout<<a[i]<<endl;
}
void sort ()
#include <iostream>
using namespace std;
void sort(int*,int*, int*, int, int);
void print(const int*, int);
void input(int*, int);
int main()
{
int sizeN;
int sizeM;
cout << "Input sizeN and sizeM" << endl;
cin >> sizeN >> sizeM;
int* a = new int[sizeN];
int* b = new int[sizeM];
int* c = new int[sizeN+sizeM];
if( ( a && b && c ) == 0 ) {
cerr << "Not enought memory" << endl;
return 1;
}
cout << "1st array : " << endl;
input(a, sizeN);
cout << "2d array : " << endl;
input(b, sizeM);
sort(a, b, c, sizeN, sizeM);
cout << "New array : " << endl;
print(c, sizeN + sizeM);
delete [] a;
delete [] b;
delete [] c;
return 0;
}
void print(const int *iptr, int size)
{
for(int i=0; i < size; ++i)
cout << iptr[i] << '\t';
cout << endl;
}
void input(int *iptr, int size)
{
cout << "Input " << size << " elements : " << endl;
for(int i=0; i < size; ++i)
cin >> iptr[i];
}
void sort( int* a, int* b, int* c, int size_a, int size_b)
{
int i=0, j=0, k=0;
for( ; i < size_a; ++i, ++k ) {
for(; j < size_b && b[j] > a[i]; ++j,++k )
c[k] = b[j];
c[k] = a[i];
}
for( ; j < size_b; ++j, ++k )
c[k] = b[j];
}
Delimiter
29.02.2008, 16:41
a[0]=20;
a[1]=19;
a[2]=16;
a[3]=12;
b[0]=13;
b[1]=5;
b[2]=4;
int i,j,l;
int m=4;
int n=3;
for(i=0,j=0,l=0;i<n;i++,l++)
{
for(;j<m && a[i]<b[j];j++,l++)
c[l]=b[j];
c[l]=a[i];
}
for(;j<m;j++,l++)
c[l]=b[j];
ну это на пятерку :D
мой вариант посмотри на предыдущей странице. там полностью прога написана. всё работает.
Delimiter
29.02.2008, 17:04
2 Forcer подебагь с разными рядами и сам поймешь!
Извиняюсь. Первоначальный вариант компилировал в студии 2005 - в ней всё нормально было. MinGW "указал" на явную ошибку. Изменил код. Надеюсь, я буду прощён! ))
}I{ek
Я на предыдущей странице заменил код.
Delimiter
29.02.2008, 19:54
2 Forcer еще улучшай....
запас есть!
Программа аппроксимации методом наименьших квадратов на основе степенного полинома с визуализацией графиков функций (Windows API)
мб есть у кого?
дам шоху если сможете помочь
Delimiter
04.03.2008, 21:02
к какому сроку?
шоха не нужна :p
Народ очень прошу!! Выложите если у кого то есть исходник от кокойнибудь оригинальной игры написаной на Delphi
Заранее всем огромное спасибо!
Guns, вот (http://ishodniki.ru/list/?cat=7&show=delphi_games) ... ;)
ToniKapuchon
08.03.2008, 17:08
Задач в следующем пользователь в отдельной форме вводит некое число от 2 до 25 .
В следующей форме отрисовывается введённое кол-во шариков с цифрами внутри шарика, цифра в шарике задаётся random().... Скажите плз, как себе кто представляет данный алгоритм?
25!!
факториал от факториала? о_О
Delimiter
08.03.2008, 17:15
1.две формы.... обе дочерние от главной
Глобальные HWND для каждого окна
соответственно посылка через PostMessage информации
получаещее окно получая сообщение отрисовывает.
2.Можно независимые процессы....
а)тогда поиск окна
получение HWND отсылка сообщения
б)отсылка глобального сообщения
ToniKapuchon
08.03.2008, 17:17
меня больш интересут алгоритм отрисовки, т.е. как нарисовать 5 или 10....
на форме нарисовать 25 кружков, и задавать их видимость?
Delimiter
08.03.2008, 17:24
CDC* dc1;
dc1=GetDC(); получаешь графический контекст
CPen pen(PS_SOLID,3,RGB(20,255,140)); определяй кисть
CPen* oldpen=dc1->SelectObject(&pen);
и рисуй
dc1->Ellipse(........);
ForNeVeR
08.03.2008, 17:26
ToniKapuchon, на каком языке пишем-то?
А то может ему и не на C надо вовсе...
ToniKapuchon
08.03.2008, 17:36
нужн, на делфе.... но си я тож трохи знаю....
ForNeVeR
08.03.2008, 19:07
ToniKapuchon, в общем, если я правильно понял, то получилось следущее: (создаём проект в Delphi, в нём две формы: Form1 с Edit1 (для ввода кол-ва шаров) и Button1 и Form2 для прорисовки шаров. Затем в Form1.Button1Click вводим следующее:
procedure TForm1.Button1Click(Sender: TObject);
const diameter = 40; // диаметр шаров
var i,n, // кол-во шаров
b:integer; // переменная для лучшего центрования надписи
a:string[2];
begin
n := StrToInt(Edit1.Text);
// настраиваем brush и pen
form2.Canvas.Brush.Color:=clWhite;
form2.Canvas.Pen.Color := clBlack;
randomize;
form2.Show;
for i := 1 to n do
begin
form2.Canvas.Ellipse((i-1)*(diameter+5),0,(i-1)*(diameter+5)+diameter,diameter); // рисуем круги на расстоянии 5 пикселов друг от друга; в одну строку
a:=inttostr(random(25));
if length(a) = 2 then b:=12
else b:=5;
form2.Canvas.TextOut(diameter div 2 + (i-1)*(diameter+5) - b div 2, diameter div 2 - 4, a); // пишем на шаре надпись
end;
end;
(Конечно, вероятно, всё это можно делать, обходясь и меньшим количеством действий и более технично, но этот код работает.)
Если собираешься рисовать не в своё окно, а в чужое, тут сложнее, однако сам алгоритм прорисовки (то, что тебя, как я понял, интересует) останется тем же.
Lancellot
10.03.2008, 01:42
задача вот в чем:
(delphi)
На форме разместить два компонента для ввода многострочного текста!
Тоесть один компонент для ввода второй для вывода текста после некого переобразования которое происходит после нажатия кнопки !
Переобразавание стоит в следующем нужно после каждой буквы/символа поставить пробел!
вроди и просто но не пойму что к чему=\
заранее спс
ForNeVeR
10.03.2008, 15:27
Lancellot, используй Memo с вкладки Standard как для ввода, так и для вывода. Для получения строки текста пиши Memo1.Lines.Strings[i] (TMemo.Lines.Strings - массив строк); для получения количества строк - Memo1.Lines.Count; Для добавления новой строки в конец поля Memo1.Lines.Add('Наш_текст'); если нужно изменить строку уже существующую (хотя из твоего поста следует, что это навряд ли придётся делать) - Memo1.Lines.Strings[i]:='Наш_текст'. Для очистки поля - Memo1.Lines.Clear; для удаления некоторой строки - Memo1.Lines.Delete(i). Для твоей задачи надо прогнать цикл наподобие:
Memo2.Lines.Clear; // Это чтобы не оставался предыдущий текст
for i:=1 to Memo1.Lines.Count do
for j:=1 to length(Memo1.Lines[i]) do
begin
Memo2.Lines.Add("");
Memo2.Lines[i]:=Memo2.Lines[i] + Memo1.Lines[i][j] + " ";
end;
Сразу говорю, код не проверял, но должен работать ;)
Все шаги от создания формы и добавления 2-х Memo и кнопки, назначения процедуры на кнопку и т.д. не расписываю, если нужно - обращайся в ICQ.
Народ помогите плиз ...
С++
1)Написать программу установки и вывода даты используя понятия класса.По введенной дате определите время года и номер декады месяца.
Предусмотреть:
Возможность ввода даты числами при помощи конструктора;
Определение времени года и декады месяца осуществить в виде функции членов.
2)Написать программу , определяющую максимальное,минимальное и среднее значение в одновременом массиве целого типа.Используя понятия класса,создать новый тип данных "вектор".
Предусмотреть:
Динамическое выделение памяти под вектор (конструктор);
Освобождение памяти после испальзования обьекта (деструктор).
что здес сложного создай класс и методы для вода и вывода
и конструктор и патом функция для определите время года
тебе что конкретно ножен?
Мне нужно чтобы прога работала =) ... у меня с С++ вообще плохо(
дату в каком формате будеш водить
ты лучше прочитай книгу С++ за 21дней Джесс Либерти
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
class date
{
private:
char* ndate;
public:
date(char* date){
ndate=(char*)malloc(11);
ndate=date;
}
~date()
{
}
char* syear(char* month)
{
int j=0;
int k=0;
for(int i=0;i<11;i++)
{
if (ndate[i]=='.')
{
if(j==0)
j=i;
else
{
j=0;break;
}
i++;
if(j!=0)
{
k=k*10+atoi(&ndate[i]);
}
}
}
switch(k)
{
case 1: strcpy(month,"yan\0");return "winter";break;
case 2: strcpy(month,"feb\0");return "winter";break;
case 3: strcpy(month,"mar\0");return "spring";break;
case 4: strcpy(month,"opr\0");return "spring";break;
case 5: strcpy(month,"may\0");return "spring";break;
case 6: strcpy(month,"jun\0");return "summer";break;
case 7: strcpy(month,"jul\0");return "summer";break;
case 8: strcpy(month,"avg\0");return "summer";break;
case 9: strcpy(month,"sep\0");return "autumn";break;
case 10: strcpy(month,"oct\0");return "autumn";break;
case 11: strcpy(month,"nov\0");return "autumn";break;
case 12: strcpy(month,"dek\0");return "winter";break;
}
}
};
void main()
{
char* month=(char*)malloc(11),*season;
date *dt=new date("10.12.2007");
season=dt->syear(month);
cout<<season<<" "<<month<<endl;
delete dt;
}
второго сам попробуй если что стучи по ИСК 465497196
Программа аппроксимации методом наименьших квадратов на основе степенного полинома с визуализацией графиков функций (Windows API)
можно даже не на апи главное чтобы алго был
rasl посмотри здес http://exponenta.ru/
можеть найдешь что нибуть интересного
superboy4
12.03.2008, 23:04
Мне нужно разработать программу «Калькулятор», использующую соответствующий класс. Методы класса должны реализовывать операции сложения, вычитания, умножения и деления. Ввод данных организовать с помощью соответствующих кнопок на форме программы.
x_iLLuSiOn
13.03.2008, 06:31
делал на уроке за 15 мин.. если так туго ну поюзай гугл найдет в два счета!
6|9 =( сново я ....
Напишите плз прогу. с идиотцким graph оф... на паскале.
надо нарисовать тупенькие качели которые при запуске будут качаться туда сюда туда сюда туда... ))) если не оч влом напишите ато мне и влом и сграфом не дружу ((
Мне нужно разработать программу «Калькулятор», использующую соответствующий класс. Методы класса должны реализовывать операции сложения, вычитания, умножения и деления. Ввод данных организовать с помощью соответствующих кнопок на форме программы.
а на чём писать то?
superboy4
14.03.2008, 19:58
на delphi 6
Ввести строку символов. Вывести номер (место) последней не цифры в строке, если она там есть. На ассемблере помогите или расскажите хоть как примерно=)
Lancellot
16.03.2008, 20:43
задание:
создать программу которая выводит на екран монитора с сзаставкой!
з.ы может у кого что-то похожее есть?
выложите плз
xaker-boss
17.03.2008, 11:19
Меня попросили сделать простинькую игру, а именно крестики нолики игра скомпютером.
Мош кто сможет плиз
или хотябы игру на двоих(на одном компе, по очереди тыкать)эта наверника легче будет
На sources.ru загляни, там и крестики, и нолики есть
Так как паскаль совсем не знаю
Задание на Паскале:
Поиск минимальных элементов массива
Вот что набросал:
a[1;10] массив array
элемент массива int;
min - минимальн. элементов
min:= a[1];
for i:= 2 to 10 : do
begin
If min>a[i] then
min:= a[i]
end;
writeln (min)
** начало кода
** i от 1 до 10 выполн.
***начало - если
*** если min > a [i] to
*** min:=a[i]
***конец если
** конец кода
* вывод
Но это наверное не правильно само задание выше
Меня попросили сделать простинькую игру, а именно крестики нолики игра скомпютером.
Мош кто сможет плиз
или хотябы игру на двоих(на одном компе, по очереди тыкать)эта наверника легче будет
Держи крестики нолики. Игра на двоих, возможны глюки, писал на корую руку.
Если есть желание можешь продумать искуственный интелект сам)))
unit fmuMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
type
TFormMain = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure FormCreate(Sender: TObject);
private
procedure MoveHod;
function Finish: Boolean;
public
{ Public declarations }
end;
var
FormMain: TFormMain;
hod: String;
implementation
{$R *.dfm}
procedure TFormMain.MoveHod;
begin
if hod = 'X' then
hod := 'O' else
if hod = 'O' then
hod := 'X';
end;
procedure TFormMain.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if StringGrid1.Cells[ACol, ARow] = '' then
begin
StringGrid1.Cells[ACol, ARow] := hod;
if Finish then
Application.MessageBox(PChar('Ïîáåäèë '+hod), 'Ïîáåäà íàÕ!!!')
else
MoveHod;
end;
end;
procedure TFormMain.FormCreate(Sender: TObject);
begin
hod := 'X';
end;
function TFormMain.Finish: Boolean;
var
i, j, p: Integer;
function Presence(c, r: Integer): Boolean;
begin
if StringGrid1.Cells[c, r] = hod then
Result := True
else
Result := False;
end;
begin
Result := false;
for i := 0 to 2 do
begin
p := 0;
for j := 0 to 2 do
if Presence(i, j) then
inc(p);
if p = 3 then
Result := true;
p := 0;
for j := 0 to 2 do
if Presence(j, i) then
inc(p);
if p = 3 then
Result := true;
end;
if Presence(1, 1) then
begin
if Presence(0, 0) and Presence(2, 2) then
Result := True;
if Presence(2, 0) and Presence(0, 2) then
Result := True;
end;
end;
end.
advokat.holy
17.03.2008, 17:29
ХАй 2 ОЛ! Наверно покажеться смешным, но у меня в лабе бо "С" такая вот фигня,
я все сделал, (самопечатающий текст), вот одно число оно мне не правильно выводит, float d; 3.362651E+01 а выводит 33,62651Е+01 какого фига ???
{
float a,b,d;
unsigned short c;
scanf("%f %f %hu %f", &a, &b, &c, &d);
printf("|a=%8.6f| |b=%8.6f| |c=%4hu:| |d=%8.5fE+01|");
getch();
clrscr();
}
a=4.500443, b=1.254128, c=302: d=3.362651E+01
с математекою я на "ВЫ" =(((((
{
float a,b,d;
unsigned short c;
scanf("%f %f %hu %f", &a, &b, &c, &d);
printf("|a=%8.6f| |b=%8.6f| |c=%4hu:| |d=%8.5fE|");
getch();
clrscr();
}
а так? ;)
advokat.holy
18.03.2008, 01:31
да и так я ваще пробовал с самого начала, оно мне всеравно выводит 33,62651Е и без +01
либо у меня компилятор тупой либо я тупой, но ваще в Си шарю, вот тока с математикой у меня ТРАБЛА ! :confused:
Delimiter
18.03.2008, 01:57
да и так я ваще пробовал с самого начала, оно мне всеравно выводит 33,62651Е и без +01
либо у меня компилятор тупой либо я тупой, но ваще в Си шарю, вот тока с математикой у меня ТРАБЛА ! :confused:
ну если E+01 у тебя не "значащие" чего ж ты на на них внимание обращаешь??? :D а если значащие то чего ж ты их "подпихиваешь" в результат? И при чем тут математика для стандартной записи числа с плавающей запятой???
сам подумай чем отличаются
3.362651E+01 и 33.62651
Задание на Паскале:
Поиск минимальных элементов массива
Вот что набросал:
a[1;10] массив array
элемент массива int;
min - минимальн. элементов
min:= a[1];
for i:= 2 to 10 : do
begin
If min>a[i] then
min:= a[i]
end;
writeln (min)
** начало кода
** i от 1 до 10 выполн.
***начало - если
*** если min > a [i] to
*** min:=a[i]
***конец если
** конец кода
* вывод
Но это наверное не правильно само задание выше
Но это наверное не правильно
почему же неправильно помоему всё нормально, проверять в лом, но на глаз вроде всё ровно. перебираешь элементы массива если попадаеться меньше чем min то присваиваеш min значение элемента.... и.т.д.
почему же неправильно помоему всё нормально, проверять в лом, но на глаз вроде всё ровно. перебираешь элементы массива если попадаеться меньше чем min то присваиваеш min значение элемента.... и.т.д.
Так в не мог бы подробно расписать решение?)
а в чем вопрос то? правильно все. что тебя интересует?
а в чем вопрос то? правильно все. что тебя интересует?
Написать полностю код, чтобы он компилися)
Задание на Паскале:
a[1;10] массив array
элемент массива int;
ты сам себе противоречишь, ибо int - для с/с++ (или я вобще паскаль забыл)....используй integer или byte
P.S. Исходник писать не буду по моральным убеждениям по поводу твоего ника и аватары!!! :p
ну достань в инете справочник (учебник) по паскалю, почитай, потом пиши код ((* че тут трудного то? ((*
Garfi +1
Кто нибуть знает как решить Полином Жигалкина?!
http://i016.radikal.ru/0803/34/d01fc00adeb3.gif
если да то есть вопрос по раскрытию скобок после домножения на модуль 2. стукну в асю.
Задание на Паскале:
Поиск минимальных элементов массива
Вот что набросал:
a[1;10] массив array
элемент массива int;
min - минимальн. элементов
min:= a[1];
for i:= 2 to 10 : do
begin
If min>a[i] then
min:= a[i]
end;
writeln (min)
** начало кода
** i от 1 до 10 выполн.
***начало - если
*** если min > a [i] to
*** min:=a[i]
***конец если
** конец кода
* вывод
Но это наверное не правильно само задание выше
POS_troi
19.03.2008, 20:45
Не мне (Паскаль не помню совершенно)
Вычислить и напечатать значения интеграла
b xe^(-2x)
S ( ────────── + xsin(x)^2) dx,
1 (1+2x)^2
где b - сумма корней системы уравнений:
1.5x[1]+2.8x[3]=9.9
2x[1]-4.2x[2]+3.4x[3]=3.8
5.6x[2]-4.2x[3]=-1.4
Для вычисления интеграла использовать метод Симпсона.
----------------------------
Вычислить и напечатать значения интеграла
a x+1 x^2arctgx
S ( ───────────────── + ─────────── ) dx,
0.5 (3sinx+2cosx)^2 1+x^2
где y - модуль корня уравнения
0.8x^5 - 0.8x^4 + 1.6x^2 - 6.4x + 6.4 = 0,
вычисленных по методу хорд с точностью до 0.001.
P.S. Спасибо
Ахтунг научите на асм записывать строку и находить в ней цифру первую!=(
p.s. Исходник писать не буду по моральным убеждениям по поводу твоего ника и аватары!!!
+1
Мля, POS_troi, оформляй сложные формулы в формате LaTeX )), или по крайней картинкой пость
нужен чат на делфи по тсп/айпи протоколу,чтобы были отдельно клиент и сервер,поддерживалось:пере дача файлов,смайлы,изменение шрифта,пароли и тп,или хотя бы что-то
и чтобы чат использовал стандартные средства делфи
плиз,дайте ссылу на исходники или отошлите на меил sinayi@mail.ru
ЗАРАНЕЕ СПАСИБО!
зы гуглил-все нето(((
POS_troi
20.03.2008, 16:12
2-krypt3r
Извиняюсь, я не ученый ;)
2 Sinay -> http://articles.org.ru/cfaq/index.php?qid=961&catid=31
http://www.planet-source-code.com/URLSEO/vb/scripts/ShowCode!asp/txtCodeId!1747/lngWid!7/anyname.htm
http://kerosinka.ru/node/17
x_iLLuSiOn
21.03.2008, 16:19
Меня попросили сделать простинькую игру, а именно крестики нолики игра скомпютером.
Мош кто сможет плиз
или хотябы игру на двоих(на одном компе, по очереди тыкать)эта наверника легче будет
ха-ха! Это следующее что мне сказали селать после калькулятора! XD
-=megahertz=-
21.03.2008, 17:19
имеется файл 1.txt с содержимым
123
1234
12345
...
Нужно считать файл 1.txt и ввести перед этими цифрами любые буквы
пример:
a 123
a 1234
a 12345
(При этом символы перед цифрами вводить нужно с клавиатуры)
Программа на С++
-=megahertz=-
21.03.2008, 18:28
а да) на С++
xxxxxxxxxxxxxxx
21.03.2008, 18:39
нужно добавить чтоб когда запускаешь показывало сколько нулей справа от диагоналей в матрице ( язык турба паскаль)
Program gdfg;
uses crt;
var i,j,n,m,min,k : integer;
t : array [1..100,1..100] of integer;
begin
clrscr;
write('vvedite kol-vo stolbcov = ');
readln(m);
write('vvedite kol-vo rjadkov = ');
readln(n);
for i:=1 to n do
for j:=1 to m do begin
write('vvedite ',i,' ',j,' znachenie = ');
readln(t[i][j]);
end;
for i:=1 to n do begin
for j:=1 to m do write(t[i][j]:4);
writeln;
end;
writeln;
k:=0;
min:=t[n-1][1];
for i:=1 to n do
for j:=1 to m do begin
if ((i<=(m-j)) and (i>j) and (t[i][j]=0)) then k:=k+1;
if ((i>(n-2)) and (t[i][j]<min)) then min:=t[i][j];
end;
if min=0
then writeln('deystvie nevozmozhno')
else writeln(k/min:8:4);
readln;
end.
xxxxxxxxxxxxxxx
s:=0; {объяви еще одну переменную}
for i:=1 to n do
for j:=i+1 to m do
begin
if t[i,j]=0 then s:=s+1;
end;
writeln (s);
...
как то так... ;)
P.S. Язык не "турба паскаль" а Paskal !!! Turbo Pascal это просто компилятор! ;)
xxxxxxxxxxxxxxx
21.03.2008, 23:37
Нуна срочно код на С++ возведения матрицы в степень с наименшим количеством умножений. Помогите кто может.
-=megahertz=-
23.03.2008, 09:34
все уже ненадо, сделал сам
Помогите пожалуйста найти исходник на С# программы похожей на Paint...
St0nX, где-то здесь (http://ishodniki.ru) ;)
MegaBits
24.03.2008, 22:32
Помогите сделать лабки с меня шестизнак.
http://rapidshare.com/files/102033089/Lab_Builder_KTS.rar.html
вот ссылка на файл с заданиями (нужно сделать 8 вариант).
стучите в аську 566-736, кто первый все сделает тому 6-знак 521437
.
вот отрыврк из программы:
#include <stdio.h>
#include <math.h>
class fun {
private:
float ui,uoyt,k,b;
int h;
public:
float Uin(float T) {
ui = 15*sin(T);
return ui;
}
...........
...........
int main() {
fun n;
float t,Ui,Uo,lo,o,o1;
int qwe,d=1,lk=0,lk1=0,menu=0,ext=0;
FILE *f;
t = 0;
..........
объясните что означает (что делает в программе) строка: fun n;
Срочно нужно решить задачку. Дан двухмерный масив отсортировать его по рядкам за спаданию, результаты записать в типизированый файл. Сортировать методами: Выборки, Шелла и быстрой сортировки. (на Pascal) Помогите!!!!
De-visible
25.03.2008, 00:40
Срочно нужно решить задачку. Дан двухмерный масив отсортировать его по рядкам за спаданию, результаты записать в типизированый файл. Сортировать методами: Выборки, Шелла и быстрой сортировки. (на Pascal) Помогите!!!!
За сколько????ICQ#:223333575 стучись:)
1. Уберите лишние скобки у данного арифметического выражения: (х-у)+23*(у/20)+((х\2^3)) Mod 2)
а затем напишите программу,которая по введённым значениям x и у типа Integer,вычисляла бы данное арифметическое выражение.
2. Даны декартовы координаты вершин треугольника (в плоскости).Напишите программу,вычисляющую площадь и периметр этого треугольника.
Заранее премного благодарен
JayKa тебе на каком языке надо?
насчёт второй задачи... напиши формулу вычисления площади и петиметра по координатам
dos999
гыг, кто-то в школе плохо учился, не знает, что периметр - сумма длин всех сторон n-угольника :)
А по теме.
Pascal
program triangle;
type
TPoint = record
x, y : real;
end;
function getlength (a, b : TPoint) : real;
begin
getlength := sqrt (sqr (b.x - a.x) + sqr (b.y - a.y));
end;
function getperimeter (a, b, c : real) : real;
begin
getperimeter := a + b + c;
end;
function getsquare (a, b, c, p : real) : real;
begin
getsquare := sqrt (p * (p - a) * (p - b) * (p - c));
end;
var
coords : array [1..3] of TPoint;
len : array [1..3] of real;
perim, square : real;
i : byte;
begin
coords[1].x := 1;
coords[1].y := 1;
coords[2].x := 2;
coords[2].y := 2;
coords[3].x := -2;
coords[3].y := 2;
len[1] := getlength (coords[1], coords[2]);
len[2] := getlength (coords[2], coords[3]);
len[3] := getlength (coords[1], coords[3]);
perim := getperimeter (len[1], len[2], len[3]);
square := getsquare (len[1], len[2], len[3], perim / 2);
writeln (perim : 0 : 3);
writeln (square : 0 : 3);
end.
C
#include <stdio.h>
#include <math.h>
struct TPoint
{
float x, y;
};
float getlength (TPoint a, TPoint b)
{
return sqrt ((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));
}
float getperimeter (float a, float b, float c)
{
return (a + b + c);
}
float getsquare (float a, float b, float c, float p)
{
return sqrt (p * (p - a) * (p - b) * (p - c));
}
int main ()
{
TPoint coords [3];
float len [3], perim, square;
unsigned char i;
coords[0].x = 1;
coords[0].y = 1;
coords[1].x = 2;
coords[1].y = 2;
coords[2].x = -2;
coords[2].y = 2;
len[0] = getlength (coords[0], coords[1]);
len[1] = getlength (coords[1], coords[2]);
len[2] = getlength (coords[2], coords[0]);
perim = getperimeter (len[0], len[1], len[2]);
square = getsquare (len[0], len[1], len[2], perim / 2);
printf ("Perimeter: %.3f\nSquare: %.3f\n", perim, square);
return 0;
}
ForNeVeR
25.03.2008, 19:50
вот отрыврк из программы:
#include <stdio.h>
#include <math.h>
class fun {
private:
float ui,uoyt,k,b;
int h;
public:
float Uin(float T) {
ui = 15*sin(T);
return ui;
}
...........
...........
int main() {
fun n;
float t,Ui,Uo,lo,o,o1;
int qwe,d=1,lk=0,lk1=0,menu=0,ext=0;
FILE *f;
t = 0;
..........
объясните что означает (что делает в программе) строка: fun n;
Строка fun n; создаёт экземпляр класса fun, с которым мы в дальнейшем будем работать. Чтобы обратиться, например, к методу Uin, нельзя написать просто fun.Uin, т.к. fun - это только название класса, а вот n - это уже имя созданного в процессе выполнения функции main экземпляра класса (т.е можно написать n.Uin). Можно обращаться напрямую (без создания экземпляра) только к static-функциям и переменным, но это уже немножко из другой оперы...
xxxxxxxxxxxxxxx
26.03.2008, 21:24
очень нужна программа умножения двух квадратных матриц на с++
De-visible
26.03.2008, 21:31
_http://alglib.sources.ru/matrixops/mul.php
_http://www.ssga.ru/AllMetodMaterial/metod_mat_for_ioot/metodichki/djukov/matriza.htm
_http://www.pm298.ru/matr3.shtml
А вообще существует google!
Друзья, помогите плз :
с++
Разработать программу, выполняющую операции со структурами данных, реализованными в виде связанных списков. Алгоритмы выполнения каждой операции оформить в виде функции. Программа должна содержать меню, позволяющее протестировать все операции с динамической структурой
Элементы данных:
Авторы – 20 символов, название - 20 символов, год издания – целое число
Структуры данных:
Дек с ограниченным входом
Добавление элемента слева, проверка дека на отсутствие в нем элементов, удаление элемента справа, удаление элемента слева, получение значения левого элемента, удаление всех элементов, сравнение двух деков, вывод дека
Реализовать ввиде Связанного двунаправленного линейного списка
я часть написал но не уверен(((
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
string rus(char s[ ]);
struct book
{ char avtor[20];
char name[20];
int year;
};
struct element
{ book info;
element *next;
element *prev;
};
void add_l(element *&list,element *&list2); // 1
bool empty(element *&list); // 2
void del_r(element *&list,element *&list2); // 3
void del_l(element *&list,element *&list2); // 4
void output_l(element *&list,element *&list2); // 5
void del(element *&list,element *&list2); // 6
bool compayer(element *&list,element *&list2); // 7
void output(element *list); // 8
void menu();
int main()
{ int i;
element *in=NULL;
element *inout=NULL;
while(true)
{ menu();
cin>>i;
clrscr();
switch(i)
{
case 1: add_l(in,inout); break;
case 2: empty(in); break;
case 3: del_r(inout,in); break;
case 4: del_l(in,inout); break;
case 5: output_l(in,inout); break;
case 6: del(in,inout); break;
case 7: compayer(in,inout); break;
case 8: output(inout); break;
default: cout<<rus("\nневерный номер.\n");
case 0: return 0;
}
}
}
void add_l(element *&list,element *&list2)
{
element *t;
t=new element;
cout<<rus("введите автора: ")<<endl;
cin.get();
cin.getline(t->info.avtor,20);
cout<<rus("введите название: ")<<endl;
cin.getline(t->info.name,20);
cout<<rus("веедите год: ")<<endl;
cin>>t->info.year;
if(list==NULL)
{
list2=list=t;
t->next=0;
t->prev=0;
}
else
{
list->prev=t;
t->prev=0;
t->next=list;
list=t;
}
}
bool empty(element *&list)
{
if(list==0)
{cout<<rus("дук пуст.");
return true;}
{return false;}
}
void del_r(element *&list2,element *&list)
{
element *p;
if(!empty(list))
if(list==list2)
{
p=list2;
list=list2=0;
delete p;
}
else
{
p=list2;
list2=list2->prev;
list2->next=0;
delete p;
}
}
void del_l(element *&list2,element *&list)
{}
void output_l(element *&list,element *&list2)
{
if(!empty(list))
{
cout<<rus("автор: ")<<list->info.avtor<<endl;
cout<<rus("название: ")<<list->info.name<<endl;
cout<<rus("год: ")<<list->info.year<<endl;
cout<<"---------------------------------------------"<<endl;
cout<<"--------------------OK-----------------------";
}
}
void del(element *&list2,element *&list)
{
while(!empty(list))
del_r(list2,list);
del_l(list2,list);
}
bool compayer(element *&list,element *&list2)
{}
void output(element *list)
{
if(!empty(list))
{
element *t;
t=list;
while(t!=0)
{
cout<<rus("Автор: ")<<t->info.avtor<<endl;
cout<<rus("название: ")<<t->info.name<<endl;
cout<<rus("год: ")<<t->info.year<<endl;
cout<<"*********************************************"<<endl;
t=t->next;
}
cout<<"---------------------------------------------"<<endl;
cout<<"--------------------OK-----------------------";
}
}
void menu()
{
cout<<rus("\n Выберите:\n");
cout<<rus("\n1. Добавление элемента слева.");
cout<<rus("\n2. проверка дека на отсутствие в нем элементов");
cout<<rus("\n3. удаление элемента справа.");
cout<<rus("\n4. удаление элемента слева.");
cout<<rus("\n5. получение значения левого элемента.");
cout<<rus("\n6. удаление всех элементов.");
cout<<rus("\n7. сравнение двух деков.");
cout<<rus("\n8. вывод дека.");
cout<<rus("\n0. завершение проги.");
cout<<rus("\n\n выберите:");
}
string rus(char s[ ]) // Перевод кодировки из Windows в Dos
{
string t;
int i=0;
t=s;
while (t[i]!=0)
{
if(t[i]>='A'&& t[i]<='п' )
t[i]-=64;
if(t[i]>='p'&& t[i]<='я' )
t[i]-=16;
i++;
}
return t;
}
De-visible
28.03.2008, 00:33
????Всмысле упадет?
Anjoi :)
http://pascal.sources.ru/datetime/calenfun.htm
De-visible
28.03.2008, 11:13
_http://www.cyberguru.ru/programming/delphi/delphi-components-part1-page11.html
_http://www.delphisources.ru/pages/faq/base/kol_date_time_functions.html
_http://wm-help.net/books-online/book/1492/1492-10.html
Ну это так дополнение:)
De-visible
28.03.2008, 19:05
Всё ,друзья,справился......
Код в студию:)
Прошу, коментируем
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
string rus(char s[ ]);
struct book
{ char avtor[20];
char name[20];
int year;
};
struct element
{ book info;
element *next;
element *prev;
};
void add_l(element *&list,element *&list2); // 1
bool empty(element *&list); // 2
void del_r(element *&list2,element *&list); // 3
void del_l(element *&list,element *&list2); // 4
void output_l(element *&list,element *&list2); // 5
void del(element *&list,element *&list2); // 6
void output(element *list); // 7
void menu();
int main()
{ int i;
element *in=NULL;
element *inout=NULL;
while(true)
{ menu();
cin>>i;
clrscr();
switch(i)
{
case 1: add_l(in,inout); break;
case 2: empty(in); break;
case 3: del_r(inout,in); break;
case 4: del_l(in,inout); break;
case 5: output_l(in,inout); break;
case 6: del(inout,in); break;
case 7: output(in); break;
default: cout<<rus("\nневерный номер.\n");
case 0: return 0;
}
}
}
void add_l(element *&list,element *&list2)
{
element *t;
t=new element;
cout<<rus("введите автора: ")<<endl;
cin.get();
cin.getline(t->info.avtor,20);
cout<<rus("введите название: ")<<endl;
cin.getline(t->info.name,20);
cout<<rus("веедите год: ")<<endl;
cin>>t->info.year;
if(list==NULL)
{
list2=list=t;
t->next=0;
t->prev=0;
}
else
{
list->prev=t;
t->prev=0;
t->next=list;
list=t;
}
}
bool empty(element *&list)
{
if(list==0)
{cout<<rus("дек пуст.");
return true;}
else
{return false;}
}
void del_r(element *&list2,element *&list)
{
element *p;
if(!empty(list))
if(list==list2)
{
p=list2;
list=list2=0;
delete p;
}
else
{
p=list2;
list2=list2->prev;
list2->next=0;
delete p;
}
}
void del_l(element *&list,element *&list2)
{
element *p;
if(!empty(list))
if(list==list2)
{
p=list;
list=list2=0;
delete p;
}
else
{
p=list;
list=list->next;
list->prev=0;
delete p;
}
}
void output_l(element *&list,element *&list2)
{
if(!empty(list))
{
cout<<rus("автор: ")<<list->info.avtor<<endl;
cout<<rus("название: ")<<list->info.name<<endl;
cout<<rus("год: ")<<list->info.year<<endl;
cout<<"---------------------------------------------"<<endl;
cout<<"--------------------OK-----------------------";
}
}
void del(element *&list2,element *&list)
{
while(!empty(list))
del_r(list2,list);
}
void output(element *list)
{
if(!empty(list))
{
element *t;
t=list;
while(t!=0)
{
cout<<rus("Автор: ")<<t->info.avtor<<endl;
cout<<rus("Название: ")<<t->info.name<<endl;
cout<<rus("Год издания: ")<<t->info.year<<endl;
cout<<"*********************************************"<<endl;
t=t->next;
}
}
}
void menu()
{
cout<<rus("\n Выберите:\n");
cout<<rus("\n1. Добавление элемента слева.");
cout<<rus("\n2. проверка дека на отсутствие в нем элементов");
cout<<rus("\n3. удаление элемента справа.");
cout<<rus("\n4. удаление элемента слева.");
cout<<rus("\n5. получение значения левого элемента.");
cout<<rus("\n6. удаление всех элементов.");
cout<<rus("\n7. вывод дека.");
cout<<rus("\n0. завершение проги.");
cout<<rus("\n\n выберите:");
}
string rus(char s[ ]) // Перевод кодировки из Windows в Dos
{
string t;
int i=0;
t=s;
while (t[i]!=0)
{
if (t[i]>='А' && t[i]<='п')
t[i]-=64;
if (t[i]>='р' && t[i]<='я')
t[i]-=16;
i++;
}
return t;
}
Ищется короткое решение (желательно на C/c++)
Дана строка, состоящая только из скобок '(' и ')'
Нужно проверить, является ли она арифметически правильной. Т.е. является ли расп. скобок верным в арифм. выражении
Delimiter
30.03.2008, 01:12
bool check_str(char *str)
{
int cnt=0;
for(int i=0;*(str+i)!=0;i++)
if(*(str+i)=='(')
{
cnt++;
}
else
if(*(str+i)==')')
{
if(cnt>0)
cnt--;
else
return false;
}
if(cnt==0)
return true;
else
return false;
}
043nKRuT0y
30.03.2008, 22:55
Народ помогите написать програму на "С" !!! задача таковая : С клавиатуры вводитса текст в котором слова разделены пробелом. Пробелов можеть быть как один так и несколько , надо в етом тексте найти симетрические слова(тоесть слова которые одинаково читаютса справа на лево и наоборот) и вывести их на екран .... Кто может помочь выложыте код с меня много плюсов ! )
De-visible
31.03.2008, 02:28
Народ помогите написать програму на "С" !!! задача таковая : С клавиатуры вводитса текст в котором слова разделены пробелом. Пробелов можеть быть как один так и несколько , надо в етом тексте найти симетрические слова(тоесть слова которые одинаково читаютса справа на лево и наоборот) и вывести их на екран .... Кто может помочь выложыте код с меня много плюсов ! )
Могу реализовать на DELPHI, кто нить переведет на C
Если надо отпишись!
043nKRuT0y
31.03.2008, 08:52
Давай на делфи .... Попробю перевести на "С"!!!
На паскале
program palindrom;
function ReverseStr (s : string) : string;
var
i, j, len : integer;
s2 : string;
begin
s2 := s;
len := length (s);
i := 1;
j := len;
while i <= len do begin
s2 [i] := s [j];
i := i + 1;
j := j - 1;
end;
ReverseStr := s2;
end;
var
s, s1, s2 : string;
len, i, j, p : integer;
begin
writeln ('Vvedite stroku, razdelennuyu probelami:');
readln (s);
repeat
p := pos (' ', s);
if p <> 0 then begin
s1 := Copy (s, 1, p - 1);
delete (s, 1, p);
write (s1, ' - ');
s2 := ReverseStr (s1);
if (s1 = s2) then
writeln ('Palindrom')
else
writeln ('Ne-a, ne palindrom');
end;
until p = 0;
end.
На сях сорри, времени нет писать, как-нить сам уж
043nKRuT0y
31.03.2008, 10:57
2 krypt3r :
...спс код понятен..... жалко што на "С" нету функций "copy" "delete" ((( Ниче так попробую !!! еще раз СПС.
помогите сделать курсовую работу мне кому не лень:
Ii.2 Игра «Угадай число»
Необходимо написать программу, которая :
приветствует пользователя;
«загадывает» с пом,
ощью генератора случайных чисел некоторое число (y);
реализует диалог с пользователем (см. рис. 1);
в зависимости от введенного пользователем числа (Х) выводит на экран сообщение «Твое число больше задуманного» или «Твоё число меньше задуманного»;
если число Y было угадано за 5 и менее попыток, то на экран выводится сообщение «Молодец! Ты угадал число с …-й (№ попытки) попытки!», после чего происходит выход из программы;
всего 5 попыток угадывания числа Y; если после 5-ой попытки число не угадано, то программа должна вывести на экран сообщение «Увы! Ты не смог угадать число!» и задуманное число Y, после чего происходит выход из программы;
при выходе из программы на экран должно выводится сообщение «До свидания!» (или «До встречи!» и т. п.);
интерфейс программы должен иметь вид как показано ниже:
<Результат> - это одно из сообщений:
1) «Твоё число меньше (больше) задуманного»;
2) «Молодец! Ты угадал число с …-й (№ попытки) попытки!»;
3) «Увы! Ты не смог угадать число!»;
желательно, чтобы диалоговые окна и текст в них были разных цветов.
Iii Консультации по выполнению курсовой работы
Внимание! Каждая часть курсовой работы на соответствующем этапе выполняется в виде самостоятельной программы, из которых потом компонуется полная программа курсовой ра-боты.
короче полная работа сдесь, там написано как ее сделать http://rapidshare.com/files/103741317/i-1_cw.rar.html
Tolia чел ты совсем обленился... хоть бы напечатал сам =)
тут 2 варианта
1. начни делать, будут вопросы задавай/спрашивай тут, думаю что многие будут тебе помогать.
2. если вообще в паскале 0 или просто делать нехочеться, то можно за Wmz кому нить заказать
Ps. Вряд ли кто то бесплатно тебе всё это сделает... лично я таким интузиазмом не обладаю =)
да... обленился ну щя попробую хоть что нить сделать
Ergoproxy
31.03.2008, 14:40
Поищи в инете там видел полно таких работ было)
De-visible
31.03.2008, 15:49
Вот настрогал быстренько(Вероятно код кривой - исправишь если что):
program abc;
function proverka(txt,comp,i:integer):string;
var
chel:integer;
Begin
If txt>comp then
Begin
Writeln;
Writeln('Загаданное число меньше ',txt);
Writeln('Осталось попыток ',5-i);
end;
If txt<comp then
Begin
Writeln;
Writeln('Загаданное число больше ',txt);
Writeln('Осталось попыток ',5-i);
end;
If txt=comp then
Begin
Writeln;
Writeln('Молодец! Ты отгадал число - ',txt);
Writeln('До свиданья!');
Writeln('Выходим');
proverka:='vihod';
end;
If (txt<>comp) and (i=5) then
Begin
Writeln('Число попыток кончилось ты не отгадал число');
Writeln('Выходим');
proverka:='Vihod';
end;
End;
var comp,chel,i,k:integer;
st:string;
begin
i:=0;
proverka:='.';
Writeln('Здравствуй');
Writeln('Введи максимальный предел числа');
Readln(k);
randomize;
comp:=random(k);
repeat
writeln('Введи число');
readln(chel);
i:=i+1;
proverka(chel,comp,i);
until (i=5) or proverka='vihod';
End.
++++бонус++++
:D _http://forum.vingrad.ru/forum/act-ST/f-142/t-174455.html
_http://www.opeople.ru/topic8671.html
_http://www.opeople.ru/topic6158.html
_http://forum.vingrad.ru/forum/Vingrad-help-center.html
_http://www.google.ru
:D
Вот на Delphi накарякал:)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
comp,chel:integer;
i:integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
Randomize;
comp:=random(10);
i:=0;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
i:=i+1;
chel:=StrToInt(edit1.Text);
If chel>comp then
Begin
ShowMessage('Попытка номер '+IntToStr(i)+#10+'Это число меньше '+Edit1.Text);
end;
If chel<comp then
Begin
ShowMessage('Попытка номер '+IntToStr(i)+#10+'Это число больше '+Edit1.Text);
end;
If chel=comp then
Begin
ShowMessage('Попытка номер '+IntToStr(i)+#10+'Ты угадал это число! '+Edit1.Text);
ShowMessage('Выходим');
Form1.Close;
end;
end;
end.
043nKRuT0y
31.03.2008, 20:03
Может ктото сможет перевести вышеуказаный КОД на "С" !!! Ато я пробовал и чето у меня с функцыями "copy" и "delete" ниче не выходит. Даи функцыи "pos" тоже нету (
щас фряхи нету под рукой так что могут быть неточности НО:
copy==strcpy;
pos==index
Держи.
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 0xff
char *ReverseStr (char *s)
{
int i = 0, j, len;
char s2 [MAX_SIZE];
len = strlen (s);
j = len - 1;
bzero (s2, len + 1);
while (j >= 0)
{
s2 [i++] = s [j--];
}
return s2;
}
int main ()
{
char s [MAX_SIZE], *s1, *s2, *s3;
//strcpy (s, "dfgh fdgn zhopaapohz dfgn ghjk ghn fghmjnfc oooppppppooo dfgbs 777999999777");
printf ("Vvedite stroky:\n");
if (fgets (s, MAX_SIZE, stdin) == NULL)
{
printf ("Error\n");
return -1;
}
s [strlen (s) - 1] = '\0';
s1 = s2 = s;
while ((s1 = strchr (s1, 0x20)) != NULL)
{
s1++;
s2 [s1 - s2 - 1] = '\0';
s3 = ReverseStr (s2);
printf ("%s", s2);
if (strstr (s2, s3) == NULL)
printf (" - NO\n");
else
printf (" - Palyndrom :)\n");
s2 = s1;
}
return 0;
}
043nKRuT0y
01.04.2008, 08:42
"bzero (s2, len + 1);" у меня пишет "Function should have a prototype" связкой CTRL+F1 не выдает библиотеку , показывает ево как не-зарезервированое слово !!! Есть замена етой функцыи ? .... и что она вообще делает ??? В остальном пока все понятно !
А-а, ну у тебя же не линукс, сорри. Замени на
memset (s2, '\0', len + 1);
Хотя можно и по-другому
s2 [len + 1] = '\0';
КОНЕЧНО НЕ ТО НО ВСЕ РАВНО СПАСИБО, НУЖНО БЫЛО ТИПО ТОГО
program Titov_Papa;
uses crt;
var chislo, zchislo, n: integer;
begin
clrscr;
randomize;
n:=0;
zchislo:=random(10);
repeat
n:=n+1;
writeln('Input chislo: ');
readln(chislo);
if chislo=zchislo then writeln('Very Good!!!');
if chislo<zchislo then writeln('BOLSHE');
if chislo>zchislo then writeln('MENSHE');
until (zchislo=chislo) or (n=5);
if n=5 then
begin
writeln('LIMIT POPYTOG ISCHEPAL, VY PROIGRALI, BECKHAM - LOL');
writeln('BYLO ZAGADOANO CHISLO: ');
writeln(zchislo);
end;
readkey;
end.
043nKRuT0y
02.04.2008, 15:38
Слушай прога работает почти как надо одно НО , нужно штобы пробулы упускались полностю , тоесть в начале текста можно задать пробел или несколько так и на протяжении всево текста , так вот пробелы нужно упустить .... Как ето замутить ???
DiffuSer
02.04.2008, 16:29
Парни, need help. Только что уведомили, что на завтро надо прогу на Pascal (либо C++), кодирование тремя методами -
1. статический ХАФФМАНА
2. Фано-Шеннона
3. динамический ХАФФМАНА
Выручайте, оч. прошу.
Народ кто сможет помогите, очень нужно сделать два задания по С#, пожалуйста если кто может сделайте.
1.Даны два массива, упорядоченных по возростанию: А[n] и B[m]. Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возростанию.
2.И решить задачу с помощью рекурсии...
Легенда гласит, что где-то в Ханое находится храм, в котором размещена следующая конструкция: на основании укреплены 3 алмазных стержня, на которые при сотворении мира Брахма нанизал 64 золотых диска с отверстием посередине, причем внизу оказался самый большой диск, на нем – чуть меньший и так далее, пока на верхушке пирамиды не оказался самый маленький диск. Жрецы храма обязаны перекладывать диски по следующим правилам:
1. За один ход можно перенести только один диск.
2. Нельзя класть больший диск на меньший.
Руководствуясь этими нехитрыми правилами, жрецы должны перенести исходную пирамиду с 1-го стержня на 3-й.
Ivan007 смотри ArrayList для 1 задание
Delimiter
02.04.2008, 22:38
2 Ivan007
нужно смотреть на предыдущие страницы (https://forum.antichat.ru/threadnav42678-26-10.html)
043nKRuT0y
05.04.2008, 16:34
2 krypt3r : слушай подскажы как в выше описаном тобой коде о полендромном слове прыисходит выделение слова а то я немогу догнать даную конструкцыю ! И что означает даная конструкцыя "((s1 = strchr (s1, 0x20)) != NULL)" особенно 0x20 ато я с таким еще не сталкивалса , а препад напрягает )
Как понять фразу?
как в выше описаном тобой коде о полендромном слове прыисходит выделение слова
Как в слове происходит выделение слова О.О? Или имелось в виду выделение слова из введенной строки? В коде юзаются два указателя, которые указывают (сорри за тавтологию=) на начало двух соседних слов, разделенных пробелом. Символы, находящиеся между этими указателями, принадлежат одной строке
Функция strchr
НАЗВАНИЕ
strchr, strrchr - определение местонахождения символа в строке
СИНТАКСИС
#include <string.h>
char *strchr(const char *s, int c);
char *strrchr(const char *s, int c);
ОПИСАНИЕ
Функция strchr() возвращает указатель на местонахождение первого совпадения с символом c в строке s.
Функция strrchr() возвращает указатель на местонахождение последнего совпадения с символом c в строке s.
Здесь, "символ" означает "байт" - эта функция не работает с широкими и многобайтными символами.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функции strchr() и strrchr() возвращают указатель на совпадения с соответствующим символом, а если символ не найден, то возвращают NULL.
Другими словами,
while ((s1 = strchr (s1, 0x20)) != NULL)
ищет в строке пробел. 0x20 - это шестнадцатиричный код пробела, если смущает, замени его на более понятный вариант
while ((s1 = strchr (s1, ' ')) != NULL)
Если пробел не найден, то возвращает NULL и выходит из цикла, если пробел найден, то прогоняем цикл для выделения слова, его реверсинга и сравнения "обратного" слова с оригинальным. Последнее происходит с помощью функции strstr. Ну тут все просто. Читай ман
НАЗВАНИЕ
strstr - поиск подстроки
СИНТАКСИС
#include <string.h>
char *strstr(const char *haystack, const char *needle);
ОПИСАНИЕ
Функция strstr() находит первую встретившуюся подстроку needle в строке haystack. Завершающие символы '\0' не сравниваются.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция strstr() возвращает указатель на начало найденной подстроки или NULL, если подстрока не найдена.
Pechenushka
09.04.2008, 01:15
Решите пожалуйста задачу. Сроки жмут, а я все пары по информатике прогулял, думая что там меня ничему новому не научат, теперь каюсь. Решение необходимо на Турбо Паскале... Заранее спасибо.
------------
Дана матрица А:
-4.1 5.8 -6.7 4.3
2.1 -5.1 6.3 -4.7
Найти
Р=<сумма элементов 1 строки> - <произведение элементов 2й строки>
b [1...n, 1...m]
bij, b[i,j]
--------------------
Нужно переделать так, чтобы в функции result вместо sum=sum+a[i][h]*b[h][j]; использовались указатели.
C++
2. МУЛЬТ
Перемножить две квадратичных целочисленных матрицы (со случайными значениями) размером N x N (N = 100) с помощью указателей и адресной арифметики. Обращение к элементам матрицы в виде m[i][j] разрешено только в исключительных ситуациях! Оптимизировать код программы путем «чистки циклов».
Память для матрицы m[N][N] выделяется «построчно»:
m[0][0] … m[0][N-1] m[1][0] … m[1][N-1] …….. m[N-1][0] … m[N-1][N-1]
#include<iostream>
#include <conio.h>
using namespace std;
void fillarray(int * array[], int m, int n)
{
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
array[i][j]=rand() % 10; //fill with random value from 0 to 9
cout<<array[i][j]<<"\t"; //print to screen
}
cout<<"\n"; //"\n"=endl
}
cout<<endl;
}
void result(int * a[], int * b[], int m, int k, int n)
{
int sum;
cout<<"Result "<<m<<"x"<<n<<" array:"<<endl<<endl;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
for(int h=0; h<k ;h++)
{
sum=sum+a[i][h]*b[h][j]; //matrix multiplication
}
cout<<sum<<"\t"; //print to screen
sum=0;
}
cout<<endl;
}
}
int main()
{
srand(time(NULL));
int m,n,k;
cout<<"Put first array size: "<<endl<<"m: ";
cin>>m; cout<<"n: "; cin>>k;
cout<<"Put second array size: "<<endl<<"m: "<<k<<endl<<"n: ";
cin>>n; cout<<endl;
/* allocate memory */
int**p=new int *[m],**q=new int*[k];
for (int i=0;i<m;i++) p[i]=new int[k];
for (int i=0;i<k;i++) q[i]=new int[n];
fillarray(p,m,k);
cout<<"*"<<endl<<endl;
fillarray(q,k,n);
cout<<"="<<endl<<endl;
result(p,q,m,k,n);
/* free memory */
for (int i=0;i<k;i++) delete p[i];
for (int i=0;i<n;i++) delete q[i];
delete[] p, q;
cout<<endl<<"Press any key..."<<endl;
getch();
return 0;
}
хэлп ми энибади...
еще есть вторая прога, которая перемножает матрицы, рабочая, использует указатели, но этот вариант выложен на нашем студенческом форуме и с него уже скатали все кому не лень. Поэтому, нужно как-то склепать две программы в одну, используя указатели, и так, чтобы не было похоже на вторую прогу
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int const N =3;
int ** func(int **m, int **n)
{
int **v;
int i, j, f, l, h, k;
v = (int**)malloc(sizeof(int) * N);
if(v == NULL)
{
printf("Not ehough memory!\n");
getch();
exit(1);
}
for(i=0; i<N; i++)
{
*(v+i) = (int*)malloc(sizeof(int)*N);
if(*(v+i) == NULL)
{
printf("Not enough memory!\n");
getch();
exit(1);
}
}
i = j = k = h =0;
for (f=0; f<N; f++)
{
for(l=0; l<N; l++)
{
int sum=0, current;
for(j=0,k=0; j<N,k<N; j++,k++)
{
current = *(*(m+i)+j) * *(*(n+k)+h);
sum += current;
}
*(*(v+f)+l) = sum;
h++, j=0, k=0;
}
i++, j=0, k=0, h=0;
}
return v;
}
int main()
{
int **m;
int **n;
int **v;
n = m = (int**)malloc(sizeof(int) * N); // v6deljaem pamat'
int i,j,k,h,f,l;
srand(time(NULL));
for (i=0; i<N; i++){
m[i] = (int*)malloc(sizeof(int)*N);// v6deljaem pamat'
for(j=0; j<N; j++){
m[j] = (int*)malloc(sizeof(int)*N);}}
for (k=0; k<N; k++){
n[k] = (int*)malloc(sizeof(int)*N);// v6deljaem pamat'
for(h=0; h<N; h++){
n[h] = (int*)malloc(sizeof(int)*N);}}
for (i=0; i<N; i++){
for(j=0; j<N; j++){
*(*(m+j)+i) = (rand() % 10) + 1; }} // zapolnjaem matrix
for (i=0; i<N; i++){
for(j=0; j<N; j++){ printf("%d\t", m[i][j]); } printf("\n"); }
printf("\n*\n\n");
for (k=0; k<N; k++){
for(h=0; h<N; h++){
*(*(n+h)+k) = (rand() % 10) + 1; }} // zapolnjaem matrix
for (k=0; k<N; k++){
for(h=0; h<N; h++){ printf("%d\t", n[k][h]); } printf("\n"); }
printf("\n=\n\n");
v = func(m, n);
for (i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
printf("%d\t", *(*(v+i)+j));
}
printf("\n\n");
}
getch ();
return 0;
}
P.S. Тем, кто поможет, плюсы, а также $$$ (призовой фонд 20 WMZ :cool: )
Jairam вы 2 коду malloc поменяй на new и тебе новый код а если тебе нужно по другому алгоритму то стучи по ICQ № 465-497-196
Pechenushka
11.04.2008, 00:29
Просил решить задачу, но никто не отписАл... Вот, если у кого будет такая/похожая выкладываю решение:
Program matrix2;
Uses CRT;
Var b:array [1..2,1..4] of real;
i,j:integer;
p,p1,p2:real;
BEGIN
ClrScr;
b[1,1]:=-4.1;
b[1,2]:=5.8;
b[1,3]:=-6.7;
b[1,4]:=4.3;
b[2,1]:=2.1;
b[2,2]:=-5.1;
b[2,3]:=6.3;
b[2,4]:=-4.7;
Writeln('vivod matrx');
For i:= 1 to 2 do
begin
For j:=1 to 4 do
begin
Write(b[i,j]:3:1);
Write(' ');
end;
Writeln;
end;
p:=0;
p1:=0;
p2:=1;
For j:=1 to 4 do
begin
p1:=p1+b[1,j];
p2:=p2*b[2,j];
end;
p:=p1-p2;
Writeln('p=',p:6:2);
readkey;
END.
CTPAHGEP
11.04.2008, 10:46
Всем привет !! Вообщем такая проблема? нужно написать экспертную систему по типу Prospector с использованием нечёткой логики и неточных данных , считающюю коээфиценты уверенности по формуле Байеса
Может быть кто то уже делал что то подобное и есть примеры работ??
advokat.holy
16.04.2008, 15:28
Всем привет! Люди помогите плЗзз.
Вот задание:
сформировать и вывести на экран вектор(масив одновымерный) из N целых случайных чисел,
каторые принимают значения на отрезке [a,b]. Границы интервала ([a,b])
ввести с клавы. Найти среднее арифметическое случайных чисел,
с них же найти максимальный минимальный елементы и их порядковые номера.
Да чуть не забил, для работы с массивами нужно использовать УКАЗАТЕЛЬ(ЛИ).
hackconnect
16.04.2008, 17:16
только если есть готовые решения или их часть.
На С/С++/c# надо написать прогу, в которой рисуется многогранник произвольный, который можно будет крутить в разные стороны.
просто не очень охота изучать опенГЛ или директикс
ЛИБО
код на OpenGL для вывода различных многогранников.
Срочно нужна помоч.
Помогите сделать задачи.
первая:
Номиналы россиыских рублей могут принимать значения 1,2,5,10,50,100,500,1000,5000. Копейки представить как 0.01 (1 копейка), 0.05 (5 копеек). 0.1 (10 копеек), 0.5 (50 копеек). Создать клаасс Money для работы с денежными суммами. Сумма должна быть представлена полями-номиналами, значениями которых должно быть количество купюр данного достоинства. Реализовать сложение сумм, вычитание сумм, деление сумм, деление суммы на дробное число, умножение на дробное число и операции соавнения. Дробная часть (копейки) при выводе на экран должны быть отделена от целой запятой.
Вторая задача.
Создать класс ModelWindow для работы с моделями экранных окон. В качестве полей задаются: заголовок окна, координаты левого верхного угла, размер по горизонтали, размер по вертикали, цвет окна, состояние "видимое/невидимое", состояние "с рамкой//без рамки". Координаты и размеры указываются в целых числах. Реализовать операции: передвижение окна по горизонтали.
Во всех этих заданиях, помимо указанных взадании операций, обязательно должны быть реализованы следующие методы:
# метод инициализации Init;
# ввод с клавиатуры Read;
# вывод на экран Display;
# преобразование в строку tostring.
Все задания должны быть реализованы тремя способами.
1. тип данных представляется структурой с необходимыми полями, а операции
реализуются как внешние функции, которые получают объекты данного типа в
качестве аргументов.
2. Как класс с закрытыми полями, где операции реализуются как методы класса.
3. инкапсулировать поля класса в независимой структуре и в ней реализовать методы Init(), Read(), Display(), tostring(). В основном классе должно быть поле данных, представленное объектом структурой.[/I][/QUOTE]
1. Язык? Технолоии? Среда? И т.д. ?
2. Такие услуги студенты старших курсов, аспиранты, преподаватели и люди которым нечего делать предоставляют за денежное вознаграждение, а вы на халявку хотите?
3. Студенты-программисты(!), которые лихорадочно ищут себе в интернете спасителя-избавителя от Д/З по информатике(!) достойны отчисления.
На самом деле - это же ваша специальность. И здесь нет ничего сложного, зачем вы собой места в ВУЗах занимаете, на них мог бы оказаться кто-то, кому это интересно.
Ребят выручайте, подправьте код плз чтоб работал а то я уже не знаю что делать. ПРога по бинарному дереву.
//---------------------------------------------------------------------------
#pragma hdrstop
#include <fstream.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <iomanip.h>
#include <iostream.h>
//---------------------------------------------------------------------------
const char* filename = "dbase";
enum Action {INSERT, DEL, INFO};
enum Dir {LEFT, RIGHT};
const int l_time = 20, l_type = 40, l_number = 12;
struct Fine{
char time[l_time];
char type[l_type];
float price;
Fine* next;
};
struct Node {
char number[l_number];
Fine* beg;
Node* left;
Node* right;
};
struct Data {
char number[l_number];
char time[l_time];
char type[l_type];
float price;
};
Node* descent(Node* p);
Node* first(Data data);
Data input(Action action);
int menu();
void print_node(const Node& node);
void print_dbase(Node* p);
Node* read_dbase(char* filename);
int read_fine(ifstream f, Data& data);
int remove_fine(Node* p,const Data& data);
void remove_fines(Node* p);
Node* remove_node(Node* root, Node* p, Node* parent, Dir dir);
Node* remove_tree(Node* p);
Node* search_insert(Node* root, const Data& data, Action action, Dir& dir, Node*& parent);
void write_dbase(ofstream f,const Node* root);
void write_node(ofstream f, const Node& node);
int main(int argc, char* argv[])
{
Node* p, *parent;
Node* root = read_dbase(filename);
ofstream fout;
Dir dir;
while (true){
switch (menu()){
case 1:
if(!root) root = first(input(INSERT));
else search_insert(root, input(INSERT), INSERT, dir, parent);
break;
case 2:
if(!root){cout << "ÁÀçà ïóñòà" << endl; break;}
Data data = input(DEL);
if (!(p=search_insert(root, data, DEL, dir, parent)))
cout << "Ñâåäåíèÿ îá à/ì îòñóòñòâóþò" << endl;
else
if (remove_fine(p, data) == 2
root = remove_node(root, p, parent, dir);
break;
case 3;
if(!root){ cout << "Áàçà ïóñòà" << endl; break;}
if(!(P =search_insert(root, input(INFO), INFO, dir, parent)))
cout << "Ñâåäåíèÿ îòñóòñòâóþò" << endl;
break;
case 4:
fout.open(filename);
if(!fout.is_open()) {
cout << "Îøèáêà îòêðûòèÿ ôàéëà " << filename << endl; return 1;
}
write_dbase(fout, root);
return 0;
case 5:
print_dbase(root);
break;
default;
cout << "Íàäî ââîñäèòü ÷èñëî îò 1 äî 4"<< endl;
break;
}
}
return 0;
}
Node* descent(Node* p){
Node* prev, *y = p->right;
if(!y->left) y->left = p->left;
else{
do{ prev = y; t=t->left;}
while(y->left);
y->left =p->left;
prev->left = y->right;
y->right = p->right;
}
return y;
}
Node* first(Data data){
Fine* beg = new Fine;
strncpy(beg->time, data.time, l_time);
strncpy(beg->type, data_type, l_type);
beg->price = data.price;
beg->next=0;
Node* root = new Node;
strncpy(root->number, data.number, l_number);
root->beg =beg;
root->left=root->right=0;
}
Data input(Action action){
Data data;
char buf[10], temp[3], temp2[3];
int day, month, hour, min;
cout << "Ââåäèòå íîìåð à/ì" << endl;
cin.getline(data.number, l_number);
if(action == INFO) return data;
do{
cout << "Ââåäèòå äàòó íàðóøåíèÿ â ôîðìàòå ÄÄ.ÌÌ,ÃÃ " <<endl;
cin >>buf;
strncpy(temp1, buf, 2); strncpy(temp2, &buf[3], 2)'
day = atoi(temp1); month = atoi(temp2);
}
while (!(day > 0 & day < 32 && month > 0 && month < 13));
strcpy(data.time, buf); strcat(data.time. " ");
do{
cout << "Ââåäèòå âðåìÿ íàðóøåíèÿ â ôîðìàòå ××:ÌÌ :" << endl;
cin >>buf;
strncpy(temp1, buf, 2); strncpy(temp2, &buf[3], 2)'
hour = atoi(temp1);
min = atoi(temp2);
}
while (!(hour >= 0 && hour < 24 && min >=0 && min < 60 ));
strcat(data.time, buf);
cin.get();
if (action == DEL) return data;
cout << "Ââåäèòå òèï íàðóøåíèÿ type" << endl;
cin.getline(data.type, l_type);
do{cout << "Ââåäèòå ðàçìåðû øòðàôà:" << endl;
cin >> buf;
}
while (!(data.price = (float)atof(buf)));
cin.get();
return data;
}
int menu(){
char buf[10];
int option;
do{
cout << "============================" << endl;
cout << "1 -Ââîä ñâåäåíèé î íàðóøåíèè" << endl;
cout << "2 -Ââîä ñâåäåíèé îá îïëàòå øòðàôà" << endl;
cout << "3-Ñïðàâêà";
cout << "4-Âûõîä" << endl;
cout << "============================" <<endl;
cin >> buf;
option = atoi(buf);}
while(!option);
cin.get();
return option;
}
void print_node(const Node& node){
cout << "Íîìåð à/ì " << node.number << endl;
Fine* pf = node.beg;
float summa = 0;
while (pf){
cout << "Âèä íàðóøåíèÿ " << pf->type << endl;
cout << "Äàòà è âðåìÿ " << pf-time;
cout << " Ðàçìåð øòðàôà " << pf->price <<endl;
}
void print_dbase(Node* p){
if(p){
print_node(*p);
print_dbase(p->left);
print_dbase(p->right);
}
}
Node * read_dbase (char* filename) {
Node * parent;
Dir dir;
Data data;
ifstream f(filename, ios::in| ios::nocreate);
if(!f) {
cout << "Íåò ôàéëà" << filtname << endl; return0;}
f.getline(data.number, l_number);
if(f.eof()) { cout << "Ïóñòîé ôàéë" << endl; return 0;}
read_fine(f, data);
Node* root = first(data);
while (!read_fine(f, data))
search_insert( root, data, INSERT, dir, parent);
while (f, getline(data, number, l_number)){
read_fine(f, data);
search_insert(root, data, INSERT, dit, parent);
}
return root;
}
int read_fine(ifstream f, Data& data){
f.getline(data.time, l_time);
if(data.time[0] == '=') return 1;
f.getline(data.type, l_type);
f->>data.price;
f.get();
return 0;
}
int remove_fine(Node * p, const Data& data){
Fine* prev, *pf = p->beg;
bool found = false;
while (pf && !found){
if(!strcmp(pf->time,data.time))
found = true;
else {
prev = pf;
pf = pf->next;
}
}
if (!found){
cout << "Ñâåäåíèÿ î íàðóøåíèè îòñóòñòâóþò." << endl;
return 1;
}
if(pf == p->beg)
p->beg = pf->next;
else
prev->next = pf->next;
delete pf;
if (!p->beg) return 2;
return 0;
}
Node* remove_node(Node* root, Node* parent, Dir dir){
Node *y;
if (!p->left) y=p->right;
else if (!p->right) y = p->left;
else y=descent(p);
if (dir == LEFT) parent->left = y;
else parent->right = y;
}
delete p;
return root;
}
Node* search_insert(Node* root, const Data& data, Action action, Dir& dir, Node*& parent){
Node* p =root;
bool found = false;
int cmp;
parent = 0;
while (p && !found){
cmp = strcmp(data.number, p->number);
if(!cmp) found = true;
else{
parent = p;
if (cmp < 0) { p=p->left; dir = LEFT;}
else { p = p->right; dir = RIGHT;}
}
}
if (action !=INSERT) return p;
Fine* pf = new Fine;
strncpy(pf->time, data.time, l_time);
strncpy(pf->type, data.type, l_type);
pf->price = data.price;
pf->next =0;
if (!found){
p= new Node;
strncpy(p->number, data.number, l_number);
p->beg = pf;
p->left = p->right = 0;
if(dir == LEFT)
parent->left = p;
else
parent->right =p;
}
else {
Fine* temp = p->beg;
while (temp->next) temp = temp->next;
temp->next= pf;
}
return p;
}
void write_dbase(ofstream f, const Node *p) {
if(p){
write_node(f, *p);
write_dbase( f, p->left);
write_dbase (f, p->right);
}
}
void write_node(ofstream f, const Node& node){
f << node.number << endl;
Fine* pf = node.beg;
while{pf}{
f << pf->time << endl <<pf->type <<endl << pf->price << endl;
pf =pf->next;
}
f<< "=" <<endl;
return 0;
}
//-------------------------------
De-visible
18.04.2008, 19:46
Срочно нужна помоч.
Помогите сделать задачи.
первая:
Номиналы россиыских рублей могут принимать значения 1,2,5,10,50,100,500,1000,5000. Копейки представить как 0.01 (1 копейка), 0.05 (5 копеек). 0.1 (10 копеек), 0.5 (50 копеек). Создать клаасс Money для работы с денежными суммами. Сумма должна быть представлена полями-номиналами, значениями которых должно быть количество купюр данного достоинства. Реализовать сложение сумм, вычитание сумм, деление сумм, деление суммы на дробное число, умножение на дробное число и операции соавнения. Дробная часть (копейки) при выводе на экран должны быть отделена от целой запятой.
Вторая задача.
Создать класс ModelWindow для работы с моделями экранных окон. В качестве полей задаются: заголовок окна, координаты левого верхного угла, размер по горизонтали, размер по вертикали, цвет окна, состояние "видимое/невидимое", состояние "с рамкой//без рамки". Координаты и размеры указываются в целых числах. Реализовать операции: передвижение окна по горизонтали.
Во всех этих заданиях, помимо указанных взадании операций, обязательно должны быть реализованы следующие методы:
# метод инициализации Init;
# ввод с клавиатуры Read;
# вывод на экран Display;
# преобразование в строку tostring.
Все задания должны быть реализованы тремя способами.
1. тип данных представляется структурой с необходимыми полями, а операции
реализуются как внешние функции, которые получают объекты данного типа в
качестве аргументов.
2. Как класс с закрытыми полями, где операции реализуются как методы класса.
3. инкапсулировать поля класса в независимой структуре и в ней реализовать методы Init(), Read(), Display(), tostring(). В основном классе должно быть поле данных, представленное объектом структурой.[/I]
Мог бы хоть написать какой язык программирования....
И думаю на врядли кто возьмется за это просто так....
Этот сайт не по решению домашних заданий....
advokat.holy
22.04.2008, 00:42
Люди помогите..... ПЛЛЛЗЗЗЗзззз!
Вот текст программы
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define n 10
#define IA for(i=0; i<n; i++)
void _max(int *a, int *max, int *imax);
void _min(int *a, int *min, int *imin);
void _SrAr(int *a, float *SrAr);
void main()
{
int a[n], max, imax,i;
int min, imin;
float SrAr;
randomize();
IA
a[i]=random(10);
printf("Zgenerovanuy masuv e takum:\n");
IA
printf("%d",a[i]);
puts("");
_max(a, &max, &imax);
printf("max=%d\n imax=%d\n",max,imax+1);
_min(a, &min, &imin);
printf("min=%d\n imin=%d\n", min,imin+1);
_SrAr(a, &SrAr);
printf("Seredne arufmetu4ne=%f", SrAr);
getch(); clrscr();
}
void _max(int *a, int *max, int *imax)
{
int i;
*max=a[0];
IA
if (*max<a[i])
{
*max=a[i];
*imax=i;
}
}
void _min(int *a, int *min, int *imin)
{
int i;
*min=a[0];
IA
if (a[i]<*min)
{
*min=a[i];
*imin=i;
}
}
void _SrAr(int *a, float *SrAr)
{
int k,i;
k=0;
SrAr=0;
IA
if (a[i]<0)
{
SrAr+=a[i];
k++;
}
if (k>0)
SrAr/=k;
}
Язык С, программа находит максимальный, минимальный, и их последовательные номера, да и еще среднее арифметическое сгенерированого массива.
Но она не паше тдоходит до SrAr/=k; Останавливаесться на к и компилятор арет Illegal use of pointer. Я понимая что что-то не так с указетелем, неправильное использование, но что? ПОМОГИТЕ Плз. Глюк токо в последней фу-и _SrAr.
2 лабы по массивам
1) Даны целочисленные массивы X и Y с разным количеством элементов. Найти
максимальные элементы в этих массивах среди элементов, имеющих нечетный
индекс. Ввод массивов выполнять в процедуре, а нахождение максимального
элемента - в функции.
2) Дан массив целых чисел. Получить новый массив из первоначального,
отбросив все нулевые элементы в этом массиве.
Также используя процедуры и функции
Помогите плиз, срочно надо, самому мне долго разбераться
2)
program vtoraia;
const n=10;
var x,t:integer; a,b:array [1..n] of integer;
begin
t:=1;
for x:=1 to n do
a[x]:=random (100);
for x:=1 to n do
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
for x:=1 to t do
writeln (b[x],' ');
readln
end.
спасибо конечно, но хотелось бы через процедуры и функции, там сложнее ><
Как умею) Главное что бы работала:)
Как умею) Главное что бы работала:)
с меня то будут полную требывать :rolleyes:
De-visible
22.04.2008, 22:31
2)
program vtoraia;
const n=10;
var x,t:integer; a,b:array [1..n] of integer;
begin
t:=1;
for x:=1 to n do
a[x]:=random (100);
for x:=1 to n do
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
for x:=1 to t do
writeln (b[x],' ');
readln
end.
У тебя ошибка:
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
Точнее:
then begin b[t]=a[x]
Там не "=" там ":=":)
Еще посмотри на свой код:
begin
t:=1;
for x:=1 to n do
a[x]:=random (100);
for x:=1 to n do
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
for x:=1 to t do
writeln (b[x],' ');
readln
end.
Точнее:
ЗАЧЕМ ТЫ ПИШЕШЬ ТАК:
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
Этот цикл( for x:=1 to t do
writeln (b[x],' ');)
Длится не до t, а до t-1;
Там не "=" там ":=":)
Гы, точно, пропустил. Каюсь :p
De-visible
22.04.2008, 22:59
спасибо конечно, но хотелось бы через процедуры и функции, там сложнее ><
Ничего сложного там нет:)
program vtoraia;
const n=10;
var x,t:integer; a,b:array [1..n] of integer;
begin
t:=1;
for x:=1 to n do
a[x]:=random (100);
for x:=1 to n do
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
for x:=1 to t do
writeln (b[x],' ');
readln
end.
Вот по его примеру составил функцию:
program MasSiv;
Function Massiv(a:array of integer;n:integer):string;{Это и есть наша функция:)}
var x,t:integer;
b:array [1..500] of integer;
begin
t:=1;
for x:=1 to n do
a[x]:=random (20);
for x:=1 to n do
if a[x]<>0 then
begin
b[t]:=a[x];
inc(t);{тоже самое что и t:=t+1}
end;
for x:=1 to n do
write (a[x],' ');{Выводим исходный массив(для сравнения)}
Writeln;
Writeln;
for x:=1 to t-1 do
write (b[x],' ');{Выводим полученный массив}
readln;
end;
const n=20;{n элементов в массиве}
var
a:array [1..n] of integer;
begin
Massiv(a,n);{Используем нашу функцию:)}
end.
De-visible, не совсем условию соответствует
Ввод массивов выполнять в процедуре, а нахождение максимального
элемента - в функции.
Еще вариант.
Задача 1
program Zodacha_one;
const
XSize = 5;
YSize = 11;
procedure fillmassive (numel : integer; var a : array of integer);
var
i : integer;
begin
randomize;
for i := 0 to numel - 1 do
a[i] := Random (100);
end;
function getmax (numel : integer; a : array of integer) : integer;
var
i, max : integer;
begin
i := 0;
max := a[i];
while i < numel do begin
if a [i] > max then
max := a [i];
i := i + 2;
end;
getmax := max;
end;
var
x : array [1..XSize] of integer;
y : array [1..YSize] of integer;
i, max : integer;
begin
fillmassive (XSize, x);
for i := 1 to XSize do
write (x[i], ' ');
writeln;
max := getmax (XSize, x);
writeln ('Max = ', max);
fillmassive (YSize, y);
for i := 1 to YSize do
write (y[i], ' ');
writeln;
max := getmax (YSize, y);
writeln ('Max = ', max);
end.
Задача 2
program ZodachaTwo;
const
Size = 30;
type
TMassive = array [0..Size - 1] of integer;
procedure FillMassive (numel : integer; var a : TMassive);
var
i : integer;
begin
Randomize;
for i := 0 to numel - 1 do
a[i] := Random (10);
end;
function NotNullCount (numel: integer; a : TMassive) : integer;
var
i, cnt : integer;
begin
cnt := 0;
for i := 0 to numel - 1 do
if a[i] <> 0 then
cnt := cnt + 1;
NotNullCount := cnt;
end;
function DropNulls (numel : integer; a : TMassive) : TMassive;
var
i, j : integer;
t : TMassive;
begin
i := 0;
j := 0;
while i < numel do begin
if a [i] <> 0 then begin
t[j] := a [i];
j := j + 1;
end;
i := i + 1;
end;
DropNulls := t
end;
var
x, y : TMassive;
i, count : integer;
begin
FillMassive (Size, x);
for i := 0 to Size - 1 do
write (x[i], ' ');
writeln;
y := DropNulls (Size, x);
count := NotNullCount (Size, x);
for i := 0 to count - 1 do
write (y[i], ' ');
writeln;
end.
krypt3r, спасибо большое :D
rubik-nerubik
23.04.2008, 15:53
Добрый вечер, вот собственно возникла проблема, курсовая , а я понимаю только Php"Написать программу, которая решает задачу резервирования оборудования сети. Номера аварийных узлов вводятся с клавиатуры," даже не понимаю в каком направлении идти.
дак напиши на РНР потом переведи на паскаль что ли?
главное разобраться в алгоритме
rubik-nerubik
23.04.2008, 17:42
так я написал, что понятия не имею с чего начинать, а так нужно на паскале))))
Bert_HoL
23.04.2008, 23:49
ааа...НАРОД помогите пожалуйста,буду настолько МЕГА благодарен!... =)))
" программf решающая квадратное уравнение ax(в квадрате) + bx+c=0
каэф abc что бы вводились с клавиатуры.
"
В ПАСКАЛЕ...
Очень прошу! =)
Зараннее благодарен.
program ebaat;
var a,b,c,d: real;
begin
write('Input abc:');
read(a,b,c);
d:=b*b-4*a*c;
if d<0 then writeln('Fuck you')
else begin writeln('x1=',(-b+sqrt(d))/(2*a));
writeln('x2=',(-b-sqrt(d))/(2*a)) end
end.
чет типа того)
writeln('x1=',(-b+sqrt(d))/2*a)
Гг, должно быть так
writeln('x1=',(-b+sqrt(d))/(2*a))
Если дискриминант меньше нуля, это не значит, что корней нет, это значит, что корни комплексные
Учим матчасть
ЗЫ. А хотя какие в школе комплексные числа :)
ЗЗЫ.
program equation;
procedure GetCoeff (var a : real; var b : real; var c : real);
begin
write ('Vvedite koefficienty cherez probel: ');
readln (a, b, c);
writeln (a : 0 : 3, 'x^2 + ', b : 0 : 3, 'x + ', c : 0 : 3);
end;
function GetDiscriminant (a, b, c : real) : real;
var
d : real;
begin
d := b * b - 4 * a * c;
GetDiscriminant := d;
end;
var
a, b, c, d, x1, x2 : real;
begin
GetCoeff (a, b, c);
d := GetDiscriminant (a, b, c);
if d > 0 then begin
x1 := (-b - sqrt (d)) / (2 * a);
x2 := (-b + sqrt (d)) / (2 * a);
writeln ('x1 = ', x1 : 0 : 3);
writeln ('x2 = ', x2 : 0 : 3);
end
else if d = 0 then begin
x1 := -b / (2 * a);
writeln ('x = ', x1 : 0 : 3);
end
else begin
x1 := -b / (2 * a);
x2 := sqrt (abs (d)) / (2 * a);
writeln ('x1 = ', x1 : 0 : 3, ' - i * ', x2 : 0 : 3);
writeln ('x2 = ', x1 : 0 : 3, ' + i * ', x2 : 0 : 3);
end;
end.
Помогите плз с лабой....а то ваще не секу.......
Разреженный массив на основе статического массива указателей
Массив на основе указателей используется для хранения разреженных массивов, эле-менты которых имеют размер намного больший, чем размер указателя.
Максимальный размер массива задается глобальной константой. Тип элементов раз-реженного массива данных - структура с полями: регистрационный номер, ФИО, ад-рес, ИНН.
Данные. Размер массива, массив указателей на данные.
Операции. Конструктор с параметром, инициализирующий размер массива и запол-няющий все элементы массива указателей значением 0. Установка значения элемента с индексом i. Получение значения элемента по его индексу. Подсчет количества непус-тых элементов в массиве данных. Вывод элементов массива. Операции инициализации размера массива и доступа к элементам массива по индексу должны выполняться с проверкой допустимости размера массива и индекса элемента
а можно переделать программы чтоб было ни через рандом, а по средствам ввода?
например сначало вывидиться *Введите кол-во элементов массива Х*, вводим кол-во, потом *Введите элементы:* вводим элементы, далее со вторым массивом так же и в конце выводится результат
з.ы. я еще не понел почему numel - 1 объясните пожалуйста)
De-visible
24.04.2008, 16:13
Процедура ввода,(ввод каждого элемента через Enter):
procedure FillMassive (numel : integer; var a : TMassive);
var
i : integer;
begin
writeln('Введи элементы массива');//
for i := 0 to numel - 1 do
readln(a[i]);{Можешь заменить на read}
end;
з.ы. я еще не понел почему numel - 1 объясните пожалуйста)
Потому что numel - это всего элементов, а мы начинаем с нуля.....
Можно записать вот так
(for i := 1 to numel do)
=============
P.S.
Не судьба не много книжки почитать?
Плюс ко всему:
4. Просьба не писать в темах в заголовке слово "задачка" и похожие, потому что это будет расцениваться как просьба написать лабу, для чего создана отдельная тема
Выбирайте содержательные названия тем
(c)By _Great_
Прочитать правила >> (https://forum.antichat.ru/thread38814.html)
во второй задаче ругаетсяна эту строчку
function DropNulls (numel : integer; a : TMassive) : TMassive;
что не существует типа TMassive, хотя он задан :confused:
Плюс ко всему:
(c)By _Great_
Прочитать правила >> (https://forum.antichat.ru/thread38814.html)[/QUOTE]
извените, я потом заметил эту тему, не удаляйте пожалуйста, еще не все вопросы решили
Гг, должно быть так
writeln('x1=',(-b+sqrt(d))/(2*a))
Если дискриминант меньше нуля, это не значит, что корней нет, это значит, что корни комплексные
Учим матчасть
ЗЫ. А хотя какие в школе комплексные числа :)
ЗЗЫ.
program equation;
procedure GetCoeff (var a : real; var b : real; var c : real);
begin
write ('Vvedite koefficienty cherez probel: ');
readln (a, b, c);
writeln (a : 0 : 3, 'x^2 + ', b : 0 : 3, 'x + ', c : 0 : 3);
end;
function GetDiscriminant (a, b, c : real) : real;
var
d : real;
begin
d := b * b - 4 * a * c;
GetDiscriminant := d;
end;
var
a, b, c, d, x1, x2 : real;
begin
GetCoeff (a, b, c);
d := GetDiscriminant (a, b, c);
if d > 0 then begin
x1 := (-b - sqrt (d)) / (2 * a);
x2 := (-b + sqrt (d)) / (2 * a);
writeln ('x1 = ', x1 : 0 : 3);
writeln ('x2 = ', x2 : 0 : 3);
end
else if d = 0 then begin
x1 := -b / (2 * a);
writeln ('x = ', x1 : 0 : 3);
end
else begin
x1 := -b / (2 * a);
x2 := sqrt (abs (d)) / (2 * a);
writeln ('x1 = ', x1 : 0 : 3, ' - i * ', x2 : 0 : 3);
writeln ('x2 = ', x1 : 0 : 3, ' + i * ', x2 : 0 : 3);
end;
end.
Да ты конечно крут, но комплексные корни (по крайней мере в универе) кроме как в жордановой форме в каноничском базисе или в нахождении инвариантных пространств оператора больше нигде не нужны...
ForNeVeR
25.04.2008, 05:54
Ну, мы на 2-м курсе политеха вовсю ими пользуемся... И по математике, и по электротехнике.
вот задачка:
для данного числа a > 0 найти такое натуральное n, для которого n! < a и (n+1)! > a
Че-то в голову ничего не приходит кроме тупого брута((
program laba;
function f (n : integer) : longint;
begin
if n = 0 then
f := 1
else
f := n * f (n - 1);
end;
var
i, n, a : longint;
begin
write ('Vvedite chislo a: ');
readln (a);
i := 0;
while 1 = 1 do begin
if (f (i) < a) and (f (i + 1) > a) then begin
writeln ('a = ', a);
writeln ('n = ', i);
writeln ('n! = ', f (i));
writeln ('(n + 1)! = ', f (i + 1));
break;
end;
inc (i);
end;
end.
вот еще задача:
Даны целочисленные массивы S и T с разным количеством элементов. Найти количество элементов в этих массива равных первому элементу массива S. Ввод массивов выполнять в процедуре, а вычисление количества – в функции.
Bert_HoL
25.04.2008, 17:07
Спасибо за то что есть добрые люди на свете =) По плюсигу вам =)
Но вот есть загвоздка:
"ааа...НАРОД помогите пожалуйста,буду настолько МЕГА благодарен!... =)))
" программf решающая квадратное уравнение ax(в квадрате) + bx+c=0
каэф abc что бы вводились с клавиатуры.
"
В ПАСКАЛЕ. " -
Если а равно 0 то он не решит...Помогите пожалуйста =)) БУД НУ ОЧЕНЬ ВЕСЬМА БЛАГОДАРЕН! =)Зарание спасибо.
rubik-nerubik
25.04.2008, 17:25
люди выручайте! нужно следующее:
"
Программа которая решает задачу резервирования оборудования сети, номера "аварийных" узлов вводяться с клавиатуры.
"
оч срочно, помогите
в чём заключается задача резервирования оборудования сети? =)
вот еще задача:
Даны целочисленные массивы S и T с разным количеством элементов. Найти количество элементов в этих массива равных первому элементу массива S. Ввод массивов выполнять в процедуре, а вычисление количества – в функции.
паскаля нет так что не проверял, но должно работать
program lab;
var
S: array [1..10] of integer;
T: array [1..15] of integer;
procedure Addarray;
var
j: integer;
begin
for j := 1 to 10
S[j] := random[10];{заполнение}
for j := 1 to 15
T[j] := random[10];{ещё одно =)}
end;
function GetCh: integer;
var
c, i: integer;
begin
c := S[1];
Result := 0;
for i := 1 to 15 do
if T[i] = c then
inc(Result);
end;
begin
Addarray;
writeLN("Kolichstvo=",GetCh);
end.
De-visible
25.04.2008, 18:46
Спасибо за то что есть добрые люди на свете =) По плюсигу вам =)
Но вот есть загвоздка:
"ааа...НАРОД помогите пожалуйста,буду настолько МЕГА благодарен!... =)))
" программf решающая квадратное уравнение ax(в квадрате) + bx+c=0
каэф abc что бы вводились с клавиатуры.
"
В ПАСКАЛЕ. " -
Если а равно 0 то он не решит...Помогите пожалуйста =)) БУД НУ ОЧЕНЬ ВЕСЬМА БЛАГОДАРЕН! =)Зарание спасибо.
Program Sqrt1;
Var A, B, C, D, X1, X2 : Real;
Begin
Writeln ('Введите коэффициенты квадратного уравнения вида ');
Readln (A,B,C);
D:=B*B-4*A*C;
if A<>0 then Begin
If D<0 Then Writeln ('Корней нет! ')
Else
Begin
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
If X1<>X2 then
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)
else Writeln (' Корень один ','X=',X2:8:3)
End;
End
else
Writeln('Решений нет');
Readln;
End.
Вот самый примитивный способ....
Program Sqrt1;
Var A, B, C, D, X1, X2 : Real;
Begin
Writeln ('Введите коэффициенты квадратного уравнения вида ');
Readln (A,B,C);
D:=B*B-4*A*C;
if A<>0 then Begin
If D<0 Then Writeln ('Корней нет! ')
Else
Begin
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
If X1<>X2 then
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)
else Writeln (' Корень один ',X=',X2:8:3)
End;
End
else
Writeln('Решений нет');
End.
подчеркнутое красным лишнее ;)
подчеркнутое красным лишнее ;)
Чего эт он лишний? :)
Program Sqrt1;
Var A, B, C, D, X1, X2 : Real;
Begin
Writeln ('Введите коэффициенты квадратного уравнения вида ');
Readln (A,B,C);
D:=B*B-4*A*C;
if A<>0
then
Begin
If D<0 Then Writeln ('Корней нет! ')
Else
Begin
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
If X1<>X2 then
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)
else Writeln (' Корень один ',X=',X2:8:3)
End;
End
else
Writeln('Решений нет');
End.
3 begin'a и 3 end'a, вроде все норм =)
De-visible
25.04.2008, 21:53
подчеркнутое красным лишнее ;)
ЛОЛ....
Теперь Begin без End???
Будь внимательнее...:)
criz, De-visible, да не заметил каюсь, но он не закрыт точкой с запятой!
De-visible
25.04.2008, 22:22
criz, De-visible, да не заметил каюсь, но он не закрыт точкой с запятой!
:D :D :D
ЛОЛ
Ты не перегрелся мальчик?
Перед Else не ставят точку с запятой!
Учи паскаль!!!!!!! :confused:
паскаля нет так что не проверял, но должно работать
нее, всяко не правельно в функциях и працедурах даже параметры не заданы, дальше можно даже не смотреть
довел сурс до компила, все правильно вроде, лень результаты проверять
Program Sqrt1;
uses crt;
Var A, B, C, D, X1, X2 : Real;
Begin
clrscr;
Writeln ('vvedite a ');
Readln (A);
writeln ('vvedi b');
readln (B);
writeln('vvedi c');
readln(c);
D:=B*B-4*A*C;
if A<>0
then
Begin
If D<0 Then Writeln ('korney net ')
Else
Begin
X1:=(-B+SQRT(D))/2*A;
X2:=(-B-SQRT(D))/2*A;
If X1<>X2 then
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)
else Writeln (' koren ','X=',X2:8:3);
End;
End
else
Writeln('');
readln;
End.
Program Sqrt1;
Var A, B, C, D, X1, X2 : Real;
Begin
Writeln ('Введите коэффициенты квадратного уравнения вида ');
Readln (A,B,C); {имхо тупо!}
D:=B*B-4*A*C;
if A<>0 then Begin
If D<0 Then Writeln ('Корней нет! ')
Else
Begin
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
If X1<>X2 then
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)
else Writeln (' Корень один ',X=',X2:8:3)
End;
End
else
Writeln('Решений нет');
{в школе учили тут "readln;" ставить!}
End.
у тебя не могло это все компилится!
насчет того, чтобы выделиться, нах оно надо, у меня другого геморроя полно.
De-visible
25.04.2008, 23:25
Program Sqrt1;
Var A, B, C, D, X1, X2 : Real;
Begin
Writeln ('Введите коэффициенты квадратного уравнения вида ');
Readln (A,B,C); {имхо тупо!}
D:=B*B-4*A*C;
if A<>0 then Begin
If D<0 Then Writeln ('Корней нет! ')
Else
Begin
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
If X1<>X2 then
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)
else Writeln (' Корень один ',X=',X2:8:3)
End;
End
else
Writeln('Решений нет');
{в школе учили тут "readln;" ставить!}
End.
у тебя не могло это все компилится!
насчет того, чтобы выделиться, нах оно надо, у меня другого геморроя полно.
Во-первых:
Это не мой код!Мой код самый первый...(В этом не хватает ковычки вот здесь:else Writeln (' Корень один ',X=',X2:8:3)
должно быть: 'X=')
Это все компилится, проверено 8 раз!
Во-вторых:
/2/a=/(2*a)
Но никак ни X1:=(-B+SQRT(D))/2*A;
Эта запись неправильна, уравнения он у тебя будет решать не правильно!Потому что
Ты сначала делишь на 2 а потом результат умножаешь на "a" - это неверно!
Со знанием математики у тебя тоже фигово!
И прекрати спорить, признай свои ошибки, успокойся...и учи паскаль+математика, давай не будем превращать топик в мусорку!()
Readln (A,B,C); {имхо тупо!} - я же сказал что код простой, примитив....
У тебя в сурсе было в формуле дискриминанта поделить на 2, я это и выделил красным! Со знанием математики у меня нормально! Спорить буду до последнего вздоха, признаюсь, сначала не заметил все ошибки в твоем сурсе, паскаль давно и благополучно забыл, с++ учу. Насчет последнего, согласен...
Bert_HoL
26.04.2008, 02:07
Парни йа запутался,так верно йа так понял
Program Sqrt1;
Var A, B, C, D, X1, X2 : Real;
Begin
Writeln ('Vvedite koificenti kvodratnogo uravnenia ');
Readln (A,B,C);
D:=B*B-4*A*C;
if A<>0 then Begin
If D<0 Then Writeln ('Kornei net! ')
Else
Begin
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
If X1<>X2 then
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)
else Writeln (' Koren ODIN ','X=',X2:8:3)
End;
End
else
Writeln('Reshenii net');
Readln;
End.
"
? =) да?
De-visible
26.04.2008, 02:33
Да так верно:)
вот зараза у нас курсовая по экселю а я его уже не открывалс класса года так 4 все забыл может мне кто нить поможит?
помогите с контрольной плиз
Требования к выполнение контрольной работы:1) Каждый пункт меню и вывод текста меню выполняется в подпрограмме.
2) Если в начале работы сразу выбирается пункт ниже первого (массив не задан), получить массив генерацией его элементов в интервале от –100 до 100
3) После выполнения каждого пункта меню (кроме последнего), программа снова возвращается в меню.
4) Вычисление суммы, количества, произведения, минимума или максимума выполняется с помощью функции.
5) При сдаче контрольной работы преподавателю, вывести промежуточные результаты в окне Watch в пошаговом режиме.
Текст задания
Создать программу, обеспечивающую работу следующих пунктов меню.
1) Ввод массива целых чисел.
2) Вывод массива в строку.
3) Найти максимальный элемент. Заменить все положительные элементы, кратные пяти на максимальный элемент.
4) Конец работы.
у меня просто сессия скоро, долгов много накопилось, за те за дачи большое спасибо, сдал их :p
De-visible
26.04.2008, 15:12
помогите с контрольной плиз
Требования к выполнение контрольной работы:1) Каждый пункт меню и вывод текста меню выполняется в подпрограмме.
2) Если в начале работы сразу выбирается пункт ниже первого (массив не задан), получить массив генерацией его элементов в интервале от –100 до 100
3) После выполнения каждого пункта меню (кроме последнего), программа снова возвращается в меню.
4) Вычисление суммы, количества, произведения, минимума или максимума выполняется с помощью функции.
5) При сдаче контрольной работы преподавателю, вывести промежуточные результаты в окне Watch в пошаговом режиме.
Текст задания
Создать программу, обеспечивающую работу следующих пунктов меню.
1) Ввод массива целых чисел.
2) Вывод массива в строку.
3) Найти максимальный элемент. Заменить все положительные элементы, кратные пяти на максимальный элемент.
4) Конец работы.
у меня просто сессия скоро, долгов много накопилось, за те за дачи большое спасибо, сдал их :p
Могу решить ICQ#: 223333575....()
Парни йа запутался,так верно йа так понял
Program Sqrt1;
Var A, B, C, D, X1, X2 : Real;
Begin
Writeln ('Vvedite koificenti kvodratnogo uravnenia ');
Readln (A,B,C);
D:=B*B-4*A*C;
if A<>0 then Begin
If D<0 Then Writeln ('Kornei net! ')
Else
Begin
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
If X1<>X2 then
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)
else Writeln (' Koren ODIN ','X=',X2:8:3)
End;
End
else
Writeln('Reshenii net');
Readln;
End.
"
? =) да?
Да так верно
ор, формула нахождения неизвестного через дискриминант как была неправильной так и осталось!
ор, формула нахождения неизвестного через дискриминант как была неправильной так и осталось!
Ты уверен?
'''''''''''''''''''''''''''''''''''''''-b+-sqrt(b^2 - 4ac)
Как меня учили, x =-----------------------
'''''''''''''''''''''''''''''''''''''''''''''''''' 2a
De-visible
26.04.2008, 16:47
ор, формула нахождения неизвестного через дискриминант как была неправильной так и осталось!
Ты просто /\/\UD@!<
Учи математику, говорю еще раз!
Вот:
https://forum.antichat.ru/showthread.php?p=666170#post666170
Я прав.....а ты напокупай себе книжек!
И прочитай это
http://ru.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D 0%BE%D0%B5_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0 %BD%D0%B8%D0%B5
Ты уверен?
'''''''''''''''''''''''''''''''''''''''-b+-sqrt(b^2 - 4ac)
Как меня учили, x =-----------------------
'''''''''''''''''''''''''''''''''''''''''''''''''' 2a
desTiny, он просто ничерта не знает, вот и несет всякую чушь!
Еще он говорит что мой код не компилится!
Ты уверен?
'''''''''''''''''''''''''''''''''''''''-b+-sqrt(b^2 - 4ac)
Как меня учили, x =-----------------------
'''''''''''''''''''''''''''''''''''''''''''''''''' 2a
корень из дискриминанта =sqrt(sqrb-(4*a*c))
потом:
x1:=((-b)+(корень из дискриминанта))/2*a
так же находится и х2 с тем отличием что корень из дискриминанта вычитается из b2
p.s. могу ошибиться учитывал что sqr возводит в квадрат sqrt корень
корень из дискриминанта =sqrt(sqrb-(4*a*c))
потом:
x1:=((-b)+(корень из дискриминанта))/2*a
так же находится и х2 с тем отличием что корень из дискриминанта вычитается из b2
p.s. могу ошибиться учитывал что sqr возводит в квадрат sqrt корень
эх... тебе не надоело бессмысленно спорить, а?
Повторяю слова ДеВизибла: x/2*a не равно x/(2*a); а
x/(2*a) = (x/2)/a = x/2/a
De-visible
26.04.2008, 17:05
Garfi, тебе сюда, давай здесь не будем флудить!
https://forum.antichat.ru/showthread.php?p=666170#post666170
desTiny +...
x/2*a не равно x/(2*a); а
x/(2*a) = (x/2)/a = x/2/2
епть...перепутал надо .../(2*а)
в процессе отладки б разобрался
x/2*a не равно x/(2*a); а
x/(2*a) = (x/2)/a = x/2/2
нефиг формулу коверкать!
епть...перепутал надо .../(2*а)
в процессе отладки б разобрался
нефиг формулу коверкать!
ты про /2/2? ну извини - меня поняли :)
Могу решить ICQ#: 223333575....()
я так понел что не бесплатно?
De-visible: ты напиши точнее задание, а то не все понятно...я поэтому попросил в аську постучать...
De-visible
27.04.2008, 15:18
вот зараза у нас курсовая по экселю а я его уже не открывалс класса года так 4 все забыл может мне кто нить поможит?
Что именно тебя интересует?
Порядок выполнения контрольной работы:
1. Прочитать текст задания.
2. Определить исходные данные и результат.
3. Придумать тестовый пример (20 элементов массива) и получить для него результат.
4. Задать имена переменных, процедур и функций.
5. Разработать блок-схему основной программы.
6. Разработать блок-схемы подпрограмм.
7. Написать программу и отладить программу.
8. Вывести в окне Watch промежуточные значения
9. Выполнить программу для тестового примера в пошаговом режиме.
10. Оформить отчет.
Требования к выполнение контрольной работы:
1. Каждый пункт меню и вывод текста меню выполняется в подпрограмме.
2. Если в начале работы сразу выбирается пункт ниже первого (массив не задан), получить массив генерацией его элементов в интервале от –100 до 100
3. После выполнения каждого пункта меню (кроме последнего), программа снова возвращается в меню.
4. Вычисление суммы, количества, произведения, минимума или максимума выполняется с помощью функции.
5. При сдаче контрольной работы преподавателю, вывести промежуточные результаты в окне Watch в пошаговом режиме.
Текст задания
Создать программу, обеспечивающую работу следующих пунктов меню.
1. Ввод массива целых чисел.
2. Вывод массива в строку.
3. Найти максимальный элемент. Заменить все положительные элементы, кратные пяти на максимальный элемент.
4. Конец работы.
Ну вот как бы весь текст контрольной
47726573684e
27.04.2008, 20:38
Построить график функции f(x) = cos(x)∙ctgx. Вот и вся задача ... Поверьте и более сложные решал, но как это незнаю эх говрили мне учи математику :)
De-visible
27.04.2008, 20:56
Построить график функции f(x) = cos(x)∙ctgx. Вот и вся задача ... Поверьте и более сложные решал, но как это незнаю эх говрили мне учи математику :)
Здесь про графику написано:) [я пока занят]
Графика в паскале (http://rsc-team.ru/cgi-bin/index.pl?rzd=2&group=lection&ind=21)
Графика в паскале{Вставки асм} (http://nappy.it-forge.net/article_68.html)
Omg, вы тут уже несколько страниц решаете простое квадратное уравнение :-d
Garfi, хоть ты и клянешься, что математику хорошо знаешь, эта ссылка (http://www.math.ru/dic/37) + элементарные размышления скажут тебе, что /2*a - неверное переложение формулы на код языка програмирования. Верные - /(2*a), /2/a, /a/2.
program Sqrt1;
var
A, B, C, D, X1, X2 : Real;
begin
Writeln ('Vvedite koificenti kvodratnogo uravnenia ');
Readln (A, B, C);
D := B * B - 4 * A * C;
if A <> 0 then begin
if D < 0 then
Writeln ('Kornei net! ')
else begin
X1 := (-B + sqrt (D)) / 2 / A;
X2 := (-B - SQRT (D)) / 2 / A;
if X1 <> X2 then
writeln ('X1=', X1 : 8 : 3, ' X2=', X2 : 8 : 3)
else
writeln (' Koren ODIN ','X=',X2:8:3)
end;
end else
writeln('Reshenii net');
//Readln;
end.
Смотрите код внимательно, че вы тут написали. Если а не равно нулю, выполнить код, иначе написать "Решений нет"? о_О Если х1 = х2, то корень один? Верно, только не так надо, а сравнивая дискриминант с нулем. Но это мелочь.
Не совсем вижу смысл обрабатывать введенные данные при а = 0, ибо это уже не квадратное уравнение, а линейное, но раз уж просите, то вот код, и без комплексных чисел.
program Sqrt1;
var
A, B, C, D, X1, X2 : Real;
begin
Writeln ('Vvedite koificenti kvodratnogo uravnenia ');
Readln (A, B, C);
///writeln (a : 8 : 3, ' * x^2 ', b : 8 : 3, ' * x ', c : 8 : 3);
if A <> 0 then begin
D := B * B - 4 * A * C;
if D < 0 then
Writeln ('Kornei net! ')
else if D > 0 then begin
X1 := (-B + sqrt (D)) / 2 / A;
X2 := (-B - SQRT (D)) / 2 / A;
writeln ('X1=', X1 : 8 : 3, ' X2=', X2 : 8 : 3);
end
else
writeln ('X = ', (-B / 2 / A) : 8 : 3);
end else
writeln ('Lineinoe uravnenie. Koren X = ', (-C / B) : 8 : 3);
//Readln;
end.
De-visible:Уравнение - я привел самый простой пример:)
47726573684e
28.04.2008, 10:24
Да знаю я графику ! Блин Я незнаю как f(x) = cos(x)∙ctgx нарисовать, ладно бы просто синусойда или косинусойда была а тут хз .... Ну лана помучу сам , извиняюсь за беспокойство....
47726573684e, попробуй преобразовать выражение, например, расписать котангенс
хватит флудить в моей теме )
лучше мне б с контрольной помогли :p
De-visible:почему флуд? тема задачи по паскале
Здравствуйте, помогите пожалуйста с задачей по двумерному массиву:
Дан двумерный массив целых чисел из 4 столбцов и 3 строк. Найти сумму элементов стоящих до первого нуля. Просмотр вести по строкам. Заменить элементы, стоящие после последнего нуля на эту сумму. Вывести массив по строкам до и после замены.
Здравствуйте, помогите пожалуйста с задачей по двумерному массиву:
на чём писать то?
Вообщем имеется задачка...
Даны матрицы u(m*n),v(m*n).составить матрицу c(m*n) по правилу:c(ij)=u(ij)+v(ij) для столбцов с четными индексами,c(ij)=u(ij)-v(ij) для столбцов с нечетными инд.исходные данные прочитать из файла.результаты вывести в новый файл
Над сделать...в голове 0 ...а девушка загрузила..)))
зы. паскаля вообще незнаю :D
De-visible:конечно ниже была тема:Задачи по паскаль
De-visible:почему флуд? тема задачи по паскале
я забыл добавить мои задачи ))
De-visible: Ну раз ты создал эту тему, пусть в ней новички задают вопросы по Паскаль, да бы не засорять раздел!
Доброго времени суток.
Нужен простой Браузер на Delphi с рандомным авто заполнением определенной интернет формы из данных в файле.
на чём писать то?
паскаль
De-visible
28.04.2008, 22:00
Порядок выполнения контрольной работы:
1. Прочитать текст задания.
2. Определить исходные данные и результат.
3. Придумать тестовый пример (20 элементов массива) и получить для него результат.
4. Задать имена переменных, процедур и функций.
5. Разработать блок-схему основной программы.
6. Разработать блок-схемы подпрограмм.
7. Написать программу и отладить программу.
8. Вывести в окне Watch промежуточные значения
9. Выполнить программу для тестового примера в пошаговом режиме.
10. Оформить отчет.
Требования к выполнение контрольной работы:
1. Каждый пункт меню и вывод текста меню выполняется в подпрограмме.
2. Если в начале работы сразу выбирается пункт ниже первого (массив не задан), получить массив генерацией его элементов в интервале от –100 до 100
3. После выполнения каждого пункта меню (кроме последнего), программа снова возвращается в меню.
4. Вычисление суммы, количества, произведения, минимума или максимума выполняется с помощью функции.
5. При сдаче контрольной работы преподавателю, вывести промежуточные результаты в окне Watch в пошаговом режиме.
Текст задания
Создать программу, обеспечивающую работу следующих пунктов меню.
1. Ввод массива целых чисел.
2. Вывод массива в строку.
3. Найти максимальный элемент. Заменить все положительные элементы, кратные пяти на максимальный элемент.
4. Конец работы.
Ну вот как бы весь текст контрольной
X - Элементов в массиве:
program labor_1;
const
X=20;
Далее процедура ввода:
procedure vvod(var a:array of integer);
var
predel:-100..100;
i:integer;
Begin
RANDOMIZE;
For i:=1 to X Do a:=random(predel);
End;
Далее процедура вывода:
procedure print(var a:array of integer);
var
i:integer;
Begin
Writeln;
For i:=1 to X Do Write(a[i],' ');
End;
Функция нахождения максимального элемента:
function max(a:array of integer):integer;
var
i:integer;
buff:integer;
Begin
buff:=-100;
For i:=1 to X Do If a[i]>buff then buff:=a[i];
Result:=buff;
End;
Далее процедура замены:
procedure zamena(a:array of integer);
var
i:integer;
Begin
For I:=1 to X Do
Begin
If a[i]>0 then
If (a[i] mod 5) = 0 then a[i]:=max(a);{используем вышеописанную функцию}
End;
End;
Затем задаем массив:
var
a:array [1..X] of integer;
[I]P.S. я расписал процедуры и функции, что не так переделай, ничего сложного здесь нет, код составить теперь труда не составит:)
Omg, вы тут уже несколько страниц решаете простое квадратное уравнение :-d
Garfi, хоть ты и клянешься, что математику хорошо знаешь, эта ссылка (http://www.math.ru/dic/37) + элементарные размышления скажут тебе, что /2*a - неверное переложение формулы на код языка програмирования. Верные - /(2*a), /2/a, /a/2.
program Sqrt1;
var
A, B, C, D, X1, X2 : Real;
begin
Writeln ('Vvedite koificenti kvodratnogo uravnenia ');
Readln (A, B, C);
D := B * B - 4 * A * C;
if A <> 0 then begin
if D < 0 then
Writeln ('Kornei net! ')
else begin
X1 := (-B + sqrt (D)) / 2 / A;
X2 := (-B - SQRT (D)) / 2 / A;
if X1 <> X2 then
writeln ('X1=', X1 : 8 : 3, ' X2=', X2 : 8 : 3)
else
writeln (' Koren ODIN ','X=',X2:8:3)
end;
end else
writeln('Reshenii net');
//Readln;
end.
Смотрите код внимательно, че вы тут написали. Если а не равно нулю, выполнить код, иначе написать "Решений нет"? о_О Если х1 = х2, то корень один? Верно, только не так надо, а сравнивая дискриминант с нулем. Но это мелочь.
Не совсем вижу смысл обрабатывать введенные данные при а = 0, ибо это уже не квадратное уравнение, а линейное, но раз уж просите, то вот код, и без комплексных чисел.
program Sqrt1;
var
A, B, C, D, X1, X2 : Real;
begin
Writeln ('Vvedite koificenti kvodratnogo uravnenia ');
Readln (A, B, C);
///writeln (a : 8 : 3, ' * x^2 ', b : 8 : 3, ' * x ', c : 8 : 3);
if A <> 0 then begin
D := B * B - 4 * A * C;
if D < 0 then
Writeln ('Kornei net! ')
else if D > 0 then begin
X1 := (-B + sqrt (D)) / 2 / A;
X2 := (-B - SQRT (D)) / 2 / A;
writeln ('X1=', X1 : 8 : 3, ' X2=', X2 : 8 : 3);
end
else
writeln ('X = ', (-B / 2 / A) : 8 : 3);
end else
writeln ('Lineinoe uravnenie. Koren X = ', (-C / B): 8 : 3);
//Readln;
end.
вы не задумывались почему a<>0 ? =) зачем изобретать велосипед, достаточно выполнить основные условия задачи. В частности когда а и б = 0 вылезет ошибка деления на 0 =)
Для варианта b = 0 мне лень стало добавлять код :)
/ps и // - формат С, в паскале {}
Если брать Turbo Pascal, то там, кроме {}, есть еще и (* *) :) А делфи и фрипаскаль нормально реагируют на // в качестве начала комментария
выручайте...Имеется непустая последовательность произвольных натуральных чисел (чисел не более 50), за которой следует нуль. Не используя массивов, вывести в строку поряд¬ковые номера максимальных чисел последовательности. Выполнить проверку пра¬вильности ввода информации...
Язык С или С++...только не Vc
Dober'man
спасибо
вот дописала немного, вдруг кому надоuses crt;
const x=3; y=4;
var a,b: array[1..x,1..y] of integer;
i,j,n: integer;
begin
clrscr;
n:=0;
writeln('Введите двумерный массив: ');
for i:=1 to x do
for j:=1 to y do
begin
read(a[i,j]);
b[i,j]:=a[i,j];
n:=n+a[i,j];
if a[i,j]=0 then b[i,j]:=n;
end;
writeln('Начальный массив: ');
for i:=1 to x do
begin
writeln;
for j:=1 to y do
write (a[i,j]:7);
end;
readln;
writeln;
writeln('Массив после изменений: ');
for i:=1 to x do
begin
writeln;
for j:=1 to y do
write (b[i,j]:7);
end;
readln;
end.
выручайте...Имеется непустая последовательность произвольных натуральных чисел (чисел не более 50), за которой следует нуль. Не используя массивов, вывести в строку поряд¬ковые номера максимальных чисел последовательности. Выполнить проверку пра¬вильности ввода информации...
Язык С или С++...только не Vc
Что-то, по-моему, без массивиов это невозможно... Хотя бы потому, что нам надо где-то хранить саму нашу последовательность...
Delimiter
29.04.2008, 20:19
хмммм.... максимальных чисел??? Это как??? Их много чтоль...
и в чем фишка???
char str[100]; // если контроль ввода то масив под
//строку символов должен существовать АКСИОМА!
char rez[100]; //строка для вывода результата
char smb;
int schetchik=0;
int index=0;
int max=0;
ex=0;
while(ex==0)
{
-->ввод символа в smb метод ввода твой на выбор
switch(smb)
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
str[index]=smb;
index++
break;
// case ' ': можно разремировать эти строки но тогда
// case ',': нужно увеличивать размер под буфер ввода str
// но позволит использовать пробел и запятую
// как разделители между числами
case 0x0d:
str[index]=0;
if(strlen(str)>0)
{
if(atoi(str)==max)
{
strcat(rez,itoa(schetchik,rez+80,10));
strcat(rez," ");
}
else
if(atoi(str)>max)
{
max=atoi(str);
strcpy(rez,itoa(schetchik,rez+80,10));
strcat(rez," ");
}
schetchik++;
if(atoi(str)==0)
ex=1;
}
index=0;
}
}
printf("%s",rez);
ЧИСЛО СЧИТАЕТСЯ ВВЕДЕННЫМ ЕСЛИ НАЖАТ ЭНТЕР!
(или так же запятая и пробел если разремируешь и
хотя бы сделаешь str[1000]
спасибо, но я уже написал используя основы De-visible
получилось примерно так Program Kontra2;
Uses crt;
type mas= array[1..100] of integer;{массив который мы будем анализировать}
var
i,Nmax,menu,n:integer;
A:Mas;
f:boolean;
Procedure vvod( var A:Mas; var n:integer; var f:boolean); {Ввод массива}
Var I: integer;
Begin
writeln('Сколько элементов массива? ');
readln(n);
for I:=1 to n do
Begin
Write('Введите элемент # ',i,' ');
Readln(A[i]);
end;
f:=true;
end;
function max(A:mas; n:integer):integer;
var
i:integer;
buff:integer;
Begin
buff:=A[1];
For i:=1 to n Do
If A[i]>buff then buff:=A[i];
max:=buff;
End;
procedure zamena(var A:mas; var n:integer; var max:integer);
var
i:integer;
Begin
For i:=1 to n Do
Begin
If A[i]>0 then
If (A[i] mod 5) = 0 then A[i]:=max;
End;
End;
procedure randmas(var A:mas; var n:integer; var f:boolean); {создание случайного массива}
var
i:integer;
begin
i:=1;
write('из скольки элементов хотите массив? ');
readln(n);
for i:=1 to n do
begin
A[i]:=random(200);
end;
f:=true;
end;
Procedure Vuvod( A:Mas; var n:integer); {Вiвод массива}
Var I: integer;
Begin
for I:=1 to n do
Begin
Write(A[i],' ');
end;
writeln;
end;
Begin
f:=false;
randomize;
while true do
Begin
clrscr;
{ввожу массивы}
writeln('1. Ввод массива целых чисел');
writeln('2. Вывод массива случайных целых чисел');
writeln('3 Найти максимальный элемент');
writeln(' Заменить все положительные элементы кратные 5 на максимальный');
writeln('4. Завершить работу');
write('Ваш выбор: ');
readln(menu);
case menu of
1: begin
vvod(A,n,f);
readln;
end;
2: begin
randmas(A,n,f);
vuvod(A,n);
readln;
end;
3: begin
vuvod(A,n);
Nmax:=max(A,n);
zamena(A,n,Nmax);
vuvod(A,n);
readln;
end;
4: break;
else writeln('!!!ВЫБЕРИТЕ ВЕРHЫЙ ПУHКТ МЕHЮ (1-4)!!!');
readln;
end;
end;
end.
De-visible:А он не твою задачу решал....Он решил задачу для Stern.
Что-то, по-моему, без массивиов это невозможно... Хотя бы потому, что нам надо где-то хранить саму нашу последовательность...
Можно было и с массивами,преподу на ето пох)))))
Delimiter а тебе +++++ от меня)))))))
ещё подкину задачку Нужна прога по переводу чисел из 2,8,10,16 систем счисления и обратно...что то типа этого http://rapidshare.com/files/111430028/perev.exe.html
Так же на С или С++ ))))))))))))
Код на языке C, преобразующий число из одной системы счисления в другую (а не только 2, 8, 10, 16). Принимает в качестве аргументов число (целое положительное), его систему счисления и систему счисления, в которую надо преобразовать. Сорри, лень оптимизить =)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MAXSIZE 255
char *ReverseStr (char *s)
{
int i = 0, j, len;
char s2 [MAXSIZE];
len = strlen (s);
j = len - 1;
bzero (s2, len + 1);
while (j >= 0)
{
s2 [i++] = s [j--];
//i++;
//j--;
}
return s2;
}
int convertToDec (char *in, int in_ss)
{
int len = strlen (in), i, j = 0;
int N = 0;
i = len - 1;
printf ("i = %d\n", i);
while (i >= 0)
{
if ((in [i] >= '0') && (in [i] <= '9'))
in [i] -= 0x30;
if ((in [i] >= 'a') && (in [i] <= 'f'))
in [i] -= 0x57;
N += in [i] * (int) (pow (in_ss, j));
i--;
j++;
}
//printf ("%d\n", N);
return N;
}
char *convert (int number, int out_ss)
{
int ost = 1, i = 0;
char out_num [MAXSIZE];
memset (out_num, '\0', MAXSIZE);
while (number >= out_ss)
{
ost = number % out_ss;
number = (int) (number / out_ss);
if ((ost >= 0) && (ost <= 9))
out_num [i] = ost + 0x30;
else if ((ost >= 10) && (ost <= 15))
out_num [i] = ost + 0x57;
if (number < out_ss)
{
i++;
if ((number >= 0) && (number <= 9))
out_num [i] = number + 0x30;
if ((number >= 10) && (number <= 15))
out_num [i] = number + 0x57;
//out_num [i] = number + 0x30;
}
//printf ("Number: %d\tOst: %d\n", number, ost);
i++;
}
//printf ("Out: %s\n", ReverseStr (out_num));
return ReverseStr (out_num);
}
int main (int argc, char** argv)
{
char *in_number, *out_number;
int in_system, out_system, dec_number;
if (argc != 4)
{
printf ("Usage: %s [number input_system output_system]\n", argv [0]);
return 0;
}
in_number = argv [1];
in_system = atoi (argv [2]);
out_system = atoi (argv [3]);
if (in_system == 10)
dec_number = atoi (in_number);
else
dec_number = convertToDec (in_number, in_system);
//printf ("DEC: %d\n", dec_number);
printf ("Input number: %s\n", in_number);
printf ("Input system: %d\n", in_system);
printf ("Output system: %d\n", out_system);
printf ("Output number: ");
if (out_system != 10)
{
out_number = convert (dec_number, out_system);
printf ("%s\n", out_number);
}
else
printf ("%d\n", dec_number);
return 0;
}
ЗЫ. Давно хотел этот код написать, да руки все не доходили.
Delimiter
30.04.2008, 13:58
2 krypt3r
.... а вдрух ему было достаточно
unsigned long l=strtoul(str,0,base1);
ultoa(l,str,base2);
??? :D Я БАЮСЬ ТАКИФ ЗАДАЧ!
Я с этими функциями раньше не работал, так что писал то, что в голове было. За подсказку сенкс.
/me ушел читать маны
Pascal
Помогите исправить программу, есть такое задание: Поменять местами первый и последний, второй и предпоследний и т.д. столбцы исходной матрицы. (матрица вида 6*6)
Вот что у меня получилось, но мне нужно чтобы она автоматически меняла местами столбцы (первый - последний, второй-предпоседний, ...), а она просит ввода с клавиатуры номеров столбцов, хотя я этого вроде не задавал.
program pr7;
uses crt;
const n=6; m=6;
a:array[1..n,1..m] of real=((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;
u:real;
begin
clrscr;
read(i,j);
clrscr;
for k:=1 to n do
begin u:=a[k,j]; a[k,j]:=a[k,i];a[k,i]:=u;
end;
for j:=1 to n do
begin for i:=1 to m do write(a[j,i]:3:0);
writeln;
end;
readkey;
end.
Pascal
а она просит ввода с клавиатуры номеров столбцов, хотя я этого вроде не задавал.
Просит потому, что:
read(i,j);
Просит потому, что:
read(i,j);
а как изменить её чтобы автоматически меняла столбцы?
И ещё вопрос, как упорядочить побочную диагональ у этой матрицы по возрастанию? Я написал:
for i:=1 to n do
begin
pd:=a[i,n-i+1];
writeln(pd:3:0);
end
А как переставить её значения по-возрастанию не понимаю. :(
De-visible
02.05.2008, 13:11
Торопился код может быть корявым!
Important: Код писался именно для этого случая!
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
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;
readln;
end.
"Автоматически" меняет местами столбцы!
=============
Как упорядочить думаю догодаешься! ;)
Но если будут сложности, я помогу, только чуть позже!
Не коверкай рiдну мову...
Если кто-то из русскоговорящих возметься:
дано n (1<n<=100) точка на площади координат (xi, yi) (i=1,n). Точки образуют многоугольник з n углами и n сторонами.
Исходные данные
Определить:
a) Средняя арифметичная длина стороны многоугольника
b) Количество номеров сторон, что пересекают ось координат
p.s. за бесплатно врядле кто возметься...
Сейчас накатал, возможны косяки, проверить нет возможности.
PS: на плюсы перевести думаю справишься..
#include <stdio.h>
#include <math.h>
void main(void)
{
unsigned int x_point[100], y_point[100];
int lenght = 0, amount = 0;
for (int i = 0; i < 100; i++)
{
printf("point %d: enter xi\n", i + 1);
scanf("%d", &x_point[i]);
printf("point %d: enter yi\n", i + 1);
scanf("%d", &y_point[i]);
}
for (int i = 0; i < 99; i++)
{
if (x_point[i] > 0 && x_point[i + 1] < 0)
amount++;
if (x_point[i] < 0 && x_point[i + 1] > 0)
amount++;
if (y_point[i] > 0 && y_point[i + 1] < 0)
amount++;
if (x_point[i] < 0 && x_point[i + 1] > 0)
amount++;
lenght += sqrt(abs(x_point[i + 1] - x_point[i]) * abs(x_point[i + 1] - x_point[i]) + abs(y_point[i + 1] - y_point[i]) * abs(y_point[i + 1] - y_point[i]));
}
printf("amount: %d", amount);
printf("lenght: %d", lenght / 100);
return;
}
помогите с задачай по текстовым файлам (ПАСКАЛЬ)
Дан файл, содержащий текст и арифметические выражения
вида а®b, где ® — один из знаков +, —, *, /. Выписать все арифметические выражения и вычислить их значения.
з.ы. почему мою тему удалили :mad:
De-visible:Правильный ответ уже прозвучал!
http://forum.antichat.ru/showpost.php?p=675710&postcount=481
Помогите найти ошибку в коде:
typedef struct ip_header {
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;
ULONG iph_dest;
} IPHeader;
Заполняю ИП заголовок:
ip_hd->iph_verlen = 0x45;
ip_hd->iph_tos = 0x01;
ip_hd->iph_length = htons(40);
ip_hd->iph_id = htons(0x0800);
ip_hd->iph_offset = 0x0;
ip_hd->iph_ttl = 0xff;
ip_hd->iph_protocol = 0x06;
ip_hd->iph_xsum = 0x00;
ip_hd->iph_dest = inet_addr("192.168.0.1");
При заполнение вылетает экзепшн(Access violation). Не могу понять почему происходит... :confused:
При заполнение вылетает экзепшн(Access violation). Не могу понять почему происходит...
ты память то выделил?
ты память то выделил?
Для структуры? Извините за глупый вопрос: А как? :rolleyes:
Ну тогда попробуй так:
program qwer;
var
s:string;
a:char;
infile,outfile:text;
n,m,c,i:integer;
begin
assign(infile,'input.txt');
assign(outfile,'output.txt');
reset(infile);
rewrite(outfile);
repeat
readln(infile,s);
for i:=1 to length(s) do begin
a:=s[i];
case a of
'+':begin
val(Copy(s,1, i-1),m,c);
val(Copy(s,i+1,length(s)-i),n,c);
write(outfile,s+'=');
writeln(outfile,m+n);
end;
'-':begin
val(Copy(s,1, i-1),m,c);
val(Copy(s,i+1,length(s)-i),n,c);
write(outfile,s+'=');
writeln(outfile,m-n);
end ;
'*':begin
val(Copy(s,1, i-1),m,c);
val(Copy(s,i+1,length(s)-i),n,c);
write(outfile,s+'=');
writeln(outfile,m*n);
end ;
'/':begin
val(Copy(s,1, i-1),m,c);
val(Copy(s,i+1,length(s)-i),n,c);
write(outfile,s+'=');
writeln(outfile,m/n:8:2);
end ;
end;
end;
n:=0;
m:=0;
until eof(infile);
close(outfile);
close(infile);
end.
помгите с двумя задачками плиз :rolleyes:
1) через процедуры:
Составить программу для нахождения чисел из интервала [M, N], имеющих наибольшее количество делителей.
2) через функции:
Дано: натуральное n, целые неотрицательные a1, …, an. Рассмотреть отрезки последовательности a1, …, an (подпоследовательности идущих подряд членов), состоящей полных квадратов. Для проверки использовать функцию primer(a), описанную таким образом, что
.............1, если a – полный квадрат,
primer=
.............0, в противном случае.
De-visible: Реализация на Паскаль...
В следующий раз, не забывайте указать язык программирования, здесь нет телепатов:)
Catsy, первая задача
program deliteli;
{Составить программу для нахождения чисел из интервала [M, N],
имеющих наибольшее количество делителей.}
procedure GetCount (x : integer; var count : integer);
{Подсчет кол-ва делителей для каждого числа}
var
i, j : integer;
begin
i := 2;
count := 0;
j := x div 2;
while (i <= j) do begin
if x mod i = 0 then begin
write (i, ' ');
inc (count);
x := x div i;
end else
inc (i);
end;
writeln;
end;
procedure PrintNumbers (x, y : array of integer; count, index : integer);
var
i : integer;
begin
for i := 0 to count - 1 do
if y [i] = index then
writeln (x [i]);
end;
var
n1, n2, i, j, count, max : integer; {Первое, последнее число, счетчики цикла, кол-во делителей, максимальное кол-во делителей}
numbers : array [1..255] of integer; {Массив для чисел}
del_count : array [1..255] of integer; {Массив для количества делителей каждого числа}
begin
write ('Введите первое число n1: ');
readln (n1);
write ('Введите последнее число n2: ');
readln (n2);
count := 0;
max := 0;
j := 1;
for i := n1 to n2 do begin
numbers [j] := i;
write ('Делители числа ', i, ': ');
GetCount (i, count);
del_count [j] := count;
if count > max then
max := count;
writeln ('Количество: ', count);
inc (j);
end;
writeln ('Максимальное число делителей: ', max);
writeln ('Числа, имеющие наибольшее кол-во делителей');
PrintNumbers (numbers, del_count, n2 - n1 + 1, max);
end.
Условие второй как-то не совсем понял :(
Catsy, первая задача
Условие второй как-то не совсем понял :(
первая не правельно работает
она ищет не делители, а множители
пример:
диапозон от 5 до 20
у 20 получается 2 2 5 это явно не делители
должно быть если диапозон от 5 до 20 выдать 2 числа 18 и 20 т.к. у этих 2 чисел наибольшее кол-во делителей одинакого т.е.
у 18 это 2 3 6 и 9
у 20 это 2 4 5 и 10
поидеи не обязательно расписывать все числа нуна такого плана
вводим диапозон и сразу выводит числа с наибольшим кол-во делителей
а то если все расписывать, бред получается если диапозо от 2 до 100 ><
исправьте пожалуйста
по второй задаче:
полный квадрат это которые извлекаются нацело ( ну как я понела)т.е. вводим отрезок а1...аn и надо определить какие числа из этого отрезка извлекаются нацело(полный квадрат), а какие нет, через функции
вроде так, хотя если чесно сама не очень понимаю
criz(http://forum.antichat.ru/showpost.php?p=674939&postcount=478), память под структуру выделил? На какой строке спотыкается?
она ищет не делители, а множители
Ыть, если так, то сорри, перепутал - и в том и в другом случае число на делители/множители делится нацело ). Переделать код - раз плюнуть.
должно быть если диапозон от 5 до 20 выдать 2 числа 18 и 20 т.к. у этих 2 чисел наибольшее кол-во делителей одинакого т.е.
у 18 это 2 3 6 и 9
у 20 это 2 4 5 и 10
А 12? 12 - 2 3 4 6, также 4 делителя.
Вывод делителей для каждого числа - это сделано для отладки. Сей код можно закомментировать.
Код в самом деле переделать легко - потратилось 5 сек =) Весь приводить не буду, изменения касаются только процедуры GetCount
procedure GetCount (x : integer; var count : integer);
{Подсчет кол-ва делителей для каждого числа}
var
i, j : integer;
begin
i := 2;
count := 0;
j := x div 2;
while (i <= j) do begin
if x mod i = 0 then begin
write (i, ' ');
inc (count);
end;
inc (i);
end;
writeln;
end;
Ну тогда попробуй так:
спасибо, сдал, всё отлично
новую дали теперь по типизированым файлам:
Дан типизированный файл символов. Все символы цифр записать в конец файла.
De-visible:Уточни задание!
Народ, попросили скинуть сюда задания... Просит решить задания, сам помочь не могу за неимением времени...
2 курс, Delphi
<<<<
1) Объединить два упорядоченных списка в 1 упорядоченный (линейные динамические структура стр 284// Record)
2) Для заданного текстового файла получить частотный словарь представленный в виде дерева (290 деревья)
3) Дано предложение из N слов, каждое слово имеет M значений. Получить все варианты предложения (тема рекурсивный метод стр 179)
4) Дано слово длиной L символов. Найти все возможные подслова которые можно составить из букв исходного слова. Для отсеивания бессмысленных сочетаний символов можно использовать файл «нормальных» слов 196
5) «Перестановка мебели». Задана исходная расстановка мебели-см рисунок.
Составить программу, которая осуществляет расстановку мебели.
Например, из исходной расстановки
___________________
|Диван|Шкаф| Стол |
------------------------------
|Комод| |Кровать|
___________________
Получить следующую:
___________________
|Шкаф |Стол |Диван |
|Комод | |Кровать|
--------------------------------
Двигать мебель можно только по правилам игры 15, т.е. на свободное рядом с предметом место. Если перестановка невозможна программа должна вывести сообщение об этом.
(стр.203 тема «перебор состояний»
>>>>
PS Нужно сделать как можно скорее, за скорость могу немножко отблагодарить за денежку...
krypt3r,
спасибо, с первой все отлично теперь
по второй задаче:
Дано: натуральное n, целые неотрицательные a1, …, an.
Рассмотреть отрезки последовательности a1, …, an (подпоследовательности идущих подряд членов), состоящей полных квадратов.
Для проверки использовать функцию primer(a), описанную таким образом, что
..........1, если a – полный квадрат,
primer=
..........0, в противном случае.
расшифровка: )
дано число n, ну то есть его вводят, потом дано некоторое число, ск которого начинается проверка, таким образом получаем некоторую последовательно чисел
то есть например, вводишь 100, и вводишь число, с которого начинается последовательность, например 233, получается в результате массив из целых чисел, начиная от 233, заканчивая 333
из них, нужно найти те числа, из которых можно извлечь корень
например от 1 до 10, должно вывести 4 9
з.ы. через функции
спасибо, сдал, всё отлично
новую дали теперь по типизированым файлам:
Дан типизированный файл символов. Все символы цифр записать в конец файла.
De-visible:Уточни задание!
Уточняя задание:
дан файл с символов, нужно найти среди символов - символы чисел и вывести их в конец файла.
da_ff & krypt3r, спасибо. Проблема решена..частично :)
Теперь нужно выделить память для всего пакета, чтоб его отрпавить. А я не знаю какой должен быть размер. Где про это почитать можно?
Delimiter
05.05.2008, 13:56
2 criz
поскольку поле данных в tcp отсутствует для пакета с RST флагом то учитывая то что для ip только tcp-заголовок является данными
total_length=sizeof(ip_header)+sizeof(tcp_header) ;
где ip_header и tcp_header структуры обьявленные ранее!
а почитать об этом лучше всего в РФС(rfc) переводные лежат на citforum, если ты уже понимаешь то что один протокол вкладывается в другой как матрешка (инкапсуляция)
Dober'man
05.05.2008, 15:52
Управлюющие биты (тобишь флаги) не могут не содержать поле данных, находясь в (tcp-сегменте) самом поле данных (и RST и SYN и PSH и ACK -флаги).
Delimiter
05.05.2008, 15:58
вот tcp заголовок
typedef struct _TCPHeader
{
unsigned short SourcePort;
unsigned short DestinationPort;
unsigned int SequenceNumber;
unsigned int AcknowledgeNumber;
unsigned char DataOffset; // СМОТРЕТЬ СЮДА
unsigned char Flags; // И ОСОБЕННО СЮДА
unsigned short Windows;
unsigned short Checksum;
unsigned short UrgentPointer;
} TCPHeader;
стандартный пакт с RST флагом.... только что "испек"
15:55:37.642215 len:54 192.168.1.166:2452 -> 64.12.164.247:80 (TCP)--R-U
__________________________________________________ _________________
IP: IP-Version:4
Prioruty:normal
TTL: 128
Protocol: TCP
TCP: ACK Number: 4180767391
SEQ Number: 4035339790
Window: 0
__________________________________________________ _________________
00 13 49 B3 1E E2 00 16 36 A7 CB 0A 08 00 45 00 | .I³â.6§Ë...E.
00 28 0C 20 40 00 80 06 47 5E C0 A8 01 A6 40 0C | .(. @.?.G^À¨.¦@.
A4 F7 09 94 00 50 0E 66 86 F0 9F 72 31 F9 50 14 | ¤÷.”.P.F†ðŸR1ùP
00 00 97 D8 00 00 | ..—Ø..
Ну, я все так и делаю. Выделил 54 байта, но экезпшн все равно вылетает.
u_char *pkt;
pkt = malloc(54);
/*.......................*/
destmac = (mac_address *)pkt_data;
srcmac = (mac_address *)(pkt_data + 6);
/*.......................*/
memcpy( (void *)pkt, (void *)srcmac, 6 );
memcpy( (void *)(pkt + 6), (void *)destmac, 6 );
memcpy( (void *)(pkt + 12), &ip_tos, 2);
memcpy( (void *)(pkt + 14), &ip_hd, 20 );
memcpy( (void *)(pkt + 14 + sizeof(ip_hd)), &tcp_hd, 20);
Пример кода взят с хакер.ру
Delimiter
05.05.2008, 22:27
8) счас откампилирую
Вечер добрый, помогите пожалуйста с такой задачкой если кто сможет ) (На паскале)
Задача
Разработать программу, которая позволяет найти площадь заштрихованной области 2 способами:
1.вычислить площадь заштрихованной области по формулам, сост.разработанные программы по заданным конфигурациям
2.методом Монте-Карло: с применением функции генерации случайных для задания координат точек попадающих в ограниченную область, включая и заштрихованную область
Прим. Площадь заштрихованной области определяется как отношение количества точек, попавших в эту область к общему количеству точек, попавших в ограниченную область у:=random
http://avoreg.ru/pic_s/fc23152cc37b902b8c292a945e1ffb6f.jpg
А можно поподробней условие задачи и какими уравнениями задается заштрихованная область?
Dober'man
06.05.2008, 00:11
4_Far2k
Эт если методом Монте-Карло.....
var T,N,i: longint;
k,x,y,a,b,Spr,Str: Real;
begin
repeat
write('a<b; a,b=');
readln(a,b);
until a<b;
write('N='); readln(N);
T:=0; Randomize;
for i:=1 to N do
begin
x:=a+(b-a)*random;
y:=Random/a;
if y<=1/x then T:=T+1
end;
K:=T/N;
Spr:=(b-a)/a; Str:=K*Spr;
writeln('Площадь трапеции {или хз что получится} =',Str:0:4,
' Точное значение пдощади =', ln(b/a):0:4); //эт я из геометр. помню
end.
Вот метод Монте-Карло для твоего случая:
Program qwer;
Var
k,x,y: integer;
n,i:longint;
Begin
randomize;
k:=0;
n:=10000;
for i:=1 to n do
begin
x:=random(4)-2;
y:=random(4)-2;
if (x+y<=1) and (x-y<=1) and (-x+y<=1) and (-x-y<=1) then
k:=k+1;
end;
writeln(k/n*4 :2:2);
End.
Myst: Спасибо, поставил бы плюс если мог бы)
А с первой частью задания незнаеш как?
043nKRuT0y
06.05.2008, 16:49
Народ помогите сделать задание на С++ ! Вот условие :
"Побудувати систему класів для описання плоских геометричних фігур: круг, квадрат, прямокутник. Передбачити методи для створення об’єктів, переміщення на площині, зміна розмірів."
p.s.
... с меня плюсы !!!
De-visible:Вот перевод:
Построить систему классов для описания плоских геометрических фигур: круг, квадрат, прямоугольник. Предусмотреть методы для создания объектов, перемещение на плоскости, изменение размеров.
спс Mosvit
8) счас откампилирую
У меня на первом memcpy() вылетает экзепшн:
unhandled exception in main.exe: 0xC0000005: Access Violaiton :confused:
Народ помогите сделать задание на С++ ! Вот условие :
"Побудувати систему класів для описання плоских геометричних фігур: круг, квадрат, прямокутник. Передбачити методи для створення об’єктів, переміщення на площині, зміна розмірів."
p.s.
... с меня плюсы !!!
De-visible:Кто нить переведите:)
почитай тут:
http://algolist.manual.ru/maths/geom/datastruct.php
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot