TWINc

Помощь в решении заданий по программированию.

Рекомендованные сообщения

TURBO PASCAL

 

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

 

плиизз...люди помогите...мне в понедельник её надо сдавать((((

 

вот всё,что я пока смог сделать(создать типизированный файл) и то я не знаю прально ли написал или нет(((:

 

program vvod;

uses crt;

type students=record

fam:string[40];

inst:string[40];

kurs:byte;

end;

var

f1:file of students;

n:students;

i:integer;

begin

clrscr;

assign(f1,'file1.dat');

rewrite(f1);

for i:=1 to 3 do

begin

write('BBEDITE: ');

writeln;

readln (n.fam);

readln (n.inst);

readln (n.kurs);

end;

write (f1,n);

close(f1);

end.

 

 

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

Изменено пользователем DoDgY

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

TURBO PASCAL

 

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

 

плиизз...люди помогите...мне в понедельник её надо сдавать((((

 

вот всё,что я пока смог сделать(создать типизированный файл) и то я не знаю прально ли написал или нет(((:

 

program vvod;

uses crt;

type students=record

fam:string[40];

inst:string[40];

kurs:byte;

end;

var

f1:file of students;

n:students;

i:integer;

begin

clrscr;

assign(f1,'file1.dat');

rewrite(f1);

for i:=1 to 3 do

begin

write('BBEDITE: ');

writeln;

readln (n.fam);

readln (n.inst);

readln (n.kurs);

end;

write (f1,n);

close(f1);

end.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

отсортировать то я смогу!Меня интересует сам факт,как в типезированном файле мне различить запись под №1,2,3 чтобы я смог уже написать процедуру сортировки!И ведь Типизированный файл не разделяется на строки!

 

тоесть я пишу:

1) создание типизированного файла с данными;

2) открываю для чтения;

3) пишу процедуру,с помощью которой пользователь сможет выбрать вид сортировки (по фамилии или институту или курсу);

4) я пишу по процедуре к каждому случаю(когда по фамилии сортировка,когда по институту и когда по курсу),тоесть там на первое место выносится либо фамилия,либо институт ,либо курс! ВОТ ОНА МОЯ ПРОБЛЕМА!КАК МНЕ ЭТО СДЕЛАТЬ???;

5) я пишу процедуру сортировки;

 

 

Я ПРАВИЛЬНО НАПИСАЛ Программу создания типизированного файла????

 

и как мне проверить,что я записал в типизированный файл?

Изменено пользователем DoDgY

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

отсортировать то я смогу! <...

 

Посмотри мой код в изначальной теме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

отсортировать то я смогу!Меня интересует сам факт,как в типезированном файле мне различить запись под №1,2,3 чтобы я смог уже написать процедуру сортировки!И ведь Типизированный файл не разделяется на строки!

 

тоесть я пишу:

1) создание типизированного файла с данными;

2) открываю для чтения;

3) пишу процедуру,с помощью которой пользователь сможет выбрать вид сортировки (по фамилии или институту или курсу);

4) я пишу по процедуре к каждому случаю(когда по фамилии сортировка,когда по институту и когда по курсу),тоесть там на первое место выносится либо фамилия,либо институт ,либо курс! ВОТ ОНА МОЯ ПРОБЛЕМА!КАК МНЕ ЭТО СДЕЛАТЬ???;

5) я пишу процедуру сортировки;

 

 

Я ПРАВИЛЬНО НАПИСАЛ Программу создания типизированного файла????

 

и как мне проверить,что я записал в типизированный файл?

Есть такая функция ( помему fseek() - по крайне мере в "С" она есть, и помоему должна быть в Паскале, а нашел, она называется Seek( "file descriptor", "position" ) ) к примеру, тебе надо считать Nую запись из файла, то у тебя должен быть след. код:

function readstud ( FILE, INDEX ) : TSTUDENT;
begin
Seek( FILE, ( INDEX - 1 ) * sizeof(TSTUDENT) );
Read( FILE, readstud );
end;

Для записи примерно такой:

procedure writestud( FILE, INDEX, STUD );
begin
Seek( FILE, (INDEX-1)* sizeof(TSTUDENT) );
write( FILE, STUD );
end;

ЗЫ давно ничего не писал на Дельфи ( на Паскале уже года 3 ), так что сильно не придирайся, я думаю тебе это поможет организовать поиск и сортировку)))

ЗЗЫ Теперь сортировку напишешь?? функции совсем немного надо доработать ))) написать типы))

Изменено пользователем Laster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Привествую всех гуру программирования ! =) Как я рад в ощущаемой перспективы помощи в решении некольких задач...

Вкраце есть 10 задач [ну буду грузить всеми , хочется разобрать парочку]

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Привествую всех гуру программирования ! =) Как я рад в ощущаемой перспективы помощи в решении некольких задач...

Вкраце есть 10 задач [ну буду грузить всеми , хочется разобрать парочку]

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

 

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

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

Ну принцип указатель на указатель это видимо примерно вот такое: у тебя есть 2Д массив указателей на инт, вот и все)

Можно вот так объявить:

int mas[y][x];

//А вот так брать элемент ( не забудь только память виделить для элементов
*(int*)(mas[1][1]) = 1; // запись числа 1 в поле с координатами 1,1

Но в принципе объявление можно и такое сделать ( эффект тот же самый, НО не требуется инита ДП )

int mas[y][x][1]; // равносильно int ***mas;

 

Пробежка по матрице? вообще я бы для "уазателя на указатель" использовал бы: во-первых функции чтения/записи специально для наших матриц, и во вторых, сделал бы эти матрицы структурами с сохраненными в ней длиннами. Тогда пробежка выглядела бы примерно так:

void Write( ARRAY, X, Y, NUM );
NUM Read( ARRAY, X, Y );

...
for ( i = 0; i < ARRAY->YLen; i++ )
  for ( j = 0; j < ARRAY->XLen; j++ )
	{
		 Printf( "%d%s", Read( ARRAY, I, J), (j < ARRAY->XLen - 2)?"":"\n"  );
	  }

Вот пример такой библиотеки ( чуток модифицируешь, и будет тебе с использованием указателей ):

/*		МОДУЛЬ ДЛЯ РАБОТЫ С МАТРИЦАМИ v1.0		*/
/*		АВТОР: Лапынин Сергей aka Lastrick		*/
/*СВЯЗЬ: ICQ 211721836, e-mail la-serg@yandex.ru*/
/*		Copyright 2007. Все права защищены.		*/
#include <stdio.h>
#include <stdlib.h>

typedef struct 
{
unsigned char row, col;//длинна строки и столбца
int* data;//указатель на информацию	
} SMatrix;

/*Declarations*/
SMatrix* Create( unsigned char row, unsigned char col );
void Delete( SMatrix** Matrix );
int Read( SMatrix* Matrix, unsigned char row, unsigned char col );
void Write( SMatrix* Matrix, int num, unsigned char row, unsigned char col );



/*Implementations*/
SMatrix* Create( unsigned char row, unsigned char col )
{
SMatrix *temp = NULL;
if ( row < 2 || col < 2 )
	return NULL; //неверные параметры
temp = (SMatrix*)malloc( sizeof(SMatrix) );//выделение памяти под структуру
if ( !temp )
	return NULL;//если не выделено, то вернем NULL

temp->data = malloc( row*col*sizeof(int) );//выделяем память под матрицу
if ( ! temp->data )
{
	free(temp);//если не выделено, то
	return NULL;//удаляем структуру и вернем NULL
}
temp->row = row;//записываем данные
temp->col = col;//о структуре
return temp;
}
void Delete( SMatrix** Matrix )
{
if ((*Matrix)->data)
	free((*Matrix)->data);
if (*Matrix)
	free( *Matrix );
}

int Read( SMatrix* Matrix, unsigned char row, unsigned char col )
{
if ( row < Matrix->row && col < Matrix->col )
	return Matrix->data[row*Matrix->col + col];
else
	return ~0;
}

void Write( SMatrix* Matrix, int num, unsigned char row, unsigned char col )
{
if ( row < Matrix->row && col < Matrix->col )
	Matrix->data[row*Matrix->col + col] = num;
}

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

Хотя, если догадаешься, то можно и не переписывать мою библиотеку, а использовать ее напрямую, точнее сделать совсем простую надстройку))) ( подсказка: указатель имеет размер ИНТ, матрица ИНТовая )

Изменено пользователем Laster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нужна прога, которая позволяет:

1) конвертить Jpeg->bmp

2) Урезать любую картинку в 320х240

3) переводить далее любое изображение в из цветного в градиент серого

5) разложить изображение в матрицу яркости или цвета (что вобщем то неважно)

4) сравнивать 2 изображения!

 

1,2 сделал... осталоь остальное сделать...

Если у кого есть идеи или тексты программ скиньте! (оптимальна прога нужна на делфе!)

Изменено пользователем GoblinVandall

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребят помогите плз програмку написать на вижал бейсике. Вот текст задания:

 

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

 

Интересует как разместить в обратном порядке, функциями mid и len, instr получилось вывести для определнного количества слов в тексте, допустим для 3. "Мама мыла раму"... В цикл не получилось все это засунуть. Поидее сначало надо определить количество слов.

Буду благодарен за любые подсказки

Изменено пользователем Sp1inter

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нужна прога, которая позволяет:

1) конвертить Jpeg->bmp

2) Урезать любую картинку в 320х240

3) переводить далее любое изображение в из цветного в градиент серого

5) разложить изображение в матрицу яркости или цвета (что вобщем то неважно)

4) сравнивать 2 изображения!

 

1,2 сделал... осталоь остальное сделать...

Если у кого есть идеи или тексты программ скиньте! (оптимальна прога нужна на делфе!)

1-открываешь как jpeg , сохранаешь как bmp

2-урезать,тоже самое как и в пункте 1

4-попиксельное сравнение

3-берёшь цвет пикселя,разкладываешь в РГБ ,суммируешь каналы и делишь на три,получившееся значение используешь для РГБ во всех трёх цветах.чёрно-белый пиксель готов

5-матрица цвета это как? ГРБ слои?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1-открываешь как jpeg , сохранаешь как bmp

2-урезать,тоже самое как и в пункте 1

4-попиксельное сравнение

3-берёшь цвет пикселя,разкладываешь в РГБ ,суммируешь каналы и делишь на три,получившееся значение используешь для РГБ во всех трёх цветах.чёрно-белый пиксель готов

5-матрица цвета это как? ГРБ слои?

 

3. Это не совсем верно, с т.з. цветовосприятия человеком, правильно (согласно стандарту NTSC) так: " GreyScale := Round ( Red * 0.56 + Green * 0.33 + Blue * 0.11); ".

4. А какие параметры сравнивать-то нужно?.. Если "содержание" изображения, то тут попиксельный метод все равно не подойдет. Эта тема вообще ближе к ИИ...

1,2. Урезать или все же пропорционально "стянуть" (трансормировать)?.. Если урезать, то по каким критериям!?

5. Для преобразования отдельного цвета?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Смысл в том что есть несколько фотографий. Фон черный, на нем есть светящиеся точки разного радиуса... надо сравнить одинаковые эти точки или нет (точек от 2 до 10 гдет)..

Попиксельное сравнение не прокатывает, т.к. это именно фотографии, снятые темноте... чуть чуть больше света попало и изображение другое, нужно отталкиваться от матрицы изображение (понятие цвета - допустим у нас есть градиент серого абс черный - 0, абс белый - 8 (допустем градиент на 8))...

Сделать это в упор не могу, т.к. нехватает знаний по программированию.. А на диплом надо!

Критериев сравнения никто не объявлял, но вобщем то думаю что если совпадение не черных областей >85% то можно считать 2 изображения одинаковыми...

Под урезать понималось из 640х480 ,допустим, в 320х240.. это я сделал... и Jpeg->Bmp

Пример изображения: http://webfile.ru/1369183

Увы Imageshack.us не открылся...

Изменено пользователем GoblinVandall

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

*сам все сделал :D *

Изменено пользователем ZonTik

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да никто тебе не сделает, пример - мой пост выше, а чтоб сделали нехватает одной строчки.

Оплачу через веб мани :( Я наверно тоже так поступлю скоро ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да никто тебе не сделает, пример - мой пост выше, а чтоб сделали нехватает одной строчки.

Оплачу через веб мани :) Я наверно тоже так поступлю скоро ))

За вебмани естеснно сделаем)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да никто тебе не сделает, пример - мой пост выше, а чтоб сделали нехватает одной строчки.

Оплачу через веб мани :rolleyes: Я наверно тоже так поступлю скоро ))

А вдруг) первые 2 я уже сделал сам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

За вебмани естеснно сделаем)))

 

 

 

За сколько мою сделаешь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

За сколько мою сделаешь?

100 RUR

а так от сложности зависит) и времени)

Изменено пользователем Laster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость Fire

Microsoft Visual studio 6

 

Как вставить в кнопку решение ? Нада взять из 2 эдит боксов 2 числа, решить по формуле и вывести в третий эдит бокс. Когда пишу так, выдает ошибку error C2601: 'main' : local function definitions are illegal

код такой

void CEkzamenDlg::OnReshenieButton()  
{
 // TODO: Add your control notification handler code here
 int main()
 {
 float IDC_VISOTA_EDIT;
 cin>>IDC_VISOTA_EDIT;
 float IDC_RADIUS_EDIT;
  cin>>IDC_RADIUS_EDIT;
  float IDC_OBEM_EDIT=3.14*IDC_VISOTA_EDIT*IDC_VISOTA_EDIT*(IDC_RADIUS_EDIT-(IDC_VISOTA_EDIT/3));
  cout<<IDC_OBEM_EDIT;
  return 0;
 }

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

чего-то ты жёсткое замутил :lol:

кто тебя так учил писать?

процедура main это вообще точка входа :lol2:

ЗЫ

MFC был придуман для идиотов,пиши на WinAPI

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость Fire

Ну это чисто мой код, сам замутил так =) Сначала в консоле это сделал, там нормально этот код пахал, попытался пихнуть в кнопку, ошибку пишет.

А делать нам говорили через MFC. Можешь просто сказать как сделать чтоб пахало ? Мне кажется, вместо маин надо че то другое написать, токо хз че )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Мм оч нужно сделать функцию с элементами указатель на указатель на поиск этих элементов и замену....(или 1 или 2 отдельных, пож без методов, как можно проще -))

з.ы ввод сделал)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

похоже ты азов не знаешь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость Fire

void CEkzamenDlg::OnReshenieButton() 
{
// TODO: Add your control notification handler code here
float reshenie;
reshenie=3.14*m_Visota*m_Visota*(m_Radius-(m_Visota/3));
m_Obem=reshenie;
}

Сделал вот так, теперь запускается, но ниче не выводить в 3 эдит бокс m_Obem и я точно не знаю решает он или нет :rolleyes:

Вообщем как вывести результат в эдит бокс и правильно ли я написал код ?

ЗЫ всем присвоил значение float, с CString выдавало ошибку. Тоже правильно ли это ?

Изменено пользователем Fire

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Забыл перересовать экран

UpdateData(true)

Это при условии что все переменные правильно свзязаны в визарде

Изменено пользователем DeathStalker

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость Van Zan

Народ, я в программировании новый, помогите плиз.

 

На С++ нуно код проги-генератора случайных чисел. Или хотя бы идейку подбросьте...

 

Реально С++ нормально овладеть самостоятельно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Реально С++ нормально овладеть самостоятельно?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Народ, я в программировании новый, помогите плиз.

 

На С++ нуно код проги-генератора случайных чисел. Или хотя бы идейку подбросьте...

 

Реально С++ нормально овладеть самостоятельно?

В смысле без использования стандартных функций Си, если да то открывай ТВИМС и ищи там функции нормального распределения если нет то функция rand поможет тебе

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость Van Zan
В смысле без использования стандартных функций Си, если да то открывай ТВИМС и ищи там функции нормального распределения если нет то функция rand поможет тебе

 

DeathStalker, Laster, cпc.

 

#include <iostream>

 

void srand(unsigned int seed);

int main()

{

int v;

std::cin>> v;

int i;

srand(v);

for (i=0;i<5;++i)

std::cout << rand() << std::endl;

return 0;

}

 

 

Примитив, конечно, но , кажется, так правильно??

Изменено пользователем Van Zan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас