Просмотр полной версии : Студентам с лабораторными сюда
Страницы :
1
2
3
4
[
5]
6
7
8
9
10
11
12
rectangle функцию смотри.
Stil Free
10.01.2009, 12:13
Немогу найти действие как завершить процесс на компе при помощи делфи....
Enter number of digits ввожу 3
Enter digits ввожу 123 435 907
выдает 12435907,а надо было вводить цифры наприсер 123435907
а выдать должно было 123
number of digits - количество цифр, которые ты будешь вводить. формат ввода "ц ц ц ц", где количество ц - number of digits.
нет программа выдает 25645
задача я с клавиатуру ввожу цыфры вывыеси долно тройки чисел упорядоченных по возрастанию
например 345678098 вывод 345 678
098 выводить не должно тк цыфры идуть не повозрастанию
А почему вывод именно такой? Ведь 456, 567,678 тоже образуют тройку чисел.
Ребята помогите с такой задачей (решать мне ее не надо, просто попытайтесь обяснить что дано и что найти понятнее):
"Дан текст.
Найти номер первой по порядку группы цифр (см. задачу 812), которые начинаються цифрой 2"
Задача 812:
"Дан текст, каждый символ которого может быть буквой, цифрой или одним из знаков +, -, *. Группой букв будем называть такую совокупность последовательно расположеных букв, которой непосредственно не предшестует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков."
Собственно из всего етого непонятно такое "...Группой букв будем называть такую совокупность последовательно расположеных букв, которой непосредственно не предшестует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков..."" Вобщем расстолкуйте плиз что надо пожалуйста.
AnOcToJI
10.01.2009, 14:11
как в проге на C++ или Daelphi можно сделать так что бы она автоматически находила на компе IP и выводила сразу в ричэдит или в подобное ?
Ребята помогите с такой задачей (решать мне ее не надо, просто попытайтесь обяснить что дано и что найти понятнее):
"Дан текст.
Найти номер первой по порядку группы цифр (см. задачу 812), которые начинаються цифрой 2"
Задача 812:
"Дан текст, каждый символ которого может быть буквой, цифрой или одним из знаков +, -, *. Группой букв будем называть такую совокупность последовательно расположеных букв, которой непосредственно не предшестует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков."
Собственно из всего етого непонятно такое "...Группой букв будем называть такую совокупность последовательно расположеных букв, которой непосредственно не предшестует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков..."" Вобщем расстолкуйте плиз что надо пожалуйста.
Дается определение последовательности.
К примеру "123фвыфыв+-23". Последовательность букв здесь "фвыфвы" так как слева она граничит с 3, а 3 является элементом последовательности цифр, а справа с +, который является элементом последовательности знаков.
Я думаю надо определить что такое последовательность цифр и знаков.
Только я ХЗ как это относится к коддингу.
ооо, ну кажеться я вдуплился.... короче есть строка (чтото типа):
213шгнвыаор434лорвыалор-+выопыва
из етого следует что :
шгнвыаор - первая группа;
лорвыалор -вторая группа;
выопыва-треться группа;
Затем нежно "Найти номер первой по порядку группы цифр (см. задачу 812), которые начинаються цифрой 2" Но у нас же буквенные строки... мда, интересные задачи нам задают
А почему вывод именно такой? Ведь 456, 567,678 тоже образуют тройку чисел.
сначала берем первуые три цифры дальше смотрим подходят они по условию если да выводим на экран нет переходим к следующей тройке (т.е по счету эти цыфры 4 5 и6 места занимают)
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{ char str[256];
int i;
int len;
printf ("Vvedite stroku : ");
scanf("%255[^\r\n]", str);
len = strlen(str)/3;
for (i=0; i<len; i++)
{
if (str[i*3]<str[i*3+1] && str[i*3+1]<str[i*3+2])
printf ("%c%c%c ",str[i*3],str[i*3+1],str[i*3+2]);
}
printf ("\n");
return 0;
}
вот рабочий вариант проги но нужно сделать без массива кто знает как подскажите
ankden
Отсортировать весь массив и выводить по три. В чем проблема?
Немогу найти действие как завершить процесс на компе при помощи делфи....
http://msdn.microsoft.com/en-us/library/ms686714(VS.85).aspx
ankden
Отсортировать весь массив и выводить по три. В чем проблема?
покажи плиз как это выглядить на языке си, а то я новичек только начал изучать синтаксис
покажи плиз как это выглядить на языке си, а то я новичек только начал изучать синтаксис
#include <stdio.h>
#define SIZE 10
int sort(int* array) {
int temp = 0;
int i=0;
int j=0;
for(i = 0 ; i < SIZE; i++) {
for(j = 1 ; j < SIZE - i ; j++) {
if(array[j-1] > array[j]) {
temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
}
}
}
}
int main() {
int i=0;
int c[SIZE] = {5,3,1,8,0,4,7,6,9,2};
sort(c);
for(i=0; i < SIZE; ++i) {
printf("%d", c[i]);
if( (i+1) % 3 == 0 ) {
printf(" ");
}
}
return 0;
}
http://ru.wikipedia.org/wiki/Пузырьковая_сортировка
это что именно часть кода???
это что именно часть кода???
Не понял вопроса. Ты попросил показать как отсортировать и выводить по 3и. Я привел код который именно это и делает. Функция sort - сортировка пузырьковая. printf - вывод.
Не понял вопроса. Ты попросил показать как отсортировать и выводить по 3и. Я привел код который именно это и делает. Функция sort - сортировка пузырьковая. printf - вывод.
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{ char str[256];
int i;
int len;
printf ("Vvedite stroku : ");
scanf("%255[^\r\n]", str);
len = strlen(str)/3;
for (i=0; i<len; i++)
{
if (str[i*3]<str[i*3+1] && str[i*3+1]<str[i*3+2])
printf ("%c%c%c ",str[i*3],str[i*3+1],str[i*3+2]);
}
printf ("\n");
return 0;
}
это вариант проги которая считывает с клавиатуры цыфры и выводит на экран упорядоченные тройки по возрастанию например ввод 123546
вывод 123
ввод 135789057
вывод 135 789
вопрос как решить эту задачу не используя масив???
herfleisch
11.01.2009, 14:50
Использовать запись в файл, а не в массив
Использовать запись в файл, а не в массив
это как? просто я чайник если не сложно помогите пожалуйста.
herfleisch
11.01.2009, 15:07
...
#include <stdio.h>
...
int main(void)
{
FILE * f = fopen("file.txt");
...
fprintf(f, ...);
...
fscanf(f, "...", &...);
fclose(f);
return 0;
}
ankden, никак. У тебя же строка используется. А строка, насколько я помню, это массив символов)
Люди, кто может решить эту задачу без использования массива помогите пожалуйста
Люди, кто может решить эту задачу без использования массива помогите пожалуйста
//---------------------------------------------------------------------------
#include <iostream>
#include <cstdlib>
#pragma hdrstop
using std::cout;
using std::cin;
using std::endl;
using std::system;
//---------------------------------------------------------------------------
typedef unsigned char uchar;
#pragma argsused
int main(int argc, char* argv[])
{
uchar first, second, third;
int n = 0;
do
{
cout << "enter three digits: ";
cin >> first >> second >> third;
if (first < second && second < third)
{
cout << "Correct input. Here is digits: ";
cout << first << ":" << second
<< ":" << third << endl;
}
else
{
cout << "They are not sorted" << endl;
}
n++;
} while (n < 9);
system("pause");
return 0;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <iostream>
#include <cstdlib>
#pragma hdrstop
using std::cout;
using std::cin;
using std::endl;
using std::system;
//---------------------------------------------------------------------------
typedef unsigned char uchar;
#pragma argsused
int main(int argc, char* argv[])
{
uchar first, second, third;
int n = 0;
do
{
cout << "enter three digits: ";
cin >> first >> second >> third;
if (first < second && second < third)
{
cout << "Correct input. Here is digits: ";
cout << first << ":" << second
<< ":" << third << endl;
}
else
{
cout << "They are not sorted" << endl;
}
n++;
} while (n < 9);
system("pause");
return 0;
}
//---------------------------------------------------------------------------
спасибо большое
прошу..
помогите пожалуйста с лабой! (((
1.Набрать программу 3.1.
//Программа 3.1 (Инициализация графического режима)
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
int main(void){
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk) /*ошибка инициализации графики */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* возврат кода ошибки */
}
int i;
a: cout<<"0 - exit, 1 - line, 2 - sin()";
cin>>i;
switch(i){
case 0: exit(0);
case 1: {line(0, 0, getmaxx(), getmaxy()); break;} // Функция построения линии на экране
case 2: {for(int j = 0; j < 640; j++) putpixel(j, 100* sin(2*3.1415*0.01*j)+ 300, 5); break;}
default: cout<< "Error select";
}
getch();
goto a;
closegraph();
return 0;
}
2.Отладить программу 3.1.
3.Модифицировать программу 3.1, используя вместо функции line любую другую функцию построения изображения (например, нарисовать на экране закрашенный прямоугольник).
Нужна Ваша помощь - с меня плюсеги! Нужно зделать лабу на завтра , кто может помогите !Зделать как бы само рационально - не сильно росписывать ! На Си программу писать
Задача вот такая : написать программу которая бы по спирали скручивалась по внутрь ! Размерность должна быть четная и задавалась вводом. Нужно что бы вывод матрицы были через свою написаную функцию, + еще какуето функцию в программе !
С меня плюсегиии !
И вот еще очень простое и длинное задание... на с++
1. Создать абстрактный тип данных - класс вектор, который имеет указатель на float,
число элементов и переменную состояния. Определить конструктор без параметров,
конструктор с параметром, конструктор с двумя параметрами. Конструктор без
параметров выделяет место для одного элемента и инициализирует его в ноль.
Конструктор с одним параметром, - размер вектора, - выделяет место и инициализирует
номером в массиве, конструктор с двумя параметрами выделяет место (первый аргумент)
и инициализирует вторым аргументом. Деструктор освобождает память. Определить
функцию, которая присваивает элементу массива некоторое значение (параметр по
умолчанию), функцию которая получает некоторый элемент массива. В переменную
состояния устанавливать код ошибки, когда не хватает памяти, выходит за пределы
массива. Определить функцию печати. Определить функции сложения, умножения,
вычитания, которые производят эти арифметические операции с данными этого класса и
встроенного float. Определить методы сравнения: больше, меньше или равно.
Предусмотреть возможность подсчета числа объектов данного типа. Проверить работу
этого класса.
мда... так и не дождавшись ответа... решил сие вопрос...) если интересно... вот : исходник (http://ifolder.ru/9999805)
Помогите перевести в двоичную и шестнадцатеричную систему 12,625 и C1424000 в двоичную и десятичную. Очень надо ,сдавать через 5 часов (( Также если не затруднит киньте ссыль где простым языком объясняется как переводить.
За ранее спасибо, с меня "+" =)
Помогите перевести в двоичную и шестнадцатеричную систему 12,625 и C1424000 в двоичную и десятичную. Очень надо ,сдавать через 5 часов (( Также если не затруднит киньте ссыль где простым языком объясняется как переводить.
За ранее спасибо, с меня "+" =)
http://ru.wikipedia.org/wiki/Двоичная_система_счисления
http://ru.wikipedia.org/wiki/Шестнадцатеричная_система_ счисления
12.625 (10) = 1100.101 (2) = C,A (16)
C1424000 (16) = 11000001010000100100000000000000 (2) = 3242344448 (10)
12.625 (10) = 1100.101 (2) = C,A (16)
C1424000 (16) = 11000001010000100100000000000000 (2) = 3242344448 (10)
Вообще мне кажется, что автору нужен был алгоритм перевода, но если нет, то совет автору - просто открываешь стандартный калькулятор в инженерном виде и лёгким движением руки переводишь что и куда надо)
Срочно нужно решить задачку. Кто может, буду очень благодарен.
Задача следующая...
1 7
2 8
3 9
4 10
5 11
6 12
Из каждого ряда можно взять одну цифру и составить всевозможные варианты... Например, 1.2.3.4.5.6 - это один вариант, 1.2.3.4.5.12 - это другой вариант , 1.2.3.4.11.6 ну и т.д. грамотность написания программы не нужна, главное написать всевозможные варианты, т.е. результат... Очень надо... Отблагодарю огромным количеством репутаций.
Спасибо за внимание.
Курсовая на тему "Шифрование последовательности нулей и единиц". Сдана на пять. В архиве прилагается 2 проекта разработанные под MS VC 2005 pro, с помощью Windows Form.
1. Для шифрования
2. Для дешифрования
http://tools.xaker.ru/Project.7z
_evgeniy_
14.01.2009, 00:59
Срочно нужно решить задачку. Кто может, буду очень благодарен.
Задача следующая...
1 7
2 8
3 9
4 10
5 11
6 12
Из каждого ряда можно взять одну цифру и составить всевозможные варианты... Например, 1.2.3.4.5.6 - это один вариант, 1.2.3.4.5.12 - это другой вариант , 1.2.3.4.11.6 ну и т.д. грамотность написания программы не нужна, главное написать всевозможные варианты, т.е. результат... Очень надо... Отблагодарю огромным количеством репутаций.
Спасибо за внимание.
int main()
{
setlocale(LC_ALL,"RUS");
int a1[2][6] = {{1,2,3,4,5,6},{7,8,9,10,11,12}};
for(int v = 0; v < 2; v++)
{
for(int j = 6; j > 0; j--)
{
int p = 0;
int c = (v==0) ? 1 : 0;
for(int m = 0; m < 6; m++)
{
if(p != j)
{
cout << a1[v][m] << ' ';
}
else
{
cout << a1[c][m] << ' ';
}
p++;
}
cout << "\n";
}
cout << "\n";
}
cout << "\n";
cout << "Для выхода нажмите любую кнопку....";
getch();
return 0;
}
int main()
{
setlocale(LC_ALL,"RUS");
int a1[2][6] = {{1,2,3,4,5,6},{7,8,9,10,11,12}};
for(int v = 0; v < 2; v++)
{
for(int j = 6; j > 0; j--)
{
int p = 0;
int c = (v==0) ? 1 : 0;
for(int m = 0; m < 6; m++)
{
if(p != j)
{
cout << a1[v][m] << ' ';
}
else
{
cout << a1[c][m] << ' ';
}
p++;
}
cout << "\n";
}
cout << "\n";
}
cout << "\n";
cout << "Для выхода нажмите любую кнопку....";
getch();
return 0;
}
Брат, спасибо за внимание... но я в этом полный ноль. Мог бы ты это сам сделать, чтоб мне нужно было только скачать? Мне как то не ловко но очень надо... буду очень благодарен.
_evgeniy_
14.01.2009, 03:34
Брат, спасибо за внимание... но я в этом полный ноль. Мог бы ты это сам сделать, чтоб мне нужно было только скачать? Мне как то не ловко но очень надо... буду очень благодарен.
там не до конца сделано я перепроверил, пока не получается :(
Ясно, Евгений...
Очень надо, кто нить помогите...
Срочно нужно решить задачку. Кто может, буду очень благодарен.
Задача следующая...
1 7
2 8
3 9
4 10
5 11
6 12
Из каждого ряда можно взять одну цифру и составить всевозможные варианты... Например, 1.2.3.4.5.6 - это один вариант, 1.2.3.4.5.12 - это другой вариант , 1.2.3.4.11.6 ну и т.д. грамотность написания программы не нужна, главное написать всевозможные варианты, т.е. результат... Очень надо... Отблагодарю огромным количеством репутаций.
Короче задачу тебе я сочинил, памяти она займет достаточно много, так как используется дополнительный массив, но ты сам сказал - "главное результат". Сочинял так как понял задание. Компилируй и играйся:
# include <iostream>
using namespace std;
int main(){
int array[2][6]={{1,2,3,4,5,6},{7,8,9,10,11,12}};
int array2[6]={1,2,3,4,5,6}; //массив выводимый на экран (соответствует первому ряду начального массива)
int temp=0; //переменная последующей отмены действий
//перебираем варианты
for (int j=0, a=5; j<6; j++,a--){
temp=array2[a];//присваиваем временной переменной значение
array2[a]=array[1][a];//заменяем значения
for (int z=0; z<6; z++){//выводим данные на экран
cout << array2[z]<< " ";
}
cout << endl; //закончили вывод данных
array2[a]=temp; //отменяем действи по замене
}
//закончили перебор вариантов
system ("pause");
return 0;
}
Cereus, мне не где все это вводить :( Спасибо , что потратил время... но не мог бы чтобы ты сам все это ввел в программу и кинул мне адрес для скачки?
herfleisch
14.01.2009, 19:40
Стукни мне в асю. Я тебе помогу сразу как приду из парикмахерской
Cereus, файлы которые ты мне послал не работают... там какой-то файл создается с расширением out...((
задачу мне уже решили... сянкс.
herfleisch
14.01.2009, 20:55
Куда ты пропал? Уже ненадо?
Есть такая проблема.
Поля типа <input type=text> легко заполняются.
С полем типа <input type=file> возникла проблема.
Value игнорирует (известный факт).
Как это можно обойти? Подскажите, на Делфи желательно, но как получится
З.Ы. Сюда, так как язык программирования не сильно важен.
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
int w;
for(int n=1; n<=10; n++)
{
printf("%i ",n);
}
for(int q=2; q<=10; q++)
{
printf("\n");
for(int e=1; e<=10; e++)
{
w=q*e;
printf("%i ",w);
}
}
}
суть думаю ясна, вот только визуально оно немного не восприимчиво. Как это подправить?
Куда ты пропал? Уже ненадо?
Инет карта закончилась как на зло((((
Нет,уже не надо...
Спасибо за старания.
1.Дана матрица. Определить k – количество "особых" элементов данной матрицы, считая элемент "особым", если в строке слева от него находятся меньшие элементы, а справа – большие
2.Выполнить задание с использованием динамических массивов.
Вывести строки матрицы, в которых есть элемент, больший суммы предшествующих и меньше суммы следующих за ним элементов
суть думаю ясна, вот только визуально оно немного не восприимчиво. Как это подправить?
Выровнять что-ль нужно?
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
int w, n, q, e;
for(n=1; n<=10; n++)
{
printf("%4i",n);
}
for(q=2; q<=10; q++)
{
printf("\n");
for(e=1; e<=10; e++)
{
w=q*e;
printf("%4i",w);
}
}
getchar();
}
advokat.holy
15.01.2009, 20:26
Помогите плз! Кто знает JavaScript?????
Я его ваще не знаю.
Есть хтмл форма, там два поля
Имя и Фамилия
и есть кнопка,
надо что б когда юзер вводит в поля данные и нажимает на кнопку, ему
выводился алерт типа ::: Привет, Нейм, твоя фамилия Фамилия.
и на форме еще есть чек-бокс, если его чекнуть то в алерте все буквы должны быть
большие.
<form action="javascript: ShowAlert();" method="post" name="itsme" onSumbit="return ShowAlert()">
<br />Нейм:<br />
<input type="text" name="name" />
<br />ФИО:<br />
<input type="text" name="fio" />
<br />Чекбокс:<br />
<input type="checkbox" name="chb1" value="yes"/> Зробити прописними<br />
<br /><input type="submit" value="ВпереД !" />
</form>
velvetdust
16.01.2009, 15:47
Есть такое задание, по нему написал программу:
Составить программу для нахождения одинаковых букв в словах Х и У равной длины, стоящих на одних и тех же местах.
#include <stdio.h>
#include <conio.h>
main()
{
char word1[]="hello";
char word2[]="hailo";
char *i1,*i2;
int i,m=0;
printf("\n\n");
m=sizeof(word1);
if(sizeof(word2)>m)
m=sizeof(word2);
i1=word1;
i2=word2;
for(i=0;i<m-1;i++)
{
if(*(i1+i)==*(i2+i))
{
printf("%d-letter is \"%c\"\n",i+1,*(i1+i));
}
}
return 0;
}
В итоге программа выводит:
1 - letter is "h"
4 - letter is "l"
5 - letter is "o"
1 - letter is "h"
4 - letter is "l"
5 - letter is "o"
Вопрос такой - как изменить программу так, чтобы вводилось в строку не по одному слову, а по несколько, и сначала, попарно проверялась бы их длина, и, если бы она была одинаковой, выполнялась бы эта программа. Поясню:
char word1[]="magazin", "good", "week", "affect";
char word2[]="magasin", "god", "weak", "effect";
Проверяться должны 1,3 и 4 пары слов. Заранее, спасибо большое!
помогите пожалуйста! тут не сложно. с меня ++++ плиз, выручите
Написать программу, которая бы перекодировала текстовый файл из кодировки MS-DOS в кодировку MS Windows. на С++
velvetdust, вот. изменил немного.
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
char* word1[]={"magazin", "good", "week", "affect"};
char* word2[]={"magasin", "god", "weak", "effect"};
int len=sizeof(word1)/sizeof(char*);
for(int j=0;j<len;j++)
{
char *i1,*i2;
printf("\n\n");
//ïðîâåðêà
if (strlen(word1[j])>strlen(word2[j]) || strlen(word1[j])<strlen(word2[j]))
continue;
int m=strlen(word1[j]);
i1=word1[j];
i2=word2[j];
for(int i=0;i<m;i++)
{
if(*(i1+i)==*(i2+i))
{
printf("%d-letter is \"%c\"\n",i+1,*(i1+i));
}
}
}
return 0;
}
Pascal
Есть массив А (прим.: 3 4 5 3 2 1 5 2), нужно составить массив В в котором будут все элементы из массива А без повторений (т.е.: 3 4 5 2 1)
Turbo Pascal
1.Напишите программу, которая отображает делители одного номера и их число
2.Дано число N. Напишите программу которая записывает в файл а потом отображает в одной строке четные числа а в другой нечетные числа меньше чем N,разделенные пробелом.
3.Известно что все натуральные числа больше чем 7 могут быть отображены в виде суммы чисел 3 и 5. (8=3+5, 9=3+3+3, 10=5+5...) Напишите программу с помощью которой можно узнать сколько 3 и сколько 5 нужно чтобы отображать любое число >7.Результаты нужно записать в файл.
4.Дано число N. Напишите программу с помощью которой получим число К,в которой будут отсутствовать цифры 0 и 5 из N.
Например если N=45207502 то K=4272
+ за правильный ответ :)
Задача 2:
program Task2;
var
N, I: Integer;
F: Text;
begin
Write ('N=');
ReadLn (N);
Assign (F, 'output.txt');
ReWrite (F);
I := 2;
while I < N do
begin
Write (F, I, ' ');
Write (I, ' ');
I := I + 2;
end;
WriteLn;
WriteLn (F);
I := 1;
while I < N do
begin
Write (F, I, ' ');
Write (I, ' ');
I := I + 2;
end;
ReadLn;
Close (F);
end.
Задача 4:
program Task4;
var
S: String;
I: Integer;
begin
WriteLn ('Vvedite stroku');
ReadLn (S);
for I := 1 to Length (S) do
if (S[I] <> '0') and (S[I] <> '5')
then Write (S[I]);
WriteLn; ReadLn;
end.
Задачи 1 и 3 не понял, желательно сформулировать поконкретнее =)
с помощью которой можно узнать сколько 3 и сколько 5 нужно чтобы отображать любое число >7
чисел >7 бесконечно много. Может быть не "любое", а "введенное"?
чисел >7 бесконечно много. Может быть не "любое", а "введенное"?
ДА,именно так :)
1.Напишите программу, которая отображает делители одного номера и их число
например:
номер 20
делители 2,4,5,10
их число 4
или
номер 18
делители 2,3,6,9
их число 4
В первом варианте была ошибка так как задачи перевел с другого языка
_evgeniy_
25.01.2009, 01:08
1.Напишите программу, которая отображает делители одного номера и их число
например:
номер 20
делители 2,4,5,10
их число 4
или
номер 18
делители 2,3,6,9
их число 4
#include "stdafx.h"
#include <math.h>
#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
double c=0,s=0;
cout << "vvedite chislo:";
cin >> c;
cout << c << endl;
cout << "deliteli:";
for(int i=2; i<c; i++)
{
if(fmod(c,i) == 0)
{
cout << i << " ";
s++;
}
}
cout << endl << "CHislo:" << s << endl;
system ("pause");
return 0;
}
на пасе просят:
program Task1;
var
N, I, NProst: Integer;
begin
Write ('N=');
ReadLn (N);
for I := 2 to N-1 do
begin
if (N mod I) = 0
then begin
Inc (NProst);
Write (I, ' ');
end;
end;
WriteLn;
WriteLn ('Chislo: ', NProst);
ReadLn;
end.
Вот 3-я задача:
program Task3;
const
Max = 1000;
var
N, I: Integer;
N3, N5: array [0..Max] of Word;
begin
Write ('N=');
ReadLn (N);
FillChar (N3, SizeOf (N3), 255);
FillChar (N5, SizeOf (N5), 255);
N3[0] := 0;
N5[0] := 0;
for I := 0 to N do
begin
if (N3[I+3] + N5[I+3]) > (N3[I] + N5[I]) + 1
then begin
N3[I+3] := N3[I] + 1;
N5[I+3] := N5[I]
end;
if (N3[I+5] + N5[I+5]) > (N3[I] + N5[I]) + 1
then begin
N3[I+5] := N3[I];
N5[I+5] := N5[I] + 1
end;
end;
WriteLn ('Troek: ', N3[N]);
WriteLn ('Pyaterok: ', N5[N]);
ReadLn;
end.
Сделал динамическим программированием.. Не знаю, может быть можно проще...
Если что-то не понятно - пиши, помогу разобраться
Вот моя простая версия на 3 задачу
Program task3;
var
a,b,c:byte;
begin
write('N=');
readln(c);
for a:=0 to c do
for b:=0 to c do
if 3*a+5*b = c then
begin
if a <> 0 then Write(a,' Troek, ');
if b <> 0 then Write(b,' Pyaterok, ');
Writeln(' = ',c)
end;
end.
нужно закоментить каждую строку проги
или по другому, вообщем препод сказал объяснить прогу!
и еще если он например покажет на определенное место в исходняке я должен объяснить!!!
помогите пожалуйста!!!!!!!
program test_variant_14;
uses crt, windos;
type
rec=record
vopros:string;
tip:byte;
otvet:array [1..4] of string[100];
ball:integer;
end;
st=record
fam:string;
gruppa:integer;
ocenka:byte;
end;
var
zadanija:file of rec;
students:file of st;
stud:st;
z:rec;
pass:string;
key:char;
k:byte;
procedure menu_pr; forward;
procedure regim2; forward;
procedure test; forward;
procedure password; forward;
procedure menu;
begin
repeat
clrscr;
writeln('programma testirovanie studentov ');
writeln(' 1. Prepod');
writeln(' 2. Student');
writeln(' 3. Vyhod');
key:=readkey;
until (ord(key)>=49) and (ord(key)<=51);
case key of
'1': password;
'2': regim2;
'3': halt(1);
end;
end;
procedure prosmotr;
var
a,size:longint;
temp:file of rec;
i:byte;
begin
assign(zadanija,'zadanija');
{$I-}
reset(zadanija);
close(zadanija);
{$I+}
if IOResult <>0 then menu_pr;
reset(zadanija);
begin
while not eof(zadanija) do
begin
read(zadanija,z);
clrscr;
writeln('1-udalenie voprosa, 2-redaktirovanie');
writeln('najmi lubuju klavishu dla sledujushego voprosa');
writeln(z.vopros);
writeln('Pravilnii otvet: ',z.otvet[1]);
if z.tip<>2 then
for i:=2 to 4 do writeln('otvet № ',i,' ',z.otvet[i]);
writeln('ball: ',z.ball);
key:=readkey;
if key='1' then
begin
A:=filepos(zadanija);
Assign(temp,'temp');
Rewrite(temp);
Seek(zadanija,0);
If (a-1)<>0 then
While size<>(a-1) do
Begin
Read(zadanija,z);
Write(temp,z);
Size:=filepos(zadanija);
end;
seek(zadanija,a);
while not eof(zadanija) do
begin
read(zadanija,z);
write(temp,z);
end;
close(zadanija);
close(temp);
erase(zadanija);
rename(temp,'zadanija');
reset(zadanija);
seek(zadanija,a-1);
end;
if key='2' then
begin
seek(zadanija,filepos(zadanija)-1);
writeln('vvedi vopros:');
readln(z.vopros);
writeln(' Vyberete tip voprosa;');
writeln(' 1- neskolko variantov otveta ');
writeln(' 2- trebuetsya vvod znacheniya');
repeat
key:=readkey;
until (key='1') or (key='2');
case key of
'1':z.tip:=1;
'2':z.tip:=2;
end;
writeln(' Vvedi pravilnyi otvet');
Readln(z.otvet[1]);
If z.tip=1 then
for i:=2 to 4 do
begin
z.otvet[i]:='';
writeln(' Vvedi otvet №',i);
readln(z.otvet[i]);
end;
writeln(' Vvedi bally za pravilnyi otvet');
repeat
{$I-}
readln(z.ball);
{$I+}
Until Ioresult=0;
{$I-}
write(zadanija,z);
seek(zadanija,filepos(zadanija)-1);
end;
end;
clrscr;
writeln('вы просмотрели все задания');
writeln('нажмите любую клавишу,');
writeln('чтобы выйти в предыдущее меню');
key:=readkey;
menu_pr;
end;
end;
procedure otchet;
var
temp:file of rec;
begin
assign(students,'students');
{$I-}
Reset(students);
close(students);
{$I+}
if IOResult <> 0 then
begin
writeln('ERROR!!! Nikto ne proshel test!');
writeln('Najmi lyubuyu klavishu');
key:=readkey;
menu_pr;
end;
reset(students);
while not eof(students)do
begin
read(students,stud);
clrscr;
writeln(' Familiya: ',stud.fam);
writeln(' Gruppa: ',stud.gruppa);
writeln(' ball: ',stud.ocenka);
writeln;
writeln(' Najmite lyubuyu klavishu,chtoby prosmotret otchet dalshe');
key:=readkey;
end;
clrscr;
writeln(' Najmite lyubuyu klavishu,chtoby vyiti v menyu');
key:=readkey;
menu_pr;
end;
procedure vvod;{ввод новых заданий}
var
i,j:byte;
begin
Assign(zadanija,'zadanija');
clrscr;
writeln('vvedi vopros:');
readln(z.vopros);
writeln(' Vyberete tip voprosa;');
writeln(' 1- neskolko variantov otveta ');
writeln(' 2- trebuetsya vvod znacheniya');
repeat
key:=readkey;
until (key='1') or (key='2');
case key of
'1':z.tip:=1;
'2':z.tip:=2;
end;
writeln(' Vvedi pravilnyi otvet');
Readln(z.otvet[1]);
If z.tip=1 then
for i:=2 to 4 do
begin
z.otvet[i]:='';
writeln(' Vvedi otvet №',i);
readln(z.otvet[i]);
end;
writeln(' Vvedi bally za pravilnyi otvet');
repeat
{$I-}
readln(z.ball);
{$I+}
Until Ioresult=0;
{$I-}
reset(zadanija);
{$I+}
If ioresult<>0 then
Begin
rewrite(zadanija);
close(zadanija);
End;
reset(zadanija);
seek(zadanija,filesize(zadanija));
write(zadanija,z);
close(zadanija);
writeln(' Novoe zadanie dobavleno');
writeln(' Najmi lyubuyu klavishu');
key:=readkey;
menu_pr;
end;
procedure password;
begin
clrscr;
repeat
writeln(' vvedi parol (123) Dlya vyhoda vvedi EXIT');
readln(pass);
if pass = 'EXIT' then menu;
write(' ERROR!! Parol nevernyi ');
until pass='123';
menu_pr;
end;
procedure menu_pr;
begin
repeat
clrscr;
writeln(' 1. Vvod novyh zadanii');
writeln(' 2. Prosmotr i udalenie zadanii');
writeln(' 3. Otchet ');
writeln(' 4. Vyhod');
key:=readkey;
until (key>='1') and (key<='4');
case key of
'1': vvod;
'2': prosmotr;
'3': otchet;
'4': menu;
end;
end;
procedure regim2;
begin
CLRSCR;
assign(zadanija,'zadanija');
{$I-}
reset(zadanija);
close(zadanija);
{$I+}
if IOResult <> 0 then
begin
writeln('ERROR!!');
writeln('Vvedi zadaniya dlya testa');
writeln;
writeln('Najmi lyubuyu knopku');
key:=readkey;
menu;
end;
writeln('Vvedi familiyu:');
readln(stud.fam);
writeln('vvedi nomer gruppy');
repeat
{$I-}
readln(stud.gruppa);
{$I+}
Until (Ioresult=0) and (stud.gruppa>=1000) and (stud.gruppa<=9999);
writeln('Vy zaregistrirovalis');
writeln('najmite lyubuyu klavishu dlya nachala testa');
key:=readkey;
test;
end;
procedure test;
var
otvet,vop:byte;
m: array [1..4] of byte;
n,k1,stball:byte;
Hour,min,sec,sec100,time:word;
time_hour,time_min,time_sec:word;
Otvet1:string;
Label 1;
begin
vop:=0;
stball:=0;
Assign(zadanija,'zadanija');
reset(zadanija);
gettime(Hour,min,sec,sec100);
time_sec:=filesize(zadanija)*15+sec;
time:=filesize(zadanija)*15;
time_min:=min;
time_hour:=hour;
if time_sec>=60 then
begin
inc(min);
time_min:=min;
time_sec:=time_sec-60;
if time_min>=60 then
begin
inc(hour);
time_hour:=hour;
time_min:=time_min-60;
end;
end;
repeat
read(zadanija,z);
clrscr;
writeln('na kajdoe zadanie otvedeno 15sek');
writeln('poetomu vsego u vas ',time,' sek');
writeln(z.vopros);
if z.tip=1 then
begin
randomize;
writeln;
writeln('otvety:');
for n:=1 to 4 do
begin
1: m[n]:=random(5);
for k1:=1 to (n-1) do
if m[n]=m[k1] then goto 1;
if m[n]=0 then goto 1;
if m[n]=1 then otvet:=n;
writeln(z.otvet[m[n]]);
end;
writeln('Vvedi № pravilnogo otveta');
writeln('Najmi Esc dlya vyhoda iz testa');
repeat
key:=readkey;
until ((key>='1') and (key<='5') or (key=#27));
case key of
'1'..'5':begin
Str(otvet,otvet1);
If key=otvet1 then
begin
stball:=stball+z.ball;
inc(vop);
end;
end;
#27:menu;
end;
end;
if z.tip=2 then
begin
writeln('Vvedi otvet ');
writeln('Vvedi EXIT dlya vyhoda iz testa');
readln(otvet1);
if otvet1=z.otvet[1] then
begin
stball:=stball+z.ball;
inc(vop);
end;
if otvet1='EXIT' then menu;
end;
gettime(hour,min,sec,sec100);
until (hour*10000+min*100+sec>=time_hour*10000+time_min*100+time_sec) or (eof(zadanija));
clrscr;
if (hour*10000+min*100+sec>=time_hour*10000+time_min*100+time_sec) and (not eof(zadanija)) then
writeln('vremja isteklo')
else writeln('vy proshli test!');
writeln('Vy nabrali ', stball,' ballov');
writeln('pravilnyh otvetov: ',vop);
stud.ocenka:=stball;
assign(students,'students');
{$I-}
Reset(students);
{$I+}
if IOResult <> 0 then
begin
rewrite(students);
close(students);
end;
reset(students);
seek(students,filesize(students));
write(students,stud);
close(students);
writeln('najmi lyubuyu klavishu');
key:=readkey;
menu;
end;
begin
menu
end.
Вот моя простая версия на 3 задачу
Program task3;
var
a,b,c:byte;
begin
write('N=');
readln(c);
for a:=0 to c do
for b:=0 to c do
if 3*a+5*b = c then
begin
if a <> 0 then Write(a,' Troek, ');
if b <> 0 then Write(b,' Pyaterok, ');
Writeln(' = ',c)
end;
end.
Хы, а сложность то какая? Квадратичная! Это полный перебор называется. :)
у меня то линейная =)
ASM16d
:D :D :)
P.S. + завтра поставлю а то лимит закончился
Помогите срочно, на завтра надо сдать лабу по ассемблеру, вот задание.
Вводятся два числа в двоичной системе исчисления. Найти их произведение и вывести на экран в двоичной системе исчисления.
Тому кто напишет максимум плюсиков.
NaX[no]rT
28.01.2009, 01:20
Задача собственно такая. С меня много +
Написать макрос, который выводит все возможные перестановки указанных
элементов:
Вот что написал препод, как результат выполнения:
DSL N,'a','b','c'
db 'a', 'b', 'c'
db 'a', 'c', 'b'
db 'c', 'a', 'b'
... и тд
Использовать можно только макроопределения, команды асма в макросе использовать нельзя.
pupkin77
29.01.2009, 17:00
HELP ME PLEASE!!!
в Общем дело 5 минут.
Есть программа *.pas там вводятся данные (цифры) и они обрабатываются и выдается ответ.
В общем нужно сделать чтобы "Дается Исходник Программы. Там Вводятся Данные. Нужно Чтобы 'Вводится Последовательность Из 0 И 1. Программа Должна Выдать 0 Если Число 0-Ей Больше И 1 – В Противном Случае. Пример. 000011. Программа Выдает 0."
unit unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var st,st_p:string;
i:integer;
begin
st:=Edit1.text;
i:=1;
st_p:=st;
for i:=1 to Length(St_p) do
if (st_p[i]='0') and (st_p[i+1]='0') then
st_p[i+1]:='1';
memo1.Lines.Add('введено : '+st);
memo1.lines.Add('получаем : '+st_p);
Edit1.Text:=''
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Text:='';
Memo1.Text:='Вводится Последовательность Из 0 И 1. Программа Должна Выдать 0 Если Число 0-Ей Больше И 1 – В Противном Случае.';
end;
end.
если вводится тока 0 или 1 то можно пойти вот таким способом
procedure TForm1.Button1Click(Sender: TObject);
var
x,y:integer;
st:string;
begin
st:=Edit1.text;
y:=0;
for x:=1 to length(st) do
if st[x]='0' then inc(y);
if y>(length(st) div 2) then y:=0 else y:=1;
memo1.Lines.Add('введено : '+st);
memo1.lines.Add('получаем : '+intostr(y));
Edit1.Text:=''
end;
De-visible
30.01.2009, 22:11
function Trace(txt:string):string;
Begin
form1.Memo1.Lines.Add(txt);
End;
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
st_0, st_1 : integer;
TxtLine : string;
begin
st_0 := 0;
st_1 := 0;
Memo1.Text := '';
Trace('Исходная строка: '+Edit1.Text);
TxtLine := Edit1.Text;
For i := 1 to Length(Edit1.Text) Do
Begin
If StrToInt(TxtLine[i]) = 0 then st_0 := st_0 + 1;//inc(st_0)
If StrToInt(TxtLine[i]) = 1 then st_1 := st_1 + 1;
if (StrToInt(TxtLine[i]) <> 1) and (StrToInt(TxtLine[i]) <> 0) then
Begin
ShowMessage('Введено другое число, пожалуйста введите правильно!');
Edit1.Text := '';
Memo1.Text := '';
Exit;
End;
End;
If st_0 = st_1 then Trace('Нулей и единиц поровну [ 0 = 1]')
Else
If st_0 > st_1 then Trace('Нулей больше чем единиц [0 > 1] : 0')
Else
Trace('Нулей меньше, чем единиц [0 < 1] : 1');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Text:='';
Memo1.Text:='';
end;
end.
:)
может кому пригодитса
Решить систему нел. уравнений модифицированным методом Ньютона, выбирая за начальные приближения . Итерации проводить к совпадению двух последовательных приближений с погрешностью . Производные вычислять методом конечных разниц, вращения матрицы, проводить классическим методом Гауса.
C#using System;
using System.Collections.Generic;
using System.Text;
namespace ZI_22_KMDI_5
{
class Lab
{
const int n = 2;
double E = 0.00001;
double[] X1 = { 0, 0 };
double[] X2 = new double[n];
double[,] MatrixJakobi(double[] X)
{
double[,] J = new double[n, n];
double y, h = 0.000000001;
for (int i = 0; i < n; i++)
{
y = Funkcia(X, i);
for(int k = 0; k < n; k++)
{
X[k] = X[k] + h;
J[i,k] = (Funkcia(X,i) - y)/h;
X[k] = X[k] - h;
}
}
return (J);
}
double Funkcia(double[] X, int f)
{
double fx = 0;
if (f == 0)
fx = -X[0] + X[0] * X[0] - X[1] * X[1] + 0.1;
if (f == 1)
fx = -X[1] + 2 * X[0] * X[1] - 0.1;
return (fx);
}
double[] Funkcii(double[] X)
{
double[] F = new double[n];
F[0] = -X[0] + X[0] * X[0] - X[1] * X[1] + 0.1;
F[1] = -X[1] + 2 * X[0] * X[1] - 0.1;
return (F);
}
bool Pohubka(double[] mX1, double[] mX2)
{
double a, b;
a = (mX2[0] - mX1[0]) / mX1[0]; a = Math.Abs(a);
b = (mX2[1] - mX1[1]) / mX1[1]; b = Math.Abs(b);
Console.WriteLine(Math.Max(a,b));
if (Math.Max(a,b) <= E)
return (true);
else
return (false);
}
double[,] Obertanna(double[,] A)
{
double[] b = new double[n];
double[,] X = new double[n, n];
double[] dX = new double[n];
for (int k = 0; k < n; k++)
{
for (int i = 0; i < n; i++)
{
if (k == i)
b[i] = 1;
else
b[i] = 0;
}
dX = Gaus(A, b);
for (int i = 0; i < n; i++)
X[i, k] = dX[i];
}
return (X);
}
double[] Gaus(double[,] A, double[] b)
{
double[,] GausA = new double[n, (n + 1)];
double[] X = new double[n];
for(int i = 0; i < n; i++)
for (int j = 0; j < (n + 1); j++)
{
if (j != n)
GausA[i, j] = A[i, j];
else
GausA[i, j] = -b[i];
}
for (int l = 0; l < n - 1; l++)
{
double c = GausA[l, l];
for (int k = l + 1; k < (n+1); k++)
{
GausA[l, k] = -GausA[l, k] / c;
for (int i = l + 1; i < n; i++)
GausA[i, k] = GausA[i, k] + GausA[i, l] * GausA[l, k];
}
}
X[n - 1] = -GausA[n - 1, n] / GausA[n - 1, n - 1];
for (int i = n - 2; i >= 0; i--)
{
double s = GausA[i, n];
for (int k = i + 1; k < n; k++)
s = s + GausA[i, k] * X[k];
X[i] = s;
}
return (X);
}
double[] Mnogenna(double[,] A, double[] B)
{
double[] C = new double[n];
C[0] = A[0, 0] * B[0] + A[0, 1] * B[1];
C[1] = A[1, 0] * B[0] + A[1, 1] * B[1];
return (C);
}
public void Calculate()
{
double[,] A = new double[n, n];
double[] fX = new double[n];
double[] Mn = new double[n];
int d = 0;
A = MatrixJakobi(X1);
A = Obertanna(A);
fX = Funkcii(X1);
Mn = Mnogenna(A, fX);
X2[0] = X1[0] - Mn[0];
X2[1] = X1[1] - Mn[1];
d++;
while (Pohubka(X1, X2) != true)
{
if (d > 5)
{
A = MatrixJakobi(X1);
A = Obertanna(A);
}
X1[0] = X2[0];
X1[1] = X2[1];
fX = Funkcii(X1);
Mn = Mnogenna(A, fX);
X2[0] = X1[0] - Mn[0];
X2[1] = X1[1] - Mn[1];
d++;
Console.WriteLine("x(1) = " + X2[0]);
Console.WriteLine("x(2) = " + X2[1]);
}
Console.WriteLine("------");
Console.WriteLine("Результат");
Console.WriteLine("x(1) = " + X2[0]);
Console.WriteLine("x(2) = " + X2[1]);
Console.WriteLine("------");
Console.WriteLine("Перевiрка 1");
Console.WriteLine(-X2[0] + X2[0] * X2[0] - X2[1] * X2[1] + 0.1);
Console.WriteLine(-X2[1] + 2 * X2[0] * X2[1] - 0.1);
Console.WriteLine("Перевiрка 2");
Console.WriteLine(X2[0] + " = " + (X2[0] * X2[0] - X2[1] * X2[1] + 0.1));
Console.WriteLine(X2[1] + " = " + (2 * X2[0] * X2[1] - 0.1));
}
}
class Program
{
static void Main(string[] args)
{
Lab lab5 = new Lab();
lab5.Calculate();
Console.Read();
}
}
}
метод Рунге-Кутта 4 порядка:
using System;
using System.Collections.Generic;
using System.Text;
namespace ZI_22_KMDI_6
{
class RyngeRytta4
{
const int n = 2; // Порядок системи
const double h = 0.1; // Крок
double x, a = 0, b = 1; // Проміжок
global double[] y = new double[n]; //если небольшой масив
global double[] f = new double[n]; //тогда можна без global
void dy() // Праві частини рівнянь
{
f[0] = y[1];
f[1] = (8 * y[1] - 5 * y[0] - 4 * Math.Exp(x) * Math.Sin(x / 2)) / 4;
}
public void Calculate()
{
double[] K1 = new double[n];
double[] K2 = new double[n];
double[] K3 = new double[n];
double[] K4 = new double[n];
double[] z = new double[n];
// Початкові значення
y[0] = 1; y[1] = 1;
x = a;
do
{
dy();
for (int i = 0; i < n; i++)
{
K1[i] = f[i];
z[i] = y[i];
y[i] = z[i] + 0.5 * h * K1[i];
}
x = x + 0.5 * h;
dy();
for (int i = 0; i < n; i++)
{
K2[i] = f[i];
y[i] = z[i] + 0.5 * h * K2[i];
}
dy();
for (int i = 0; i < n; i++)
{
K3[i] = f[i];
y[i] = z[i] + 0.5 * h * K3[i];
}
x = x + 0.5 * h;
dy();
for (int i = 0; i < n; i++)
{
K4[i] = f[i];
y[i] = z[i] + h * (K1[i] + K4[i] + 2 * (K2[i] + K3[i])) / 6;
}
Console.WriteLine("x = " + x + "; y = " + y[0] + "; y' = " + y[1]);
}
while (x < b);
}
}
class Program
{
static void Main(string[] args)
{
RyngeRytta4 Lab6 = new RyngeRytta4();
Lab6.Calculate();
Console.Read();
}
}
}
опять задача из екзамена:
Решить систему уравнений стандартным методом Ньютона без вращения матрицы Якоби(систему линейных уравнений алгебраизма развязать методом Гаусса с формой столбца расписания без выбора главного элемента; якобиан обч. разностным методом), выбирая за начальные приближения
С:
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define n 2
void main(void)
{
clrscr();
int i, j, L, k, m;
const double E=1e-5;
double x[n], Xprev[n], F[n], J[n][n], a[n][n+1], deltaX[n];
double f(int i,double x[n]);
double Jacobi(int i,int j,double x[n]);
double max(double x[n],double Xprev[n]);
x[0]=0.00000001; //pochatkove
x[1]=0.00000001; //nablyzhennya
m=0;
do
{
for(i=0;i<=n-1;i++)
Xprev[i]=x[i];
//----------FORMUYEMO F TA J------------------------
for(i=0;i<=n-1;i++)
{
F[i]=f(i,x);
for(j=0;j<=n-1;j++)
J[i][j]=Jacobi(i,j,x);
}
//--------------------------------------------------
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++)
a[i][j]=J[i][j];
a[0][n]=F[0];
a[1][n]=F[1];
//------------- GAUSS PO STOVPTSYAH----------------------
for(L=0;L<=n-2;L++)
{
for(k=L+1;k<=n;k++)
{
a[L][k]=-a[L][k]/a[L][L];
for(i=L+1;i<=n-1;i++)
a[i][k]=a[i][k]+a[i][L]*a[L][k];
}
}
// ------ZVOROTNIY HID-------
deltaX[n-1]=-a[n-1][n]/a[n-1][n-1];
for(i=n-2;i>=0;i--)
{
deltaX[i]=a[i][n];
for(k=i+1;k<=n-1;k++)
deltaX[i]+=a[i][k]*deltaX[k];
}
for(i=0;i<=n-1;i++)
x[i]+=deltaX[i]; //--UTOCHNENE ZNACHENNYA x[i]--
m++;
}
while(max(x,Xprev)>E);
printf("\t ---ROZVYAZOK SYSTEMY---\n\t| (ZA %d ITERATSII): |\n",m);
for(i=0;i<=n-1;i++)
printf("\t| x[%d]= %lf |\n",i,x[i]);
printf("\t -----------------------");
printf("\nPEREVIRKA_1!!! %lf\n",-x[0]+x[0]*x[0]-x[1]*x[1]-0.1);
printf("PEREVIRKA_2!!! %lf\n",-x[1]+2*x[0]*x[1]-0.1);
getch();
}
double f(int i,double x[n])
{
if(i==0)
return -x[0]+x[0]*x[0]-x[1]*x[1]-0.1;
else
return -x[1]+2*x[0]*x[1]-0.1;
}
double Jacobi(int i,int j,double x[n])
{
const double h=1e-9;
double prev=f(i,x);
x[j]+=h;
return (f(i,x)-prev)/h;
}
double max(double x[n],double Xprev[n])
{
int i;
double z,q;
z=fabs((x[0]-Xprev[0])/Xprev[0]);
for(i=1;i<=n-1;i++)
{
q=fabs((x[i]-Xprev[i])/Xprev[i]);
if(q>z)
z=q;
}
return z;
}
модифицирований метод Ейлера
C:
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define n 2
#define pi 3.14159265
void main(void)
{
int i;
double x,a,b,h,y[n],yn[n],yz[n];
double dy(int i,double x,double y[n]);
double modyficEYLER(int i,double h,double x,double y[n],double yz[n]);
a=pi/4;
b=pi/3;
h=0.026;
x=a;
y[0]=0.0;
y[1]=2.0;
printf("x= %lf\ty[1]= %lf\ty[2]= %lf\n",x,y[0],y[1]);
do
{
printf("x= %lf\t",x+h);
for(i=0;i<=n-1;i++)
{
yz[i]=y[i];
yn[i]=modyficEYLER(i,h,x,y,yz);
printf("y[%d]= %lf\t",i+1,yn[i]);
}
printf("\n");
for(i=0;i<=n-1;i++)
y[i]=yn[i];
x+=h;
}
while(x<=(b-h));
printf("\n");
getch();
}
double dy(int i,double x,double y[n])
{
if(i==0)
return y[1];
else
return -4*y[0]+8*(1/tan(2*x));
}
double modyficEYLER(int i,double h,double x,double y[n],double yz[n])
{
yz[i]=yz[i]+h*dy(i,x,yz);
return y[i]+0.5*h*( dy(i,x,y)+dy(i,x+h,yz) );
}
интегрирование функции методо прямоугольников
pascal:
program lab4_11v;
uses Crt;
const a = 0;
b = 3;
E = 0.001;
function arcsin(x:real):real;
begin
if x=1.0 then
arcsin := Pi/2.0
else
arcsin := arctan(x/sqrt(1-x*x));
end;
function f(x:double):double;
begin
f:= arcsin(sqrt(x/(1+x)));
end;
var
S, h,n,M, x,Xn,I : double;
begin
ClrScr;
M := 0.05413; {max|f''(x)|}
h := sqrt( (24*E) / ((b-a)*M) ); {krok}
n := (b-a)/h; {4aCTuH}
S := 0;
x := a;
repeat
begin
Xn := x+h;
S := S + f((x+Xn)/2);
x := Xn;
end;
until (Xn <= (b-h));
I:= h * S;
writeln('I = ',I:5:5);
readln;
end.
eLWAux, double объявляй как static или global... В стэке нельзя большие массивы хранить, а то будет stack overflow!
В стэке нельзя большие массивы хранить, а то будет stack overflow!
спасибо за ошибку (:
// программа расчитана на небольшие системи уравнений
// т.е. и на небольшие массиви
// если у вас >100 уравнений, тогда всюда перед обьявлением массива допишите global ..или static
POS_troi
01.02.2009, 21:45
Просили накатать лабу по генератору пассвордов
Вот ложу еще и сюда исходники, вдруг кому надо будет.
Написано с ходу и без особого энтузиазма, кому что не нравиться переделывайте сами ;)
http://depositfiles.com/files/uc1fnf6qt
С сохранением в файл (попросили дописать)
http://depositfiles.com/files/tcqqnia0d
2Модераторы
Звыняюсь если нарушаю но задолбали ПМ-ить , поступайте как знаете.
Просили написать софт по решению нелинейных уравнений методом итерации.
С меня +
venom_aerocore
03.02.2009, 05:24
Помогите с курсачом.
Прога на Си.
Имеется граф надо найти количество компонент связанности в дополнениии заданного графа.
Ребра графа дополнения я уже нашел осталось тольок найти сколько в графе который состоит из найденных ребер компонент связанности.
Вот такой вот сломаймозг.
-----------------------------------
to cardons:
http://slil.ru/26609953
К обеду мож прога буит.
-----------------------------вот прога к методичке
/* Lab3 28203 */
#include <stdio.h>
#include <math.h>
#include <conio.h>
main()
{
int n=0;
float x,y,z,c,a,b,x0=1,y0=1,eps=0.001;
x=x0; y=y0;
textcolor(90+1);
clrscr();
puts("n x(k) x(k+1) X(k+1)-X(k) y(k) y(k+1) |Y(k+1)-Y(k)|");
do
{
a=x+(x*x+y-6)-(x+y-4);
b=y+(x*x+y-6)-2*(x+y-4);
//a=(2*x-3*x+2)/1-2*x;
//b=(2*x*x*x-13*x)/1-2*x;
z=x; c=y;
printf("|%d| %.4f| %.4f| %.4f| %.4f| %.4f| %.4f| \n",n++,x,a,fabs(a-x),y,b,fabs(b-y));
x=a; y=b;}
while(fabs(z-x)>eps || fabs(c-y)>eps);
getch();
return 0;
}
venom_aerocore, тебе нужен обычный DFS (depth first search - поиск в глубину). Посмотри - реализаций в сети (должно быть) полно
Помогите пожалуйста решить однородный массив в паскале!
Имеется список запасов на складе типа:
наименование пр. / количество кг/ стоимость ед
Вывести наименование продукта, общая стоимость которого максимальна.
Помогите пожалуйста! очень нужно!
Помогите пожалуйста решить однородный массив в паскале!
Имеется список запасов на складе типа:
наименование пр. / количество кг/ стоимость ед
Вывести наименование продукта, общая стоимость которого максимальна.
var
stoim:array[1..10] of integer;
kol:array[1..10] of integer;
nai:array[1..10] of string;
i,bufs,j,bufk:integer;
bufc:string;
begin
for i:=1 to 10 do
begin
Writeln('Tovar #',i);
write('Nomenklatura: ');
readln(nai[i]);
write('Cena: ');
readln(stoim[i]);
write('Kol-vo: ');
readln(kol[i]);
end;
for j:=1 to 10 do
for i:=1 to 9 do
begin
if (kol[i]*stoim[i]) < (kol[i+1]*stoim[i+1]) then
begin
bufk:=kol[i];
kol[i]:=kol[i+1];
kol[i+1]:=bufk;
bufs:=stoim[i];
stoim[i]:=stoim[i+1];
stoim[i+1]:=bufs;
bufc:=nai[i];
nai[i]:=nai[i+1];
nai[i+1]:=bufc;
end;
end;
writeln('max:');
write(nai[1]);
write(' ',kol[1]);
write(' ',stoim[1]);
end.
Haта, найди максимальную стоимость в массиве, и дыведи его наименование,..
если нужна просто стоимость то это
if (kol[i]*stoim[i]) < (kol[i+1]*stoim[i+1]) then
замени на это
if stoim[i] < stoim[i+1] then
http://img5.imageshost.ru/imgs/090211/121073495fb4743b8f0a6b5ef4e0f189/ta0316982c13da2d6b248d62946b8ad31.jpg (http://imageshost.ru/links/d8c5e4c9798f6cbbcd5837fc0966bfd2)
Эт на Delphi. Помогите пжалусто. Ни че не понимаю((((
вобщем дан массив:
[A1] [A2] [A3] [A4] [A5]
Если индекс а (i) делится без остатка на 2, то он четный и используется формула 1/(i*i+2) иначе 1/i
Вроде так. Делфи не знаю.
Помогите мне с лабой..надо написать программу на паскале желательно 7.0 или 7.1.
Вообщем сама задача:
Из каждой очередной тройки букв удалить среднюю букву. Тип списка: циклический.
P.S заранее благодарен . :cool:
Нужно составить прогу...
Например:
Нужно найти всевозможные комбинации от 1 до 40 состоящиe из 8 чисел... например приведу несколько вариантов комбинаций: 1.2.3.4.5.6.7.8 ; 1.2.3.4.5.6.7.9 ; 1.2.3.4.5.6.7.39 ; 1.2.3.4.5.6.24.40 ; 2.7.9.16.23.25.33.37.
Ну и чтою можно было вводить(изменять) эти значения(т.е. значения 40 и 8).
Буду очень благодарен...
Отблагодарю репутацией.
Спасибо за внимание.
Bayazid, http://e-maxx.ru/algo/generating_combinations
Вначале хотел свой код выложить, потом решил, что там тебе больше понравится)
Bayazid, http://e-maxx.ru/algo/generating_combinations
Вначале хотел свой код выложить, потом решил, что там тебе больше понравится)
Спасибо за внимание, но не мог бы ты сделать саму программу?
~NeiTRoN~
13.02.2009, 09:30
Народ такая проблема. Есть задача, Надо ввести информацию о студентах и потом вывести их список в алфавитном порядке.
Вот код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
#define n 4
using namespace std;
string alf = "ABCDEFGHJabcdefg";
struct w{char fam[15];
char name[15];
char otch[15];
char pol[2];
int vozr,kurs;
};
void main()
{w web[n];
int i=0,k=0;
printf("Vvedite fam\n");
while(gets(web[i].fam)!=NULL && i<n)
{
printf("Vvedite name\n");
gets(web[i].name);
printf("Vvedite otchestvo\n");
gets(web[i].otch);
printf("Vvedite pol(m ili f)\n");
gets(web[i].pol);
/*printf("Vvedite vozrast i kurs\n");
cin >> web[i].vozr >> web[i].kurs;*/
if(i<n)printf("Vvedite sled fam\n");i++;
}
k=i;
puts("isxod table");
puts(" fam | name | otch");
int j=0,b=0;
for(j=0;j<alf.length();j++)
{
for(i=0;i<k;i++)
if(web[i].fam[0]==alf[j])
printf("%15s%17s%20s\n",web[i].fam,web[i].name,web[i].otch);
}
getch();
}
Но есть проблемы.
Во-первых если раскоментировать ввод возраста и курса то он не дает во второй,третий и т.д. раз вводить фамилию,а сразу перескакивает на ввод имени.
Во-вторых он проверяет только по первой букве, а надо что бы при совпадении проверял еще и по второй,а потом если надо по третьей и т.д.
В-третьих программа не пправильно сортирует фамили которые начинаются то с маленьких,то с больших букв!!!
Помогите плиз кто может исправить эти проблемы!!!
scrat: юзайте CODE
1.Простые числа
а.По определению:вывести все простые числа,меньше заданного натурального числа N,проверяя в цикле каждое число на простоту перебором делителей...
б.Решето Эратосфена.Ревлизовать алгоритм поиска простых чисел в интервале от 2 до заданного N при помощи алгоритма Решето Эратосфена...
2.Треугольник Паскаля
а.По определению:каждый элемент треугольника являеться суммой двух элементов "над" ним.Вывести несколько строк треугольника Паскаля,используя не более одного одомерного массива(т.е хранить только текущую строку)
б.по формуле биномиальных коэфициэнтов.Факториал реализовать рекурсивно
ЗЫ исходники (коды) нужны на "С"
зарание благодарен
Помогите с блок-схемой
procedure zafam;
begin
{$I-}
reset (Bz);
{$I+}
if IOResult <>0 then
begin
error('Запрос не возможен!!!!');{Процедура}
end
else begin
OKHO (10, 2,70,23,2);{Процедура}
repeat
write ('Введите фамилию: ');
readln (a);
b:=0;
while not eof (Bz) do
begin
read (Bz,bazz);
if a=bazz.FAM then tabl;
end;
prod('Запрос по Фамилии');{Процедура}
until (z='N') or (z='n');
Close (Bz);
ch10:=#27;
gmenu (5,3);{Процедура}
end;
end;
Программисты помогите мне..я на грани отчисления..
___________________________________________
Помогите мне с лабой..надо написать программу на паскале желательно 7.0 или 7.1.
Вообщем сама задача:
Из каждой очередной тройки букв удалить среднюю букву. Тип списка: циклический.
P.S заранее благодарен
jawbreaker
15.02.2009, 15:51
GOODmen
Первая выглядит так:
#include <stdio.h>
#include <math.h>
int is_prime(int N)
{
int i;
for(i = 2; i <= sqrt(N); i++)
if (N % i == 0)
return 0;
return 1;
}
int main()
{
int a, k;
scanf("%d", &a);
for(k = 1; k <= a; k++)
if (is_prime(k))
printf("%d\n", k);
return 0;
}
Вторая примерно так:
#include<stdio.h>
void main()
{
int num[100], i, j;
for(i=0;i<=99;i++) /*Заполнение массива*/
num[i]=i+1;
for(i=1;i<=99;i++)
{
if(num[i]!=0)
{
for(j=(i+1);j<=99;j++)
{
if(num[j]!=0)
{
if((num[j]%num[i])==0)
num[j]=0;
}
}
}
}
for(i=0;i<=99;i++)
{
if(num[i]!=0) /*Ненулевые числа - простые*/
printf("\n%d",num[i]);
}
}
GOODmen
Первая выглядит так:
#include <stdio.h>
#include <math.h>
int is_prime(int N)
{
int i;
for(i = 2; i <= sqrt(N); i++)
if (N % i == 0)
return 0;
return 1;
}
int main()
{
int a, k;
scanf("%d", &a);
for(k = 1; k <= a; k++)
if (is_prime(k))
printf("%d\n", k);
return 0;
}
Вторая примерно так:
#include<stdio.h>
void main()
{
int num[100], i, j;
for(i=0;i<=99;i++) /*Заполнение массива*/
num[i]=i+1;
for(i=1;i<=99;i++)
{
if(num[i]!=0)
{
for(j=(i+1);j<=99;j++)
{
if(num[j]!=0)
{
if((num[j]%num[i])==0)
num[j]=0;
}
}
}
}
for(i=0;i<=99;i++)
{
if(num[i]!=0) /*Ненулевые числа - простые*/
printf("\n%d",num[i]);
}
}
Спасибо...
первая задача это простые число под буквой "А"?
вторая это треугольник паскаля под буквой "А"?
Pascal
Создать программу которая вычисляет число из имени по скеме
1 2 3 4 5 6 7 8 9
A B C D E F G H I
I K L M N O P Q R
J L U V W X Y Z
сначала пишется имя и каждая буква превращается в соответствуюшию цифру
а потом они сложатся по двеби так пока останеца только одна цифра.Если получается номер из двух цифр тогда они суммируются (14=1+4=5, 21=2+1=3)
Пример:
[center]http://upimg.ru/i/465/1234709962186949982dca6c48f.jpg
Главное чтоб результат имел форму пирамиды.
Нужно срочно,максимум 1 час
+ кто решит правильно
Задали написать любую программу чтоб работала с xml базой?
Может у кого есть какие исходники своих прог дайте пожалуйста!
Papa_Costa
16.02.2009, 03:35
помогите пожалуйста сделать лабораторную. она очень легкая! просто информатика это не моё... был бы очень благодарен...
вот условие в *.docx
http://slil.ru/26643705
oneofnamers
16.02.2009, 13:18
Кто-нибудь, подскажите пожалуйста книги по Си/Си++, где бы описывалось применение системных функции Линукс.
Вот условие лабораторной:
Написать программу на си/си++, которая копирует файлы и считывает их атрибуты. Использовать системные функции ОС Линукс.
frostJKE
16.02.2009, 17:06
Парни помогите кто чем может. Мне нужно написать программку на C++
Собственно вот задание: Ввести с клавиатуры русское слово. Разбить его по слогам.
**
Помогите мне с лабой..надо написать программу на паскале.
Вообщем сама задача:
Из каждой очередной тройки букв удалить среднюю букву. Тип списка: циклический.
P.S заранее благодарен
**
Люди очень нужна ваша помощь, задачка на C++
Задание:
Дан массив A[n] , найти наименьшее число элементов которые нужно выкинуть из массива чтобы осталась возрастающая последовательность элементов.
неделю раздумий не к чему не привели :(( можно даже словами, как вообще организовать такой алгоритм... программу я сам смогу написать... очень прошу помощи ))
groundhog
16.02.2009, 19:37
Ну сам подумай... Какие признаки возрастающей последовательности? Каждый последующий элемент больше предыдущего... Т.е. те элементы, которые не удовлетворяют этому критерию и должны быть отброшены... Решение ещё не очевидно?
если б было всё так просто я бы не обращался, тут другое нужно найти МИНИМАЛЬНОЕ количество элементов которые нужно откинуть , покажу на примере:
последовательность : 1 7 1 8 3 5 9 8 0
решение должно быть : 1 1 3 5 9 (откинуто всего 4)
если по вашему то получиться отсеивание каждого элемента что больше предыдущего то есть останется 1 7 8 9 - а это не удовлетворяет условию...
а если ещё вначале самого массива будет максимальная величина в массиве то отброситься вообще всё что после неё, тоесть нужно найти оптимальный элемент с которого и начинать отсеивание... но и тут не так всё просто , простое отсеивание не подойдёт, так как нужно при каждом удовлетворении условия что след. элемент больше предыдущего запускать новый цикл который проверял бы элементы после этих двух...
я уже по не множку грешу в сторону рекурсий...
вот помоги исправить задачу...нужно сделать так что бы из каждой очередной тройки букв удалить среднюю букву. Тип списка циклический.
А данная программа удаляет первую букву..а нужно что бы последнюю.
это паскаль
Uses Crt;
type
pSpisok = ^Slova;
Slova = Record
slv : string[10];
next : pSpisok
end;
var
Head1, Tail1, Head2, Tail2, Ptr1, Ptr2, Pysk1, Pysk2 : pSpisok;
St, Str : string[10];
F : text;
I, K, N : integer;
Name : string;
begin
ClrScr;
Writeln ('Fail dolgen sodergat slova, raspologennie postrochno');
Writeln ('Vvedite imya faila: ');
Readln (Name);
Assign (F, Name);
Reset (F);
Head1 := Nil;
Tail1 := Nil;
Head2 := Nil;
Tail2 := Nil;
ClrScr;
While not Eof(F) do
begin
Readln (F, St);
New (Ptr1);
Ptr1^.Slv :=St;
Ptr1^.Next := Nil;
If Tail1 <> Nil then
Tail1^.Next := Ptr1;
Tail1 := Ptr1;
If Head1 = Nil then
Head1 := Ptr1;
end;
Tail1^.Next := Head1;
Ptr1 := Head1;
Pysk1 := Head1;
repeat
Str := Ptr1^.Slv;
N := length(str) – 1 div 3;
If Str <> '' then K := 1;
for I := 1 to N do
begin
Delete (Str, K, 1);
K := K + 2;
end;
New (Ptr2);
Ptr2^.Slv := Str;
Ptr2^.Next := Nil;
If Tail2 <> Nil then
Tail2^.Next := Ptr2;
Tail2 := Ptr2;
If Head2 = Nil then
Head2 := Ptr2;
Pysk1 := Ptr1^.Next;
Ptr1 := Pysk1;
Until Pysk1 = Head1;
Tail2^.Next := Head2;
Pysk1 := Head1;
Pysk2 := Head2;
Ptr1 := Head1;
ptr2 := Head2;
repeat
Write (Ptr1^.Slv,' ');
Writeln (Ptr2^.Slv);
Pysk1 := Ptr1^.Next;
Pysk2 := Ptr2^.Next;
Ptr1 := Pysk1;
Ptr2 := Pysk2;
until Pysk2 = Head2;
repeat until KeyPressed;
End.
Задание:
Дан массив A[n] , найти наименьшее число элементов которые нужно выкинуть из массива чтобы осталась возрастающая последовательность элементов.
class Program
{
static void Main(string[] args)
{
int[] A = new int[] { 1, 7, 1, 8, 3, 5, 9, 8, 0 };
int count = calc(A);
Console.WriteLine(count);
Console.ReadLine();
}
//подсчет минимального числа исключений
private static int calc(int[] A)
{
//пербираем число отбрасываемых элементов
for (int i = 0; i < A.Length; i++)
{
if(Exclude(A, 0, i, new bool[A.Length]))
return i;
}
return A.Length;
}
//исключение одного элемента
private static bool Exclude(int[] A, int fromIndex, int excludeCount, bool[] excluded)
{
if(excludeCount==0)
return Check(A, excluded);
for (int i = fromIndex; i < A.Length; i++)
{
excluded[i] = true;
if(Exclude(A, i + 1, excludeCount - 1, excluded))
return true;
excluded[i] = false;
}
return false;
}
//проверка на возрастание
private static bool Check(int[] A, bool[] excluded)
{
int prev = int.MinValue;
for(int i=0;i<A.Length;i++)
if(!excluded[i])
{
if (A[i] <= prev)
return false;
prev = A[i];
}
return true;
}
}
Uses Crt;
type
pSpisok = ^Slova;
Slova = Record
slv : string[10];
next : pSpisok
end;
var
Head1, Tail1, Head2, Tail2, Ptr1, Ptr2, Pysk1, Pysk2 : pSpisok;
St, Str : string[10];
F : text;
I, K, N : integer;
Name : string;
begin
ClrScr;
Writeln ('Fail dolgen sodergat slova, raspologennie postrochno');
Writeln ('Vvedite imya faila: ');
Readln (Name);
Assign (F, Name);
Reset (F);
Head1 := Nil;
Tail1 := Nil;
Head2 := Nil;
Tail2 := Nil;
ClrScr;
While not Eof(F) do
begin
Readln (F, St);
New (Ptr1);
Ptr1^.Slv :=St;
Ptr1^.Next := Nil;
If Tail1 <> Nil then
Tail1^.Next := Ptr1;
Tail1 := Ptr1;
If Head1 = Nil then
Head1 := Ptr1;
end;
Tail1^.Next := Head1;
Ptr1 := Head1;
Pysk1 := Head1;
repeat
Str := Ptr1^.Slv;
N := length(str) - 1 div 3;
If Str <> '' then K := 1;
for I := 1 to N do
begin
Delete (Str, K+1, 1);
K := K + 2;
end;
New (Ptr2);
Ptr2^.Slv := Str;
Ptr2^.Next := Nil;
If Tail2 <> Nil then
Tail2^.Next := Ptr2;
Tail2 := Ptr2;
If Head2 = Nil then
Head2 := Ptr2;
Pysk1 := Ptr1^.Next;
Ptr1 := Pysk1;
Until Pysk1 = Head1;
Tail2^.Next := Head2;
Pysk1 := Head1;
Pysk2 := Head2;
Ptr1 := Head1;
ptr2 := Head2;
repeat
Write (Ptr1^.Slv,' ');
Writeln (Ptr2^.Slv);
Pysk1 := Ptr1^.Next;
Pysk2 := Ptr2^.Next;
Ptr1 := Pysk1;
Ptr2 := Pysk2;
until Pysk2 = Head2;
repeat until KeyPressed;
End.
Вот, удаляет среднюю букву из каждой тройки, попробуй.
Uses Crt;
type
pSpisok = ^Slova;
Slova = Record
slv : string[10];
next : pSpisok
end;
var
Head1, Tail1, Head2, Tail2, Ptr1, Ptr2, Pysk1, Pysk2 : pSpisok;
St, Str : string[10];
F : text;
I, K, N : integer;
Name : string;
begin
ClrScr;
Writeln ('Fail dolgen sodergat slova, raspologennie postrochno');
Writeln ('Vvedite imya faila: ');
Readln (Name);
Assign (F, Name);
Reset (F);
Head1 := Nil;
Tail1 := Nil;
Head2 := Nil;
Tail2 := Nil;
ClrScr;
While not Eof(F) do
begin
Readln (F, St);
New (Ptr1);
Ptr1^.Slv :=St;
Ptr1^.Next := Nil;
If Tail1 <> Nil then
Tail1^.Next := Ptr1;
Tail1 := Ptr1;
If Head1 = Nil then
Head1 := Ptr1;
end;
Tail1^.Next := Head1;
Ptr1 := Head1;
Pysk1 := Head1;
repeat
Str := Ptr1^.Slv;
N := length(str) - 1 div 3;
If Str <> '' then K := 1;
for I := 1 to N do
begin
Delete (Str, K+1, 1);
K := K + 2;
end;
New (Ptr2);
Ptr2^.Slv := Str;
Ptr2^.Next := Nil;
If Tail2 <> Nil then
Tail2^.Next := Ptr2;
Tail2 := Ptr2;
If Head2 = Nil then
Head2 := Ptr2;
Pysk1 := Ptr1^.Next;
Ptr1 := Pysk1;
Until Pysk1 = Head1;
Tail2^.Next := Head2;
Pysk1 := Head1;
Pysk2 := Head2;
Ptr1 := Head1;
ptr2 := Head2;
repeat
Write (Ptr1^.Slv,' ');
Writeln (Ptr2^.Slv);
Pysk1 := Ptr1^.Next;
Pysk2 := Ptr2^.Next;
Ptr1 := Pysk1;
Ptr2 := Pysk2;
until Pysk2 = Head2;
repeat until KeyPressed;
End.
Вот, удаляет среднюю букву из каждой тройки, попробуй.
блин идиот...я искал эту строчку но не нашел..)))
думал еще как же программа удаляет без этого действия....тупица)))лови + помог найти!
С паскалем разобрался..
плз напишите програмку в Делфи...то для меня это темный лес...
Вычислить площадь плоской фигуры, заключенной между дугами кривых:
y(x)=-Ln(x) и y(x)=R-x
При каком значении R площадь этой фигуры не превышает единицы.
Algol
Спасибо огромное за старание!!! Но есть маленькая проблемка... я ещё 1 курс и классы мы не проходили :( можно это какнить переписать более просто.. через массивы, циклы и т.д. спс!
Срочно нужна помощь
Нада на Visual C++
1. Введите одномерный целочисленный массив А.
2. В массиве дважды произвести циклический сдвиг влево всех элементов,
предшествующих максимальному из нечетных.
3. Вывести полученный массив.
c меня +
-=megahertz=-
20.02.2009, 17:50
у кого есть исходник простого теста на С++? 2 вопроса и у каждого по 2 варианта ответа...после чего программа считывает правильные ответы и ставит кол-во баллов
Уважаемые форумчане, помогите написать курсовую на паскале бедному студенту...пожалуйста.
Курсовая работа по курсу "Информатика"
ЗАДАНИЕ:
Написть программу по обслуживанию базы данных. программа олжна включать:
1. Вод данных (как пероначальные- создание БД, так и дозапись)
2. Вывод данных на экран (в виде таблицы)
3. Поиск записи по ключу (первому полю)
4. Корректировка записи по ключу (всех полей)
5. Сортировка данных по второму полю методом пузырька
6. Поиск максимального или минимального элемента по четвертому полю
7. Файл для хранения БД должен быть типизированным.
к примеру нужно создать базу данных телефонных номеров (номер телефона, фио абонента, город, дата регистрации)
Помочь или написать полностью за тебя? Если второе, то много писанины, а если первое, то давай наработки.
-=megahertz=-
20.02.2009, 19:06
а на мой вариант у кого найдется ответ? *sorry* за наглость... :[
Помочь или написать полностью за тебя? Если второе, то много писанины, а если первое, то давай наработки.
помочь. наработок пока особых нет правда...
Я вот чего не помню...как создать и забить текстовый документ и как его "дозаписывать"
как выводить данные на экран в виде таблицы?
как понимать "методом пузырька"?
и по какому принципу должен быть типизирован файл хранения бд.
просто нихрена препод не объяснил нормально- лишь задание выдал, а дальше делайте ребята, что хотите...
Я вот чего не помню...как создать и забить текстовый документ и как его "дозаписывать"
Создать можно самому, либо rewrite, забить записью в файл, а дозапись - append.
как понимать "методом пузырька"?
так и понимать, есть такой метод сортировки, самый лёгкий.
и по какому принципу должен быть типизирован файл хранения бд.
если не сказано, то как удобно
andrew1991
20.02.2009, 20:51
Помогите решить задачу на С++:
нужно построить график функции : Sin(sqrt(2*x)) + cos(x)
диапазон изменения аргумента: а=0 в=2П!
Число точек графика 50!
ПОСТРОИТЬ ГРАФИК БЕЗ ИСПОЛЬЗОВАНИЯ ГРАФИЧЕСКОГО РЕДАКТОРА!!!!
Заранее спс!
Есть сортировка массива (tasm):
masm
model small
.data
message1 db 10,13, 'Primary array : $',10,13
message2 db 10,13, 'Sorted array : $',10,13
promt db 10,13,10,13,'Press any key to exit...$'
len equ 9
mas dw 2,7,4,0,1,9,3,6,5,8
tmp dw 0
i dw 0
j dw 0
.stack
.code
main:
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset message1
int 21h
mov cx,10
mov si,0
_outputArray:
mov ah,2
mov dx,mas[si]
add dl,30h
int 21h
add si,2
loop _outputArray
; for (i=0;i<9;i++)
; for (j=9;j>i;j--)
; if (mas[i]>mas[j])
; {tmp=mas[i];
; mas[i]=mas[j];
; mas[j]=tmp;}
sort:
mov j,9
jmp cyclj
xchng:
mov bx,i
shl bx,1
mov ax,mas[bx]
mov bx,j
shl bx,1
cmp ax,mas[bx]
jle lesser
mov tmp,ax
mov ax,mas[bx]
mov bx,i
shl bx,1
mov mas[bx],ax
mov bx,j
shl bx,1
mov ax,tmp
mov mas[bx],ax
lesser:
dec j
cyclj:
mov ax,j
cmp ax,i
jg xchng
inc i
cmp i,len
jl sort
mov ah,9
mov dx, offset message2
int 21h
mov cx,10
mov si,0
_outputSortedArray:
mov dx,mas[si]
add dl,30h
mov ah,2
int 21h
add si,2
loop _outputSortedArray
mov ah,9
mov dx,offset promt
int 21h
mov ah,1
int 21h
mov ah,4ch
int 21h
end main
Не подскажет кто-нибудь как учитывать еще и знак числа? Сортирует только положительные числа...
Помогите кто можэт , задание написать программу в С++builder 6 обробатывающую вектор, добавление нового элемента, удаление элемента, изменение, поиск максимального и минимального значения , в принцепи все ужэ зделал но препод спалил что удаление элемента работает каряво а в принцепи не работает, когда удаляется элемент то поиск минимального значения всегда показывает 0, то есть элемент получается не удаляется а заменяется на ноль , ПОМОГИТЕ кто можэт что нужно дописать чтоб нормально удалялся элемент!!! .
//---------------------------------------------------------------------------
#include <iostream>
# include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int i, j, k, n, is_null;
float tmp;
char c;
FILE *fp;
float **mas;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
is_null=1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RazmerClick(TObject *Sender)
{
for (i=0;i<SG1->ColCount;i++)
for (j=0;j<SG1->RowCount;j++)
{SG1->Cells[i][j]="";
SG1->Cells[i][j].Delete(i,1);
}
SG1->ColCount = StrToInt(Edit1->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MaxClick(TObject *Sender)
{
if (is_null!=1) //î÷èñòèòü ïàìÿòü îò ñòàðîãî ìàññèâà
{
for(i=0; i<n; i++) delete[] mas[i];
delete[] mas;
}
//íîâîå êîëè÷åñòâî ýë-òîâ
n = StrToInt(Edit1->Text);
mas = new float *[n];
for (i = 0; i < n; i++)
mas[i] = new float [n];
//ñ÷èòûâàíèå èç String Grid 1 â ìàññèâ
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{ if (SG1->Cells[i][j]!="")
mas[j][i]=StrToFloat(SG1->Cells[i][j]);
else mas[j][i]=0;
}
//ïîèñê ìàêñèìàëüíîãî çíà÷åíèÿ
i=0;
for (j=0; j<n; j++)
{
if (mas[i][j]>tmp)
tmp = mas[i][j];
}
//âûâîä â String Grid 2
Edit2->Text = FloatToStr(tmp);
//ðåçóëüòàò ïîèñêà â òåêñòîâûé ôàéë
fp = fopen("max.txt", "w");
{
fprintf(fp," %.2f ",tmp);
fprintf(fp,"\n");
}
fclose(fp);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (is_null!=1) //åñëè ïàìÿòü ïîä ìàññèâ âûäåëåíà, îñâîáîäèòü
{
for(i=0; i<StrToInt(Edit1->Text); i++) delete[] mas[i];
delete[] mas;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MinClick(TObject *Sender)
{
if (is_null!=1) //î÷èñòèòü ïàìÿòü îò ñòàðîãî ìàññèâà
{
for(i=0; i<n; i++) delete[] mas[i];
delete[] mas;
}
//íîâîå êîëè÷åñòâî ýë-òîâ
n = StrToInt(Edit1->Text);
mas = new float *[n];
for (i = 0; i < n; i++)
mas[i] = new float [n];
//ñ÷èòûâàíèå èç String Grid 1
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{ if (SG1->Cells[i][j]!="")
mas[j][i]=StrToFloat(SG1->Cells[i][j]);
else mas[j][i]=0;
}
//ïîèñê ìèíèìàëüíîãî çíà÷åíèÿ
i=0;
for (j=0; j<n; j++)
{
if (mas[i][j]<tmp)
tmp = mas[i][j];
}
//âûâîä â Edit3
Edit3->Text = FloatToStr(tmp);
//ðåçóëüòàò ïîèñêà â òåêñòîâûé ôàéë
fp = fopen("min.txt", "w");
{
fprintf(fp," %.2f ",tmp);
fprintf(fp,"\n");
}
fclose(fp);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
Si{R}ius
25.02.2009, 22:06
Пишу модуль на Паскале. По сути написал, но не пойму, что надо указывать в разделе инициализации( Гляньте, плиз, а то кодер с меня пока не очень:)
unit unitd;
Interface
uses crt;
type massiv=array[1..100,1..100] of real;
massiv1=array[1..100] of real;
Implementation
procedure matri(var a:massiv);
procedure Matr_Prakt(a:massiv; var koor:massiv1);
procedure Funkcia(koor:massiv1);
procedure matri;
var
i,j:byte;
function new:real;
begin
new:=((2-sqr(i-3))/i)*(j-5.7);
end;
begin
clrscr;
for i:=1 to 10 do
for j:=1 to 10 do
a[i,j]:=new;
for i:=1 to 10 do begin
writeln;
for j:=1 to 10 do
write(a[i,j]:8:2);
end;
readkey;
end;
procedure Matr_Prakt;
type massiv=array[1..100,1..100] of integer;
massiv1=array[1..500] of integer;
var q,n,n1,max_stolb:integer;
i,j:byte;
x:massiv1;
begin
i:=1;
max_stolb:=1;
for j:=2 to N do
if a[i,j]>a[i,j-1] then max_stolb:=j;
for i:=1 to N do
for j:=1 to N do
koor[i]:=koor[i]+a[i,j]*a[j,max_stolb];
write('a(',koor[1]);
for i:=2 to n do
write(',',koor[i]);
write(')');
writeln;
writeln;
readln;
end;
procedure Funkcia;
var U:real;
qwer,a,i,n,chisl,znam:integer;
q1,q2:real;
function F(b:real; var a:real):integer;
begin
a:=a+b;
end;
begin
for i:=1 to n do
if koor[i]<=1 then f(koor[i],q1);
for i:=1 to n do
if koor[i]>1 then f(koor[i],q2);
U:=(1+q1)/(2+q2);
writeln(u);
readln;
writeln;
writeln;
end;
begin
matri;
Matr_Prakt;
Funkcia;
end.
Делфи!
Вычислить площадь плоской фигуры, заключенной между дугами кривых:
y(x)=-Ln(x) и y(x)=R-x
При каком значении R площадь этой фигуры не превышает единицы.
Pascal
Задание 1
Имеется склад, на котором присутствует некоторый ассортимент товаров. Запас каждого товара неограничен. У каждого товара своя стоимость Ci и масса mi. Написать программу, которая методом динамического программирования формирует такой набор товаров, чтобы его суммарная масса не превышала заданную грузоподъемность М, и стоимость была бы максимальной. На экран вывести промежуточные вычисления, сформированный набор, его стоимость и массу.
http://www.torrentsmd.com/imagestorage/1405167_cf7.jpg
Задание 2
Написать программу, которая оптимальным образом расставляет скобки при перемножении матриц. Размерности матриц считать из файла. На экран вывести промежуточные вычисления и результат.
М1[5x4], M2[4x7], M3[7x3], М4[3x8], M5[8x3], M6[3x7], M7[7x2], M8[2x2].
за правильное решение +
Задание 2
Написать программу, которая оптимальным образом расставляет скобки при перемножении матриц. Размерности матриц считать из файла. На экран вывести промежуточные вычисления и результат.
М1[5x4], M2[4x7], M3[7x3], М4[3x8], M5[8x3], M6[3x7], M7[7x2], M8[2x2].
Оптимально по чем? По числу операций, по объему памяти, по быстродействию?
Unregistered
02.03.2009, 21:51
Дано действительное число y, натуральное число n и сгенерированное случайное действительное число x (x=0…n). Вычислить http://img6.imageshack.us/img6/1406/prcwrk21.png . Вивести дробовую часть результата. IDE: Borland Pascal 7.0.
Задание 2
Написать программу, которая оптимальным образом расставляет скобки при перемножении матриц. Размерности матриц считать из файла. На экран вывести промежуточные вычисления и результат.
М1[5x4], M2[4x7], M3[7x3], М4[3x8], M5[8x3], M6[3x7], M7[7x2], M8[2x2].
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TMatrixInfo =
record
size: array [0..1] of integer;
desc: string;
end;
TMatrixes =
array [0..7] of TMatrixInfo;
var bestSolveMemoryVolume: integer;
bestSolve: TMatrixes;
matrixSizes: TMatrixes;
procedure GenerateSolves(solve: TMatrixes; count: integer; maxMemoryVolume: integer);
var memoryVolume:integer;
i, j: integer;
newSolve: TMatrixes;
begin
if count=1 then
begin
//построение варианта решения - закончено
//проверяем - лучшее ли оно ?
if (maxMemoryVolume < bestSolveMemoryVolume) then
begin
bestSolveMemoryVolume := maxMemoryVolume;
bestSolve := solve;
end;
exit;
end;
{строим варианты решения}
for i:=0 to count-2 do
begin
for j:=0 to count-2 do
if(j<i) then
begin
//копируем элементы
newSolve[j].size[0] := solve[j].size[0];
newSolve[j].size[1] := solve[j].size[1];
newSolve[j].desc := solve[j].desc;
end
else
if j=i then
begin
//имитируем произведение матриц i и i+1
newSolve[j].size[0] := solve[j].size[0];
newSolve[j].size[1] := solve[j+1].size[1];
newSolve[j].desc := '('+solve[j].desc+'*'+solve[j+1].desc+')';
//счтаем сколько памяти нужено под новую матрицу
memoryVolume := newSolve[i].size[0]*newSolve[i].size[1];
if(memoryVolume>maxMemoryVolume) then
maxMemoryVolume :=memoryVolume;
end
else
begin
//копируем элементы
newSolve[j].size[0] := solve[j+1].size[0];
newSolve[j].size[1] := solve[j+1].size[1];
newSolve[j].desc := solve[j+1].desc;
end;
//если текущее решение уже хуже лучшего, то не продолжаем дальше
if maxMemoryVolume>bestSolveMemoryVolume then
exit;
//моделируем следующее перемножение
GenerateSolves(newSolve, count-1, maxMemoryVolume);
end;
end;
begin
matrixSizes[0].size[0] :=5;
matrixSizes[0].size[1] :=4;
matrixSizes[0].desc := 'M[5x4]';
matrixSizes[1].size[0] :=4;
matrixSizes[1].size[1] :=7;
matrixSizes[1].desc := 'M[4x7]';
matrixSizes[2].size[0] :=7;
matrixSizes[2].size[1] :=3;
matrixSizes[2].desc := 'M[7x3]';
matrixSizes[3].size[0] :=3;
matrixSizes[3].size[1] :=8;
matrixSizes[3].desc := 'M[3x8]';
matrixSizes[4].size[0] :=8;
matrixSizes[4].size[1] :=3;
matrixSizes[4].desc := 'M[8x3]';
matrixSizes[5].size[0] :=3;
matrixSizes[5].size[1] :=7;
matrixSizes[5].desc := 'M[3x7]';
matrixSizes[6].size[0] :=7;
matrixSizes[6].size[1] :=2;
matrixSizes[6].desc := 'M[7x2]';
matrixSizes[7].size[0] :=2;
matrixSizes[7].size[1] :=2;
matrixSizes[7].desc := 'M[2x2]';
bestSolveMemoryVolume := MaxInt;
//перебираем все возможные варианты, ищем лучший вариант
GenerateSolves(matrixSizes, 8, 0);
//рисуем решение
Writeln(bestSolve[0].desc);
Writeln('Max matrix: '+ intToStr(bestSolveMemoryVolume) + ' items');
Readln;
end.
Делфи!
Вычислить площадь плоской фигуры, заключенной между дугами кривых:
y(x)=-Ln(x) и y(x)=R-x
При каком значении R площадь этой фигуры не превышает единицы.
сможет мне помочь кто-нибудь?!
snAKe
на практике используется метод Монте-Карло
суть
разбрасываем(случайным образом аля random()) достаточное кол-во точек (чем больше тем лучше) по области, и считаем отношение тех точек что попали в область к тем которые попали в нужное пересечение
(за область сойдет квадрат достаточных размеров(чем меньше тем лучше))
(что на что делить объяснять не буду)
================
при каком R вопрос более интересный, ну в общем за +++
найду, хотя зная основы интегрального исчисления, это не составит труда...
Срочно надо запрограммировать две кнопки.
Вот исходник
http://depositfiles.com/files/prd7xllpl
http://webfile.ru/2996960
на втором Unit Кнопочки "Удалить" "редактировать"
Unregistered
03.03.2009, 16:48
http://forum.antichat.ru/showpost.php?p=1146649&postcount=1130
I'm sorry. Но актуально а своих наработок нету. Спасибо.
NigHT_0WL
03.03.2009, 21:21
сможет мне помочь кто-нибудь?!
да.Сначала немного теории. Во первых тебе нужно определить точки пересечения этих двух функций(это когда выполняеться условие -ln(x) = R-x). Находим две точки А и В.
Далее площадь можно найти при помощи определенных интегралов путем вычитания из интеграла функции (R-x) интеграл функции ln(x)на промежутке от А до В(тут следует помнить что интеграл определенный на участке A>>B находиться как разность F(B)-F(A)). вот и все реомендую вычислять интегралы с помощью форцулы Симпсона. подробнее можешь посмотреть сдесь: http://dic.academic.ru/dic.nsf/bse/132406/%D0%A1%D0%B8%D0%BC%D0%BF%D1%81%D0%BE%D0%BD%D0%B0.
Писать прогу не буду. наиши сам и ксли не получиться выложи сдесь свой код будем искать ощибки вместе.
http://forum.antichat.ru/showpost.php?p=1146649&postcount=1130
I'm sorry. Но актуально а своих наработок нету. Спасибо.
А какая тут проблема ?
Вычислить выражение не можешь? Это же в одну строчку вычисляется.
Дано действительное число y, натуральное число n и сгенерированное случайное действительное число x (x=0…n). Вычислить http://img6.imageshack.us/img6/1406/prcwrk21.png . Вивести дробовую часть результата. IDE: Borland Pascal 7.0.
program primer;
var n:integer;
y,x:real;
begin
readln (y,n);
x:=random(n-1)+random; {random - для получения случайного вещественного числа, у меня работает}
writeln ('Ответ: ',frac((cos(exp(ln(y)*x))+x-y/3)/(2*sqr(x)-y+1)));
end.
Составить программу вычисления двойного произведения:
http://mihaker.name/files/image022.gif
Stingers
04.03.2009, 04:14
Даны массивы A[5][5], B[5][5]. Для каждого массива найти максимальный элемент. Заменить все положительные элементы, расположенные на обеих диагоналях на найденный максимальный элемент.
В программе предусмотреть функции ввода массив, вывода исходного массива и преобразованного, а также функцию преобразования массива.
Завтра крайний срок сдачи данного зачетного задания!! буду признателен!
NigHT_0WL
04.03.2009, 05:02
Завтра крайний срок сдачи данного зачетного задания!! буду признателен!
А что ты до этого делал?
На каком языке нужно написать?
И вобще написать такую элементарщину и самому можно. Алгоритм такой:
1. функция ввода массивов(тупой ввод в цикле For ... to...do)
2. функция вывода массивов то же самое.
3. функция определения максимального элемента(также цикл, внутри которого определяеться максимальный элемент или при помощи рекурсии).
4. функция замены массивов.
5. всё остальное внутри прораммы.
Составить программу вычисления двойного произведения:
http://mihaker.name/files/image022.gif
int n=3;
int m=4;
int result=1;
for(int j=1;j<=m;j++)
for(int i=1;i<=n;i++)
result *= 2*i + j;
элементарщина :mad:
думаю,что эта програмка для Паскаля была)
Stingers
04.03.2009, 12:50
А что ты до этого делал?
На каком языке нужно написать?
И вобще написать такую элементарщину и самому можно. Алгоритм такой:
1. функция ввода массивов(тупой ввод в цикле For ... to...do)
2. функция вывода массивов то же самое.
3. функция определения максимального элемента(также цикл, внутри которого определяеться максимальный элемент или при помощи рекурсии).
4. функция замены массивов.
5. всё остальное внутри прораммы.
я не понимаю какк такое делать....... мне нужно ее сдать в 14,00 помогите ктонибудь
думаю,что эта програмка для Паскаля была)
Переведет :rolleyes:
HencH_MaN
04.03.2009, 17:55
Помогите составить прогу на С++
Составить программу, которая анализирует заданный входной файл, содержащий текст программы на С++, и переписывает из него все идентификаторы в выходной файл. Повторения идентификаторов в выходном файле не допускаются.
Как именно отделить идентификаторы?
Помогите составить прогу на С++
Составить программу, которая анализирует заданный входной файл, содержащий текст программы на С++, и переписывает из него все идентификаторы в выходной файл. Повторения идентификаторов в выходном файле не допускаются.
Как именно отделить идентификаторы?
Лаба то по какому предмету?
Если это теория компиляторов - то видимо от тебя ожидается составление автомата.
Если же это программирование, то можно обойтись регексом (regex).
Даны массивы A[5][5], B[5][5]. Для каждого массива найти максимальный элемент. Заменить все положительные элементы, расположенные на обеих диагоналях на найденный максимальный элемент.
В программе предусмотреть функции ввода массив, вывода исходного массива и преобразованного, а также функцию преобразования массива. Завтра крайний срок сдачи данного зачетного задания!! буду признателен!
Ну так как расписал не самым понятным образом, то и результат какой есть.
Во-первых не понятно, про какие обе диагонали идёт речь. Про главную и побочную в обоих матрицах? Или про главную в обоих?
Во-вторых не понятно, нужно просто написать программу, или именно с использованием функций. А если только с функциями, то почему запрет на процедуры.
В общем вот наработки, проверяй, уточнишь задание - исправлю как удобно будет.
program for_stingers;
var x,y,maxa,maxb:integer;
a,b:array [1..5,1..5] of integer;
begin
for x:=1 to 5 do
for y:=1 to 5 do begin
writeln('Введите элемент A[',x,',',y,']:');
readln(a[x,y]);
if a[x,y]>maxa then maxa:=a[x,y];
writeln('Введите элемент B[',x,',',y,']:');
readln(b[x,y]);
if b[x,y]>maxb then maxb:=b[x,y];
end;
writeln ('Массив А исходный:');
for x:=1 to 5 do begin
for y:=1 to 5 do
write(a[x,y],' ');
writeln;
end;
writeln ('Массив B исходный:');
for x:=1 to 5 do begin
for y:=1 to 5 do
write(b[x,y],' ');
writeln;
end;
for x:=1 to 5 do begin
if a[x,x]>0 then a[x,x]:=maxa;
if b[x,x]>0 then b[x,x]:=maxb;
end;
writeln ('Массив А изменённый:');
for x:=1 to 5 do begin
for y:=1 to 5 do
write(a[x,y],' ');
writeln;
end;
writeln ('Массив B изменённый:');
for x:=1 to 5 do begin
for y:=1 to 5 do
write(b[x,y],' ');
writeln;
end;
end.
NigHT_0WL
условие -ln(x) = R-x
ппц... убей себя и как ты предлагаешь искать точки удовлетворяющие этому условию
В этой задаче можно много чего приближать, но точно, видимо, ничего сказать нельзя.
HencH_MaN
05.03.2009, 20:26
Лаба то по какому предмету?
Если это теория компиляторов - то видимо от тебя ожидается составление автомата.
Если же это программирование, то можно обойтись регексом (regex).
Это программирование. Поподробнее про регекс. :rolleyes:
Это программирование. Поподробнее про регекс. :rolleyes:
C#:
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication7
{
class Program
{
static void Main(string[] args)
{
string source =
@"
/*This is example*/
#include <iostream> // для использования std::cout
#include <vector> // для std::vector<>
#include <map> // для std::map<> и std::pair<>
#include <algorithm> // для std::for_each()
#include <string> // для std::string
using namespace std; // используем пространство имён ""std""
void display_item_count(pair< string const, vector<string> > const& person) {
// person - это пара двух объектов: person.first - это его имя,
// person.second - это список его предметов (вектор строк)
cout << person.first << "" is carrying "" << person.second.size() << "" items"" << endl;
}
int main()
{
// объявляем карту со строковыми ключами и данными в виде векторов строк
map< string, vector<string> > items;
// Добавим в эту карту пару человек и дадим им несколько предметов
items[""Anya""].push_back(""scarf"");
items[""Dimitri""].push_back(""tickets"");
items[""Anya""].push_back(""puppy"");
// Переберём все объекты в контейнере
for_each(items.begin(), items.end(), display_item_count);
}
";
//вырезаем содержимое кавычек
string quotePattern = "(\"[^\"]*\")";
source = Regex.Replace(source, quotePattern, "");
//отрезаем комментарии
string commentPattern = "(//.+?)$";
source = Regex.Replace(source, commentPattern, "", RegexOptions.Multiline);
commentPattern = "(/\\*.+?\\*/)";
source = Regex.Replace(source, commentPattern, "");
//убираем зарезервированные слова
string keywordPattern = "\\b(__abstract|abstract|__alignof Operator|array|__asm|__assume|__based|bool|__box|b reak|case|catch|__cdecl|char|class|const|const_cas t|continue|cout|__declspec|default|__delegate|dele gate|delete|deprecated|dllexport|dllimport|do|doub le|dynamic_cast|else|enum|enum class|enum struct|event|__event|__except|explicit|extern|fals e|__fastcall|__finally|finally|float|for|for_each| in|__forceinline|friend|friend_as|__gc|gcnew|gener ic|goto|__hook|__identifier|if|__if_exists|__if_no t_exists|include|initonly|__inline|inline|int|__in t8|__int16|__int32|__int64|__interface|interface class|interface struct|interior_ptr|__leave|literal|long|__m64|__m 128|__m128d|__m128i|__multiple_inheritance|mutable |naked|namespace|new|new|__nogc|noinline|__noop|no return|nothrow|novtable|nullptr|operator|__pin|pri vate|__property|property|property|protected|public |__raise|ref struct|ref class|register|reinterpret_cast|return|safecast|__ sealed|sealed|selectany|short|signed|__single_inhe ritance|sizeof|static|static_cast|__stdcall|struct |__super|switch|template|this|thread|throw|true|tr y|__try|__except|__finally|__try_cast|typedef|type id|typeid|typename|__unaligned|__unhook|union|unsi gned|using declaration|using directive|uuid|__uuidof|value struct|value class|__value|virtual|__virtual_inheritance|void|v olatile|__w64|__wchar_t|wchar_t|while)\\b";
source = Regex.Replace(source, keywordPattern, "", RegexOptions.Multiline);
//ищем идентификаторы, заносим в хештаблицу
string idPattern = "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b";
Dictionary<string, byte> ids = new Dictionary<string, byte>();
foreach (Match m in Regex.Matches(source, idPattern))
ids[m.Groups[0].Value] = 0;
//выводим
foreach (string id in ids.Keys)
Console.WriteLine(id);
Console.ReadLine();
}
}
}
HencH_MaN
06.03.2009, 17:06
Врятли всё так трудно мы таких программ в жизни не делали громоздких.1й курс всё таки,а по другому никак чтоль?
Врятли всё так трудно мы таких программ в жизни не делали громоздких.1й курс всё таки,а по другому никак чтоль?
Ну во-первых там половина - это просто пример текста на С++. А во-вторых это и так минимальная реализация, если серьезно делать, там кода побольше будет ))
См. пост #1142
Мне нужна реализация для Delphi
Моя попытка:
procedure TForm3.Button1Click(Sender: TObject);
var n,m,j,i:real;
begin
try
n:=strToFloat(Edit1.text);
m:=strToFloat(Edit2.text);
int n=3;
int m=4;
int result=1
for(int j=1;j<=m;j++)
for(int i=1;i<=n;i++)
result y= 2*i + j;
label3.Caption:=FloatToStr(y);
except
end;
end;
Адаптируйте код для делфи плз, не шарю я в кодинге, что поделать :)
Адаптируйте код для делфи плз, не шарю я в кодинге, что поделать :)
procedure TForm1.Button1Click(Sender: TObject);
var i, j, n, m: Integer; res: Int64;
begin
n:=StrToInt(Edit1.text);
m:=StrToInt(Edit2.text);
res := 1;
for j:=1 to m do
for i:=1 to n do
res := res * (2*i + j);
label1.Caption:=FloatToStr(res);
end;
Помогите плз. Надо написать на Паскале. Такая задача
Найти медиану множества целых чисел, записанных в файл. Медиана - это такое вещественное число, что слева от него на числовой оси лежит столько же чисел из заданного набора, сколько и справа. Числа подсчитываются с учетом их кратности. Заданный набор вводится пользователем с клавиатуры
см. пост #1155
За оптимизацию спс, только кажется мне что подсчет неверный) Результат всегда один и тот же = 0
Исходники тут: _http://mihaker.name/files/lab2.zip (задача на втором "баттоне")
см. пост #1155
За оптимизацию спс, только кажется мне что подсчет неверный) Результат всегда один и тот же = 0
Да уж неверный :)
Он нуль потому, что у тебя n=15 m=20
При таких условиях результат очень большой и происходит переполнение. Поставь n=3 m=4, тогда все считается.
можете помочь, задача в посте #1157
.::BARS::.
14.03.2009, 15:09
Привет, нужно на шарпе следующее:
есть файл...
нужно записывать туда несколько потоков по очереди...
Проверяя перед этим свободен ли файл для записи, прекратил ли писать прошлый поток...
HencH_MaN
14.03.2009, 16:54
Помогите составить прогу на С++(программирование)
Составить программу, которая анализирует заданный входной файл, содержащий текст программы на С++, и переписывает из него все идентификаторы в выходной файл. Повторения идентификаторов в выходном файле не допускаются.
jawbreaker
14.03.2009, 17:18
.::BARS::.
Для синхронизации потоков используется мьютекс:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Threading;
namespace file_thread
{
class Program
{
public static StreamWriter wr;
static void Main(string[] args)
{
wr = new StreamWriter("output.txt");
Thread t1 = new Thread(new ThreadStart(Thread1));
Thread t2 = new Thread(new ThreadStart(Thread2));
t1.Start();
t2.Start();
}
public static void Thread1()
{
lock(wr)
{
for (int i = 0; i < 1000; i++)
{
wr.WriteLine("Thread #1");
}
}
}
public static void Thread2()
{
lock (wr)
{
for (int i = 0; i < 1000; i++)
{
wr.WriteLine("Thread #2");
}
}
}
}
}
Papa_Costa
14.03.2009, 21:29
помогите пожалуйста решить на visual basic. очень надо!!!
http://s61.radikal.ru/i174/0903/ba/b361fb1db467.jpg
Товарищи, пожалуйста, если вас не затруднит, помогите решить вот эти задания:
1. type mes = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov,
dec);
day = 1..31;
var m1, m2: mes; k:1..maxint; n:1..12;
Присвоить переменной m1 название k-го месяца после месяца m.
2. type stroka = packed array [1..80] of char;
var s:stroka;
Известно, что в начале строки s находится не более 40 латинских букв, за которыми следуют пробелы. Напечатать эту строку, предварительно удалив первое вхождение w, если такое есть (образовавшуюся «дыру» заполнить последующими буквами, а в конец добавить пробел).
3. const n = 100;
vаr х:аrrау [1..n] of rеаl;
Упорядочить массив х по неубыванию, используя следующий алгоритм сортировки: сортировка вставками. Пусть первые и элементов массива уже упорядочены по неубыванию; берется (k+1 )-й элемент и размещается среди первых k элементов так, чтобы упорядоченными оказались уже k+1 первых элементов; этот метод применяется при k от 1 до n-1.
4. Создать массив записей, содержащих сведения о сотрудниках университета. Структура записи:
фамилия и инициалы работающего, год рождения;
название кафедры;
стаж работы, должность, оклад.
Количество записей произвольное.
Вывести на экран следующие данные: средний стаж работающих на кафедре X и список профессоров пенсионного возраста с указанием стажа работы.
5. var A,B: set of char; x:char;
Переменной B присвоить множество, полученное из A добавлением элемента x.
или хотя бы что-нибудь из этого :(
Помогите плз. Надо написать на Паскале. Такая задача
Найти медиану множества целых чисел, записанных в файл. Медиана - это такое вещественное число, что слева от него на числовой оси лежит столько же чисел из заданного набора, сколько и справа. Числа подсчитываются с учетом их кратности. Заданный набор вводится пользователем с клавиатуры
Всю задачу я не буду сюда писать, так как мне все понятно кроме... Вобщем имееться некая структура (С++) и нужно сохранять данные в дво связанном списке. Как ето понять и как ето организоватьна С++?
#include <string.h>
#include <iostream>
using namespace std;
struct NUM {
int reg;
char zdelka[20];
int v;
char nal[20];
char data[20];
}lab;
void main() {
struct NUM num[15];
int n;
cout << "How many operations :";
cin >> n;
cout<<"Reg Num "<<" Zdelka "<< " Volume " << " Money " << " Date\n";
for(int i=0; i<n; i++)
{
cout<<"["<<i<<"] ";
cin >> num[i].reg;
cin >> num[i].zdelka;
cin >> num[i].v;
cin >> num[i].nal;
cin >> num[i].data;
}
for(;;);
}
Есть структура которую нужно отсортировать.
Задание :
Написать программу для ведения учета торговых операций фирмы. О каждой торговой операции должны сохраняться следующие сведения: регистрационный номер, сущность сделки, объем, форма расчета (нал., безнал., бартер), дата совершения. Ввести информацию о N сделках (N выбрать самостоятельно) и упорядочить бартерные сделки по убыванию их объема.
Комрады, выручайте:
Напишите программу, которая открывает текстовый файл-список, содержащий имена файлов по одному на строке. Программа подсчитывает количество предложений во всех файлах и выводит предложения в другой файл по одному на строке в порядке уменьшения длины.
Доделать задачу. Задание не сложное, просто пока времени совсем нет заниматься ей. Доделать подсчет "Плановая себестоимость партии изделий" , "Фактическая себестоимость партии изделий". Отобразить данные на те изделие, у которых фактическая себестоимость меньше плановой. Переделывал схожий пример, поэтому есть некоторые лишние фишки, на них внимания не обращать)) Скрин с заданием можно найти все в том же архиве:
__http://mihaker.name/files/4_StringGrid_Chart.zip
Заранее спасибо, завидую тем, у кого есть свободное время))
Таких наверное нету))) а если и есть то явно не на решение задачь по программированию!
Ребят помогите рещит две задачи на С# очень прошу!
-> Дано целое число N(>0). Найти нименьшее целое положительное число К, квадрат которого превосходит N: K*K>N. Функцию извлечения квадратного корня не использовать!
->Данна массив целых ненулевых чисел размером N. Проверить, чередуются ли в нем положительные и отрицательные числа. Если чередуются, вывести 0, если нет то вывести порядковый номер первого элемента нарущающего закономерность!
p.s. Зарание огромное спасибо если можно решите кто нить а то я в си не че не шарю на паскале написал эти проги а в си не могу!
Ребят помогите рещит две задачи на С# очень прошу!
-> Дано целое число N(>0). Найти нименьшее целое положительное число К, квадрат которого превосходит N: K*K>N. Функцию извлечения квадратного корня не использовать!
int N = 234;
int solve;
for (solve = 1; solve < int.MaxValue; solve++)
if (solve * solve > N)
break;
Console.WriteLine(solve);
->Данна массив целых ненулевых чисел размером N. Проверить, чередуются ли в нем положительные и отрицательные числа. Если чередуются, вывести 0, если нет то вывести порядковый номер первого элемента нарущающего закономерность!
int[] arr = new int[] { -23, 21, -23, 23, 12, 34};
int i = 0;
for (i = 1; i < arr.Length; i++)
if (-Math.Sign(arr[i]) != Math.Sign(arr[i - 1]))
break;
if (i == arr.Length)
Console.WriteLine(0);
else
Console.WriteLine(i + 1);
Пост #1170 уже не актуален (:
Помогите пожалуйста решить задачу по С.
Написать функцию, которая подсчитывает количество слов начинающихся с буквы "к". Текст произвольной длины оканчивающийся ";". Текст состоит из слов, разделенных пробелами.
2pixelm :
#include<stdio.h>
#include<conio.h>
#include<string.h>
int n_k(char *);
void main()
{
clrscr();
char *str;
gets(str);
printf("%d\n", n_k(str));//пример вызовы ф-ии
getch();
}
//сама функция возвращяет количество слов на к
int n_k(char *str)
{
int s=0,i;
if(str[0]=='k')// это мож криво замутил, проверяет первую букву..
s++;
for(i=0; str[i]!=';'; i++){
if(str[i]==' '&&str[i+1]=='k')
s++;
}
return s;
}
компилятор BC 3.1
Nastroenie
17.03.2009, 01:57
помогите с лабой на delphi 7. Дана строка символов. В строке имеется несколько символов ‘.’. Выделить подстроку между первой и последней точкой. красиво оформить
Nastroenie
17.03.2009, 02:05
Матрица A(n,m) содержит вещественные числа. Определить количество столбцов и их номера, в которых сумма максимального и минимального элементов больше числа b.
пытался сделать эту лабу основное задание получилось, но проблема с контролем ввода данных в компоненты. вот что вышло:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Menus;
type
TForm2 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
procedure StringGrid1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.StringGrid1Click(Sender: TObject);
Var
i,j: integer;
begin
with StringGrid1 do
begin
i:=0;
for j:=1 to RowCount - 1 do
Cells[i,j]:= IntToStr(J);
J:=0; {строка 0}
For I:=1 to ColCount - 1 do
Cells[i,j]:= IntToStr(i);
end;
end;
procedure TForm2.Button1Click(Sender: TObject);
Var
max,min: real;
i,j,k: integer;
P: Boolean;
begin {как сделать этот момент более рационально
или после вывода ShowMessage программа не завершалась, и не закрывалась а была возможно доконца заполнить матрицу}
with StringGrid1 do
begin
for i:= 1 to RowCount-1 do
for J:=1 to ColCount-1 do
if Cells[j,i]=''
then p:=True;
if p=True
then ShowMessage('Заполните матрицу полностью!');
K:=0;
for i:= 1 to ColCount-1 do
Begin
Min:= StrToFloat(Cells[i,1]);
for j:=1 to RowCount-1 do
if StrToFloat(Cells[i,j])< min
then Min:= StrToFloat(Cells[i,j]);
Max:= StrToFloat(Cells[1,1]);
for j:=1 to RowCount - 1 do
if StrToFloat(Cells[i,j])> max
then Max:= StrToFloat(Cells[i,j]);
If Max+Min> StrToFloat(Form1.Edit3.Text)
then
Begin
k:=K+1;
Edit2.Text:=Edit2.Text + ' ' + FloatToStr(i)+ ',';
end;
end;
Edit1.Text:=FloatToStr(k);
end;
end;
procedure TForm2.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0','1','2','3','4','5','6','7','8','9','-',','])
then Key:=#0
end;
end.
Помогите пожалуйста!
на с++
Разработать алгоритм и написать программу решения СЛАУ методом Гаусса с частичным выбором ведущего элемента.
Требования к программе:
1.Программа должна позволять задавать порядок матрицы с клавиатуры.
2.Коэффициенты матрицы и вектора свободных членов должны задаваться либо случайным образом, либо с клавиатуры.
3.Программа должна иметь возможность подставить вектор полученного решения в систему для проверки правильности полученных результатов.
043nKRuT0y
17.03.2009, 16:31
Народ кто нибудь дайте пожалуйста алгоритм Транспонирования матрицы на С++ ! Транспонирование нужно проводить как над квадратной матрицей так и над не квадратной !
2 kyoko
[C++] Метод Гаусса для решения СЛАУ (http://forum.vingrad.ru/faq/s/df9412ceabffa760f08124464db96710/topic-188858/anchor-entry1709488/0.html)
и еще
http://forum.antichat.ru/showthread.php?t=52608
Народ кто нибудь дайте пожалуйста алгоритм Транспонирования матрицы на С++ ! Транспонирование нужно проводить как над квадратной матрицей так и над не квадратной !
может поможет: http://forum.vingrad.ru/forum/topic-158562.html
Помогите пожалуйста...
Собсна сама задачка:
Дан массив b из 10 элементов организовать новый массив элементы которого расположены в обратном порядке
(На паскале)
Помогите пожалуйста...
Собсна сама задачка:
Дан массив b из 10 элементов организовать новый массив элементы которого расположены в обратном порядке
(На паскале)
Пожалуйста
program massiv_perevertish;
const n=10;
var a,b:array [1..n] of word;
x:word;
begin
writeln ('Массив b');
for x:=1 to n do begin
b[x]:=random(100);
write(b[x]:4);
end;
for x:=1 to n do
a[x]:=b[n+1-x];
writeln;
writeln ('Массив a');
for x:=1 to n do
write (a[x]:4);
end.
Госпади, ну и задачи...
program test;
var b:array[1..10] of integer;
a: array[1..10] of integer;
c,i:integer;
begin
for i:=1 to 10 do b[i]:=random(200);
c:=11;
for i:=1 to 10 do begin
c:=c-1;
a[c]:=b[i];
end;
end.
Gray_Wolf
18.03.2009, 05:32
Я бы писал так:
const n=10;
var a:array[1..n] of integer;
b: array[1..n] of integer;
i:integer;
begin
for i:=1 to n do begin
b[i]:=random(100);
write(b[i]:4);
end;
writeln();
for i:=1 to n do begin
a[i]:=b[n-i+1];
write(a[i]:4);
end;
writeln();
end.
Alekzzzander
18.03.2009, 11:38
на турбопаскале....помогите написать пару задачек
Пpогpамма. Дана непустая оследовательность слов из стpоч- ных pусских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном поpядке все звонкие согласные буквы, котоpые входят более чем в одно слово.
вторая задачка
Даны два предложения, состоящие не менее чем из 5 слов. Слова каждого предложения заменить на совпадающие с ними по длине слова из другого предложения (Заменять на соот- ветствующие по счёту слова - например, второе слово пер- вого предложения из 5 букв заменить на второе встретив- шееся слово из 5 букв во втором).
и последняя
type строка=array [1..16] of char; дата=record число:1..31; месяц:1..12; год:1900..1979 end; анкета=record фамилия:строка; пол:(муж, жен); деньрожд:дата end; группа=array [1..25] of анкета; Описать процедуру печ (Гр,Бук), печатающую все фамилии лю- дей из группы Гр, начинающиеся с литературы Бук, и даты рождения этих людей.
Stawridka
18.03.2009, 16:15
Необходимо зашифровать(RSA) видео или аудио файл. По RSA вопросов нет, а вот как изменять видео или аудио? (Delphi)
в строке записаны слова вперемешку с целыми числами.подсчитать кол.и сумму всех чисел в строке.например для строки qwerty45easdf54 результат должен быть 2 и 99-два целых числа,сумма которого равна 99-ти.
тут нужно использовать входной и выходной файл (input.txt and output.txt)
лабы на free pascale ...
парни плиз помогите завтра сдавать аж три лабы,а ни одной нету...
хотя бы эту,если кто может реально помоч с еще двумя то стукни в аську 409829
зарание благодарю
в строке записаны слова вперемешку с целыми числами.подсчитать кол.и сумму всех чисел в строке.например для строки qwerty45easdf54 результат должен быть 2 и 99-два целых числа,сумма которого равна 99-ти.
тут нужно использовать входной и выходной файл (input.txt and output.txt)
лабы на free pascale ...
парни плиз помогите завтра сдавать аж три лабы,а ни одной нету...
хотя бы эту,если кто может реально помоч с еще двумя то стукни в аську 409829
зарание благодарю
Отрицательные числа могут быть? Если нет, то вот вариант, если да, то напиши.
program symma;
var str,str1:string;
n,len,x,s,k:word;
err:integer;
f:text;
begin
assign (f, 'input.txt');
reset (f);
readln (f,str);
close (f);
len:=length(str);
n:=1;
while n<=len do begin
if (str[n]>'0') and (str[n]<'9') then str1:=str1+str[n] else if str1>'' then begin k:=k+1; Val(str1, x, err); s:=s+x; str1:=''; end;
n:=n+1;
end;
if str1>'' then begin k:=k+1; Val(str1, x, err); s:=s+x; str1:=''; end;
assign (f, 'output.txt');
rewrite(f);
writeln (f,'Количество: ',k);
writeln (f,'Сумма: ',s);
close (f);
end.
Здравствуйте, помогите пожалуйста: Нужна програмка на Delphi по табулированию функции, где F(x,a)= a*X^4+B*Ln(x^2+B^2) табулируемая функция.
B-число, Табулирование нужно выполнить при заданных значениях:
Xn,Dx,N - где начальное значение, шаг и количество значений изменяемых с данным шагом соответсвенно
An,Ak,Da - где начальное, конеченое значения и шаг соответственно.
Мне бы хотя бы просто примерную схему набросать, буду очень благодарен.
Можете еще помоч?
нужно вывести несколько строк треугольника паскаля,используя не более одного одномерного массива(Т.е хранить только текущую строку)
и еще одна
тоже вывести треугольник паскаля использую формулу биноминальных коэфициэнтов.Факториал реализовать РЕКУРСИВНО)
Зарание преблагодарен
043nKRuT0y
19.03.2009, 22:07
Все таки может кто то помочь с транспонированием матрицы !? Квадратную матрицу - транспонирую без проблем , а вот с не квадратной - не выходит !
2 fker : Зашел я на топик что ты указал , и посмеялся ) Народ даже вопрос не сообразил , объясняли мне что приведены выше в топике код транспонирует и не квадратную матрицу - хотя ето не так )))
http://forum.antichat.ru/showpost.php?p=1178896&postcount=1193
UP выручайте
.::BARS::.
20.03.2009, 16:28
Привет... помогите решить ньютоном!
http://kysaka.1xw.ru/image11.png
Уважаемые,нужно сделать контрольную роботу по системному программированию и операционным системам.
Нужно разработать простейший программный эмулятор менеджера виртуальной страничной памяти компьютера с одноуровневой таблицей страниц.
Языки: JAVA, C++, Object Pascal.(на любом из перечисленных)
Кто возьмется?не за бесплатно конечно,пишите в асю или в пм.
velvetdust
21.03.2009, 14:16
Такое задание (язык Cи, не С++)
Дан массив структур. Структура содержит элементы: имя, пол, рост, группа. Написать программу, которая вводит информацию о каждом студенте. Определить, есть ли в группе хотя бы 2 человека одного роста.
Моих скудных знаний хватило на такой код, который по идее должен работать, но на практике висит:
#include <stdio.h>
#include <conio.h>
void main ()
{
int i=0;
int Enter = 13;
int num=0;
int x=0;
int u;
int f;
int mas[10][10];
int bl[10]
clrscr();
struct spisok
{
char imya [10];
char pol ;
int rost ;
int group ;
}group[10];
while (num<10)
{
printf ("\nvvedite imya\n");
while (i<10)
{
group[num].imya [i] = getch();
if (group[num].imya [i] == Enter) break;
printf ("%c", group[num].imya [i]);
i++;
}
while (i<10)
{
group[num].imya[i] = 0;
i++;
}
i=0;
u=0;
printf("\nVVedite rost\n");
scanf ("%d",&group[num].rost); fflush (stdin);
printf("\nVVedite gruppy\n");
scanf ("%d",&group[num].group); fflush (stdin);
printf ("vvedite pol M/J\n");
group[num].pol = getch();
printf ("%c",group[num].pol);
printf ("\nsledyshii student\n");
x= getch();
if (x=='n') break;
num++;
}
i=0;
u=0;
while (i<10)
{
f=group[i].group;
if (mas[f][u]!=0) {u++;continue;}
mas[f][u]=group[i].rost;
i++;
u=0;
}
f=0;
while (f<10)
{
while(i<10)
{
while (u<10)
{
if (i==u) u++;
if (mas[f][i]==mas[f][u]) bl[i]++;
u++;
}
i++;
}
f++;
}
i=0;
while (i<10)
{
if (bl[i]==0) i++;
continue;
printf ("v gruppe %d %d chelovek odinakovogo rosta",i,bl[i]);
}
}
Помогите, пожалуйста, довести прогу до ума.. Учеба вся неплохо идет, кроме проги..
velvetdust
while (i<10)
{
if (bl[i]==0) i++;
continue;
printf ("v gruppe %d %d chelovek odinakovogo rosta",i,bl[i]);
}
Цикл бесконечный получается, если десять раз подряд в массиве bl не будут нули
Есть структура моя их на страницу виртуальной памяти 128 штук умещается код какбы рабочий но одно но когда в функции add условие идет на 2 ветку, где при заполнении страници нужно выделить новую страницу, она невыделяется посмотрите что нетак. Там скорее всего lpPtr+=dwPageSize; вроде все как мсдн даже написал а первый параметр в вирт аллок выходит что неправельный%( я непому почему что нетак...
#include <windows.h>
#include <stdio.h> // for printf
#include <stdlib.h> // for exit
#include <conio.h>
#include <string.h>
#include <iostream.h>
#define PAGELIMIT 80 // ask for this many pages
LPTSTR lpNxtPage; // address of the next page to ask for
DWORD dwPages = 1; // count of pages gotten so far
DWORD count=0;
DWORD count2=0;
DWORD dwPageSize;
LPVOID lpvBase;
DWORD lpPtr;
struct list {
char dt[20];
int x;
int y;
int v;
};
list * arr;
void add(int val1, int val2,int val3, char *val4){
if(((count2+1)%128)!=0){
strcpy(arr[count].dt, val4);
arr[count].x= val1;
arr[count].y= val2;
arr[count].v= val3;
count++;
count2++;
printf ("On saime page # %d.\n", dwPages);
}else{
lpPtr+=dwPageSize;
arr=(list*)VirtualAlloc((LPVOID)lpPtr,dwPageSize,M EM_COMMIT,PAGE_READWRITE);
if (arr == NULL ){
printf("VirtualAlloc failed\n");
} else {
printf ("Allocating another page.\n");
};
strcpy(arr[count].dt, val4);
arr[count].x= val1;
arr[count].y= val2;
arr[count].v= val3;
dwPages++;
count++;
count2=0;
printf ("On new page ¹ %d.\n", dwPages);
}
};
int main(int argc, char *argv[])
{
SYSTEM_INFO sSysInfo;
GetSystemInfo(&sSysInfo); // initialize the structure
printf ("This computer has page size %d.\n", sSysInfo.dwPageSize);
printf ("size of struct %d.\n", sizeof(list));
dwPageSize = sSysInfo.dwPageSize;
arr=(list*)VirtualAlloc(NULL,PAGELIMIT*dwPageSize, MEM_RESERVE,PAGE_READWRITE);
arr=(list*)VirtualAlloc(NULL,dwPageSize,MEM_COMMIT ,PAGE_READWRITE);
lpPtr=(DWORD)arr;
printf("vvedite znachenie, stroku, stolbec, tip\n");
int a,b,c;
char tipp[20];
cin>>a>>b>>c>>tipp;
for (int f=0; f<130; f++){
add(a,b,c,tipp);
};
cout<<arr[130].x<<arr[130].y<<arr[130].v<<arr[130].dt;
system("PAUSE");
return 0;
}
Помогите, пожалуйста, с задачкой.
Взята она с сайта с олимпиадными задачами https://www.spoj.pl/problems/MRECAMAN/
Суть её следующая.
Последовательность Recaman-а определена так:
a0 = 0
Для m, больших 0:
a(m) = a(m-1) - m, если эта разность больше нуля и её до этого момента в последовательности не было;
a(m) = a(m-1) + m, иначе.
Вот первые несколько членов последовательности:
0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9...
Задание состоит в том, чтобы по введённому порядковому номеру k вывести k-ый член последовательности.
Вообще, эту задачу мне нужно сдать на Хашкеле, но пока что я хочу сдать её на другом языке, который я знаю чуть получше (ruby, C). И возникла проблема с придумыванием алгоритма, поскольку решение в лоб (в смысле, просто переписать рекуррентное соотношение, ну и добавить поиск по массиву для проверки, встречалось ли число в последовательности ) не годится для больших k (0 <= k <= 500000). Буду очень признателен, если подскажете эффективное решение данной задачи. :)
Alekzzzander
22.03.2009, 09:57
на турбопаскале....помогите написать пару задачек
Пpогpамма. Дана непустая оследовательность слов из стpоч- ных pусских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном поpядке все звонкие согласные буквы, котоpые входят более чем в одно слово.
вторая задачка
Даны два предложения, состоящие не менее чем из 5 слов. Слова каждого предложения заменить на совпадающие с ними по длине слова из другого предложения (Заменять на соот- ветствующие по счёту слова - например, второе слово пер- вого предложения из 5 букв заменить на второе встретив- шееся слово из 5 букв во втором).
и последняя
type строка=array [1..16] of char; дата=record число:1..31; месяц:1..12; год:1900..1979 end; анкета=record фамилия:строка; пол:(муж, жен); деньрожд:дата end; группа=array [1..25] of анкета; Описать процедуру печ (Гр,Бук), печатающую все фамилии лю- дей из группы Гр, начинающиеся с литературы Бук, и даты рождения этих людей.
помогите пожалуйста
mailbrush
22.03.2009, 11:12
Массивы
Postal2201
22.03.2009, 12:41
Здравствуйте товарищи! Помогите пожалуйста сделать програмку для курсовика. Итак нужно:
1) Выполнить дискретизацию расчетной области в виде четырехугольника заданного координатами вершин:
A(-2;1) B(1;4) C(4;0) D(2;-1).
2) Найти узловые неизвестные T(Xi,Yi) по заданному распределению температуры вдоль границы области T(X,Y)=X+2XY+2(X^2)-2(Y^2). Вычислить максимальную абсолютную погрешность полученных результатов.
3) Построить семейство изотерм.
Очень желательно на C#, но можно и на C++
Буду очень признателен!!! ;)
botaniQQQ
23.03.2009, 21:39
Голову ломаю ... ребята, поможите ?
1) На Си нужно написать вычисления частного и остаток от деления двух полиномов размерности N и M, заданные своими коэффициентами.
2) Дан текст, выяснить является ли этот текст записью вещественного числа по правилу языка Pascal ... (с фиксированной и плавающей точкой).
Мало верится что эту тему посещают, но всёже надеюсь ...
botaniQQQ
24.03.2009, 11:24
По баксу за лабу сделаете ?
verylagcomp
24.03.2009, 13:32
пишу на С++ Builder. Программа должна пинговать разные адреса, а также делать преобразование из числового адреса в буквенный и обратно. Командной строкой пользоваться нельзя (так бы,конечно,использовал nslookup или tracert). Как мне это получить?
Для пинга использовал IdIcmpClient, но вроде у него нет таких методов и свойств для связи и dns...подскажите,пожалуйста...
http://img3.imageshack.us/img3/6316/1235916816fejjki.th.jpg (http://img3.imageshack.us/my.php?image=1235916816fejjki.jpg)
контрольное задание...создать тест...
на картинке схема
буду рад помощи
ropestyd
24.03.2009, 21:50
Помогите сделать задание (делфи,консоль),кто реально сделает её с комментариями и объяснит то в долгу не останусь,оплачу работу над ней ;)
10 раз сгенерировать красно-черное дерево из 1000 случайных узлов, подсчитать среднее количество "поворотов", необходимое для построения такого дерева, среднюю дистанцию между корнем и внешним узлом. Объяснить результаты.
P.S. можно написать в ПМ либо icq 195810065
Ded MustD!e
27.03.2009, 04:02
Кому не лень, нужно написать на C несколько консольных программ, сегодня днем сдавать...:
1. Написать программу, которая проверяет, является ли введенная строка двоичным числом.
2. Необходимо составить три программы, которые должны реализовывать задание с помощью одного из трех циклов языка Си. Задать: матрица М размерностью 6х8, вектор В размерностью 8. Сложить поэлементно строки матрицы с вектором. Найти количество положительных элементов в полученной матрице.
Не знаю я С к сожалению, а сдавать надо)
Ded MustD!e
1. Написать программу, которая проверяет, является ли введенная строка двоичным числом.
#include<stdio.h>
#include<string.h>
int main()
{
char *st;
int n,flag=1;
gets(st);
n=strlen(st);
for(int i=0; i<n; i++){
if(st[i]!='1'&&st[i]!='0'){
flag=0;
break;
}
}
printf("\n%s\n",flag==1?"Binary":"Not binary");
return 0;
}
может кривовастенько реализовал, но работает..
компилятор BC 3.1
2. Необходимо составить три программы, которые должны реализовывать задание с помощью одного из трех циклов языка Си. Задать: матрица М размерностью 6х8, вектор В размерностью 8. Сложить поэлементно строки матрицы с вектором. Найти количество положительных элементов в полученной матрице.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
clrscr();
int M[6][8], B[8],i,j,s=0;
printf("M :\n");
for(i=0; i<6; i++){
for(j=0; j<8; j++){
M[i][j]=rand()%20-10;
printf("%2d ",M[i][j]);
B[j]=rand()%20-10;
}
printf("\n");
}
printf("\nB: ");
for(i=0; i<8; i++)
printf("%2d ",B[i]);
//summa
printf("\n\n");
for(i=0; i<6; i++){
for(j=0; j<8; j++){
M[i][j]+=B[j];
printf("%3d ",M[i][j]);
if(M[i][j]>0)
s++;
}
printf("\n");
}
printf("\nPolojit elementov : %d",s);
getch();
}
KaZ@NoVa
27.03.2009, 16:55
http://img3.imageshack.us/img3/6316/1235916816fejjki.th.jpg (http://img3.imageshack.us/my.php?image=1235916816fejjki.jpg)
контрольное задание...создать тест...
на картинке схема
буду рад помощи
Ну вообщем есть объект такой TStringList называется! У него есть методы LoadFromFile, SaveToFile, еще есть метод LoadFromStream если файл занят! У него есть свойства Count - колво элементов, есть свойство Strings[index] - доступ к отдельным элементам. Нумерация идет с нуля, последний - N-1! Вот я тебе в принципе все рассказал что нужно чтоб твой тест сделать! 0_0
KaZ@NoVa
27.03.2009, 23:28
Голову ломаю ... ребята, поможите ?
1) На Си нужно написать вычисления частного и остаток от деления двух полиномов размерности N и M, заданные своими коэффициентами.
2) Дан текст, выяснить является ли этот текст записью вещественного числа по правилу языка Pascal ... (с фиксированной и плавающей точкой).
Мало верится что эту тему посещают, но всёже надеюсь ...
Стоимость задания 500 WMR. Если устраивает, то какие сроки выполнения?
О_о та в этом разделе фрилансить можна(=
помогите пожалуйста с заданием на чистом С
1) Геометрия.
Задано n точек на плоскости. Построить дерево с вершинами в данных точках так,
чтобы была минимальной суммарная длина его рёбер.
2) Грамматики, языки и автоматы.
Задано множество правил подстановки вида v(i)->w(i), где все v(i) и w(i) - слова
одной и той же длины. Определить, можно ли перевести одно заданное слово в
другое последовательным применением заданных правил подстановки. Например, если
имеются правила подстановки ba->ab, cb->bc, ca->ac, то слово cbba переводится в
слово abbc следующим образом: cbba->cbab->cabb->acbb->abcb->abbc.
О_о та в этом разделе фрилансить можна(=
Давно пора. Потому что тут уже под словом "помогите" понимается "сделайте за меня а я сдам" своих усилий 0. Лучше уж за "$" чем за "+".
KaZ@NoVa
28.03.2009, 21:20
помогите пожалуйста с заданием на чистом С
1) Геометрия.
Задано n точек на плоскости. Построить дерево с вершинами в данных точках так,
чтобы была минимальной суммарная длина его рёбер.
2) Грамматики, языки и автоматы.
Задано множество правил подстановки вида v(i)->w(i), где все v(i) и w(i) - слова
одной и той же длины. Определить, можно ли перевести одно заданное слово в
другое последовательным применением заданных правил подстановки. Например, если
имеются правила подстановки ba->ab, cb->bc, ca->ac, то слово cbba переводится в
слово abbc следующим образом: cbba->cbab->cabb->acbb->abcb->abbc.
1-ое задание по геометрии решается с помощью алгоритма Прима-Краскала(нахождение минимального дерева).
HencH_MaN
29.03.2009, 14:12
Составить программу, которая анализирует заданный входной файл, содержащий текст программы на С++, и переписывает из него все идентификаторы в выходной файл. Повторения идентификаторов в выходном файле не допускаются.
На С++
Назовите цену за которую возьмётесь за решения задания
Давно пора. Потому что тут уже под словом "помогите" понимается "сделайте за меня а я сдам" своих усилий 0. Лучше уж за "$" чем за "+".
Тогда следует переименоваь тему...!
Каждый кто заходит сюда видит именно это "Студентам с лабораторными сюда"
и ничто другое. Рас назвали так, значт решайте! Если програмёрам нечего сказать по существу нехрен офтопить и флуд разводить.
Я тоже студент, эканомфака...глубокие познания в программировании мне не пригодятся.
Поэтому пришол сюда со своими задачами.
Вот архив (http://dump.ru/file/2315960 ) там 6 задач на Delphi. Кто возьмётся решать заплочу 150-200р.
ICQ 363-886-663
KaZ@NoVa
29.03.2009, 15:39
Составить программу, которая анализирует заданный входной файл, содержащий текст программы на С++, и переписывает из него все идентификаторы в выходной файл. Повторения идентификаторов в выходном файле не допускаются.
На С++
Назовите цену за которую возьмётесь за решения задания
Тебе просто надо выбрать все идентификаторы из текста программы?То есть на вход подается текст верно написанной программы и его не надо проверять на наличие ошибок...
KaZ@NoVa
29.03.2009, 21:01
Составить программу, которая анализирует заданный входной файл, содержащий текст программы на С++, и переписывает из него все идентификаторы в выходной файл. Повторения идентификаторов в выходном файле не допускаются.
На С++
Назовите цену за которую возьмётесь за решения задания
.Ну не меньше 1000р.
HencH_MaN
30.03.2009, 13:28
Ппц второй семестр тебе я в шоке О_о издеваешься?
ну если прожка простая то алгоритм простой.
1) заменяешь табуляторы на пробел
2) удаляешь все двойные пробелы т.е. везде тока по 1 пробелу
3) нужна тебе таблица типов данных типа int, ulong итд итп.
котороче все которые знаешь ))
4) эти идентификаторы и анализируй что после них за переменные и загоняй из в массив
5) а там дальше осей повторы в массиве.
Задача пппц геморная, но решаемая )
HencH_MaN
нужно как-нибудь разделять идентификаторы по области видимости? Что если два одинаковых идентификатора в разных областях видимости?
update:
если нет, то задача достаточно простая. Если да, то немногим сложнее.
playhard.g0pr0
30.03.2009, 17:11
парни помоги с инф-кой.там 6 задач бюджет 600
архив с заданиями:
http://www.rapidshare.ru/987281
KaZ@NoVa
30.03.2009, 18:59
парни помоги с инф-кой.там 6 задач бюджет 600
архив с заданиями:
http://www.rapidshare.ru/987281
1. В архиве нет самих заданий. Лишь ссылки на стр. в учебнике/задачнике// !!!!! Напиши аську, я посмотрю задания.
HencH_MaN
30.03.2009, 22:37
HencH_MaN
нужно как-нибудь разделять идентификаторы по области видимости? Что если два одинаковых идентификатора в разных областях видимости?
update:
если нет, то задача достаточно простая. Если да, то немногим сложнее.
Нет разделять не нужно
Доброй ночи. Прошу помощи ачатовцы. Завтро надо здать. Не прошу готовую програму. Хотя было бы не плохо.Может хоть идею. Нужно повернуть двухмерный масив на 90 градусов. Предполагаю что нужно много цыклов и указателей которые перемещать будут. Но не могу придумать саму систему.
2 miniden
поворот матрицы си (http://forum2007.algolist.ru/showflat.php/Cat/0/Number/11611/Main/11603)
поворот матрицы паскаль (http://programmersforum.ru/showthread.php?t=35450)
KaZ@NoVa
31.03.2009, 10:33
Доброй ночи. Прошу помощи ачатовцы. Завтро надо здать. Не прошу готовую програму. Хотя было бы не плохо.Может хоть идею. Нужно повернуть двухмерный масив на 90 градусов. Предполагаю что нужно много цыклов и указателей которые перемещать будут. Но не могу придумать саму систему.
повернуть на 90 градусов по часовой или против часовой стрелки?)
а так там не надо указателей)
Оставляйте заказы за 1 день,или Раньше!!! До сдачи!!!!
2 miniden
поворот матрицы си (http://forum2007.algolist.ru/showflat.php/Cat/0/Number/11611/Main/11603)
поворот матрицы паскаль (http://programmersforum.ru/showthread.php?t=35450)
ДАс спасибо, это вроде подходит.
повернуть на 90 градусов по часовой или против часовой стрелки?)
это не играет роли. Язык си.
Вот, блин утро если кто есть...Не пашет что-то.
#include <iostream.h>
#include <windows.h>
#include <stdlib.h>
#include<time.h>
void main()
{
const int N=5;
int matrix[N][N];
srand(time(0));
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
matrix[i][j]=rand()%(10);
cout<<matrix[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
for ( int k = 0; k < N*N/2; ++k )
{
int i = k / N, j = k % N;
if ( i <= j && j < N-1-i )
{
int a = matrix[i][j];
matrix[i][j] = matrix[N-1-j][i];
matrix[N-1-j][i] = matrix[N-1-i][N-1-j];
matrix[N-1-i][N-1-j] = matrix[j][N-1-i];
matrix[j][N-1-i] = a;
}
}
{
for(int j=0;j<N;j++)
{
matrix[i][j]=rand()%(10);
cout<<matrix[i][j]<<" ";
}
cout<<endl;
}
}
Ошибка здесь:
{
for(int j=0;j<N;j++)
{
matrix[i][j]=rand()%(10);
cout<<matrix[i][j]<<" ";
}
cout<<endl;
}
Исправленный рабочий вариант:
#include <iostream.h>
#include <windows.h>
#include <stdlib.h>
#include<time.h>
void main()
{
const int N=5;
int matrix[N][N];
srand(time(0));
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
matrix[i][j]=rand()%10;
cout<<matrix[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
for ( int k = 0; k < N*N/2; ++k )
{
int i = k / N, j = k % N;
if ( i <= j && j < N-1-i )
{
int a = matrix[i][j];
matrix[i][j] = matrix[N-1-j][i];
matrix[N-1-j][i] = matrix[N-1-i][N-1-j];
matrix[N-1-i][N-1-j] = matrix[j][N-1-i];
matrix[j][N-1-i] = a;
}
}
for(i=0; i<N; i++){
for(int j=0;j<N;j++)
{
cout<<matrix[i][j]<<" ";
}
cout<<endl;
}
}
Serj_smail
31.03.2009, 20:05
1. Написать прог-му вычисления выражения и ввода полученного результата на экран, q=max(x+y+z,x-y,min(XY))
2. Найти сумму кубов всех целых чисел от 20 до 40
3.Дан массив натуральных чисел. Найти сумму элементов, кратных данному 15
Я знаю, что все задачи примитивные, но по болезни пропустил эти темы...
Жду ответов! :)
Serj_smail, что за max и min?
вторая:
sum:=0;
for i = 20 to 40 do
begin
sum:=i*i*i+sum;
end;
третья:
a:array [1..10] of integer;
sum:=0;
for i = 0 to 10 do
begin
if a[i] mod 15 = 0 then
sum:=sum + a[i];
end;
надеюсь помог)
Serj_smail
31.03.2009, 20:37
Сам не знаю =)
Спасибо ограомное, очень помог !
думаю что max и min - это максимальное и минимальное значение...
проверка
max=y;
if(x>max)
max=x;
if(z>max)
max=z;
//так можно хоть сколько значений проверить =)))
return max;
типа надо написать функции которая будет возвращять макс/мин значение..
Насчет min'а все понятно...из двух чисел ищется минимальное. А вот насчет max'а...там три параметра, хз какой там алгоритм. Поэтому я и пропустил задание :)
wildshaman
31.03.2009, 20:53
2.
s:=0;
for i:=20 to 40
begin
cube:=sqr(i)*i;
s:=s+cube;
end;
HencH_MaN
31.03.2009, 21:49
HencH_MaN
если нет, то задача достаточно простая. Если да, то немногим сложнее.
Поможешь плиз мне через 2 недели сдавать :rolleyes:
Здравствуйте ребята, мне нужна помощь по лабораторной работе
Реализовать игру «Гонки» на Pascal ABC. На экране изображается замкнутый гоночный трек, рисуемый при помощи двух прямоугольников - один внутри другого
Высота и ширина внешнего прямоугольника генерируются программой как случайные числа при помощи функции random. Диапазон возможной ширины и высоты взять, например, в пределах от 200 до 400 пикселей. Смещение левой верхней точки внутреннего прямоугольника относительно левой верхней точки внешнего прямоугольника тоже задать случайными числами, например, в диапазоне от 10 до 30 пикселей. Размеры внутреннего прямоугольника опять же задать как случайные числа, но так, чтобы границы внутреннего прямоугольника не вылезали за границы внешнего, и чтобы справа и снизу между прямоугольниками тоже оставалось некоторое пространство примерно от 10 до 30 пикселей.
Область между прямоугольниками считается треком, пригодным для движения гоночных машин. Область внутри внутреннего прямоугольника и снаружи внешнего считается обочиной, непригодной для движения машин.
Изначально машина игрока устанавливается в некоторую случайную точку на треке и имеет нулевую скорость. Цель игрока - проехать по треку за минимальное количество ходов. На каждом ходе игрок может изменять скорость машины по оси X и скорость по оси Y не более чем на единицу (скорость, равная единице, соответствует перемещению на один пиксель за ход). То есть на каждом ходу игрок может выбрать один из следующих вариантов действий:
1. Увеличить скорость по оси X на единицу и увеличить скорость по оси Y на единицу.
2. Увеличить скорость по оси X на единицу и оставить скорость по оси Y неизменной.
3. Увеличить скорость по оси X на единицу и уменьшить скорость по оси Y на единицу.
4. Оставить скорость по оси X неизменной и увеличить скорость по оси Y на единицу.
5. Оставить скорость по оси X неизменной и оставить скорость по оси Y неизменной.
6. Оставить скорость по оси X неизменной и уменьшить скорость по оси Y на единицу.
7. Уменьшить скорость по оси X на единицу и увеличить скорость по оси Y на единицу.
8. Уменьшить скорость по оси X на единицу и оставить скорость по оси Y неизменной.
9. Уменьшить скорость по оси X на единицу и уменьшить скорость по оси Y на единицу.
Сразу после выбора игроком действия машина сдвигается на экране в соответствии с той скоростью, которую она получает. Если после этого машина остаётся на трассе (или на границе между трассой и обочиной), то у неё остаётся полученная скорость, и игрок переходит к следующему ходу (то есть ещё раз выбирает один из девяти вариантов действий). Если же машина после хода оказывается за границей трека, то её скорость сразу становится равно нулю по обеим осям, и игрок опять же переходит к следующему ходу.
Для управления машиной в программе должен быть интерфейс (сделать/нарисовать клавиши: вверх, вниз, влево, вправо, и кнопка: ОК)
Четыре кнопки позволяют уменьшать/увеличивать скорость по осям X или Y, а кнопка OK - принять выбранную скорость и сделать ход. В центре располагается стрелка, которая показывает направление и величину текущей скорости машины.
Программа обязательно должна быть реализована по модульному принципу. Каждая подзадача реализуется в виде отдельной функции или процедуры, имеющей соответствующее решаемой задаче название и список параметров и пригодной для адекватного использования в других программах. Размер подпрограмм должен быть как можно меньше: количество команд в теле каждой процедуры или функции - от одной до семи.
WeReWoLf777
01.04.2009, 15:26
На шахматной доске надо разместить 8 ферзей так чтоб их пути не пересекались.
с комментариями плиз.
KaZ@NoVa
01.04.2009, 17:00
На шахматной доске надо разместить 8 ферзей так чтоб их пути не пересекались.
с комментариями плиз.
эт на курсовую тянет) у меня в восьмом классе такая тема на паскале была.
что отдаётся программе и что она возвращает?
координаты всех ферзей? :D :D
KaZ@NoVa
01.04.2009, 17:06
ну мой вариант выводил все варианты таких расстановок.
вот. я писал на паскале и было это 2 года назад=)
но щас вспомню и быстренько сделаю на cpp
К вечеру нормально будет?)
WeReWoLf777
01.04.2009, 17:15
да норм спс
WeReWoLf777
01.04.2009, 17:18
прога сама должна расположить 8 ферзей на шахматной доске.
jawbreaker
01.04.2009, 17:55
На шахматной доске надо разместить 8 ферзей так чтоб их пути не пересекались.
с комментариями плиз.
Читать (http://www.piter.com/lib/978588782270/oop.phtml?fil=oop_ch5)
+ исходник на С:
int col[8], up_free[15], dn_free[15], coln[8] ;
main( )
{
int i ;
for ( i = 0 ; i <= 7 ; i++ )
col[i] = 1 ;
for ( i = 0 ; i <= 14 ; i++ )
up_free[i] = dn_free[i] = 1 ;
clrscr( ) ;
addqueen( ) ;
}
addqueen( )
{
int i, c, r ;
static int comb, row = -1 ;
row++ ;
/* Проверяем колонки */
for ( i = 0 ; i <= 7 ; i++ )
{
/* если клетка не находится под ударом */
if ( col[i] && up_free[i+row] && dn_free[row-i+7])
{
/* запоминаем, что в строке находится ферзь */
coln[row] = i ;
/* маркируем колонку и диагональ */
col[i] = 0 ;
up_free[i+row] = 0 ;
dn_free[row-i+7] = 0 ;
/* если заполнены все строки */
if ( row >= 7 )
{
comb++ ;
printf ( "\n\n\ncombination no. %d", comb ) ;
for ( r = 0 ; r <= 7 ; r++ )
{
printf ( "\n" ) ;
for ( c = 0 ; c <= 7 ; c++ )
{
if ( c == coln[r] )
printf ( " Q " ) ;
else
printf ( " . " ) ;
}
}
}
else
addqueen( ) ;
/* снимаем пометку с колонки и диагонали */
col[ coln[row] ] = 1 ;
up_free[ row + coln[row] ] = 1 ;
dn_free[ row - coln[ row ] + 7 ] = 1 ;
}
}
row-- ; /* уменьшаем счетчик строк, пробуем следующую комбинацию */
}
KaZ@NoVa
01.04.2009, 18:05
#include<stdio.h>
int col[8];
int up_free[15];
int dn_free[15];
int coln[8];
void addqueen(){
int i,c,r;
static int comb, row = -1;
row++;
//Проверяем все колонки
for (i = 0; i <= 7; i++){
//Если колонка не находится под ударом
if ( col[i] && up_free[i+row] && dn_free[row-i+7]){
//Запоминаем что в строке есть ферзь
coln[row] = i;
//Маркируем колонку и обе диагонали
col[i] = 0;
up_free[i+row] = 0;
dn_free[row-i+7] = 0;
//Если все строки мы уже запомнили, то выводим комбинацию
if (row >= 7){
comb++;
printf("\n\nCombination number - %d\n",comb);
for (r = 0; r <= 7; r++){
printf("\n");
for (c = 0; c <=7; c++){
if (c == coln[r]){
printf("@");
}
else{
printf("-");
}
}
}
}
else{
addqueen();
}
//Снимаем метку с колонки и диагонали
col[coln[row]] = 1;
up_free[row+coln[row]] = 1;
dn_free[row-coln[row]+7] = 1;
}
}
//Переходим к следующему варианту
row--;
}
int main(){
int i;
for (i = 0; i <= 7; i++){
col[i] = 1;
}
for (i = 0; i<= 14; i++){
up_free[i] = dn_free[i] = 1;
}
addqueen();
return 0;
}
прогу писал давно - так что щас не думал, просто перевёл с одного языка на другой.
исходник. нужно только скомпилировать и запустить)
KaZ@NoVa, как тебе не стыдно?
http://www.codenet.ru/progr/alg/ferzi.php
KaZ@NoVa
01.04.2009, 18:12
Chaak ага) я походу оттуда классе в восьмом переводил на паскаль)
а теперь назадXD
WeReWoLf777
01.04.2009, 19:05
большое спс
Hammer94
01.04.2009, 19:11
Ребята срочно, помогите пожалуйста с задачкой, надо написать игру на C# как вот здесь(аналогичную) http://ifolder.ru/11376454
если что вот моя аська: 396052292
WeReWoLf777
02.04.2009, 15:48
Помогите перевести прогу с паскаля в с++ (полностью)с коментами если можно.
Прога вот:
Uses CRT;
type
real=extended;
const
matrixA: array[1..3,1..3] of real = ((-19/20,1/5, 3/5),
(-1 ,0.1, 0.5),
(-0.01 ,0 ,1/200));
One: array [1..3,1..3] of real = ((1,0,0),
(0,1,0),
(0,0,1));
U:array[1..3] of real = (1,1,1.1);
var
i,j,k,q:byte;
A,At,A1,A2,Ar,One1:array[1..3,1..3] of real;
delta,Det,S,alpha:real;
B,Z,U1:array[1..3] of real;
f:text;
Procedure TransA;
begin
for i:=1 to 3 do
for j:=1 to 3 do
At[i,j]:=A[j,i]
end;
Function Koef(par1,par2:byte):real;
var
Sum:byte;
Tmp:real;
begin
Sum:=par1+par2;
Tmp:=1;
for k:=1 to sum do
Tmp:=Tmp*(-1);
Koef:=Tmp;
end;
Function AlAdd(par1,par2:byte):real;
type
element=record
value:real;
flag:boolean;
end;
var
BB:array[1..2,1..2] of real;
AA:array[1..3,1..3] of element;
k,v,w:byte;
N:array[1..4] of real;
P1:real;
begin
for v:=1 to 3 do
for w:=1 to 3 do begin
AA[v,w].value:=A2[v,w];
AA[v,w].flag:=true
end;
for v:=1 to 3 do AA[par1,v].flag:=false;
for v:=1 to 3 do AA[v,par2].flag:=false;
{ for v:=1 to 3 do begin
for w:=1 to 3 do write(AA[i,j].value:2:3,' ');
writeln
end; }
k:=1;
for v:=1 to 3 do
for w:=1 to 3 do
begin
if AA[v,w].flag then
begin
N[k]:=AA[v,w].value;
{ writeln(N[k]);}
k:=k+1
end;
end;
BB[1,1]:=N[1]; BB[1,2]:=N[2];
BB[2,1]:=N[3]; BB[2,2]:=N[4];
{ writeln('alg dop',par1,par2,' ',BB[1,1]*BB[2,2]-BB[1,2]*BB[2,1]);}
AlAdd:=BB[1,1]*BB[2,2]-BB[1,2]*BB[2,1];
end;
Function DetCount:real;
var
S1:real;
z:byte;
begin
S1:=0;
for z:=1 to 3 do S1:=S1+A2[1,z]*Koef(1,z)*AlAdd(1,z);
DetCount:=S1;
end;
Procedure RevMatr;
begin
for i:=1 to 3 do
for j:=1 to 3 do
Ar[j,i]:=Koef(i,j)*AlAdd(i,j)/DetCount;
{ for i:=1 to 3 do begin
for j:=1 to 3 do write(Ar[i,j],' ');
writeln;
end;}
end;
Function AllRight:boolean;
begin
writeln(f,'*Ґўп§Є Ї® 1-¬г н«-вг',(abs(U[1]-U1[1])));
writeln(f,'*Ґўп§Є Ї® 2-¬г н«-вг',(abs(U[2]-U1[2])));
writeln(f,'*Ґўп§Є Ї® 3-¬г н«-вг',(abs(U[3]-U1[3])));
writeln(F);
if (abs(U[1]-U1[1])<0.001) and (abs(U[2]-U1[2])<0.001) and
(abs(U[3]-U1[3])<0.001) then AllRight:=true
else AllRight:=false
end;
Function Pow(par1:real;par2:byte):real;
var
S2:real;
z:byte;
begin
S2:=1;
if par2=0 then begin
Pow:=1;
exit
end
else
for z:=1 to par2 do S2:=S2*par1;
Pow:=S2;
end;
BEGIN
clrscr;
Assign(f,'c:\tikh.txt');
Rewrite(f);
for i:=1 to 3 do
for j:=1 to 3 do
A[i,j]:=matrixA[i,j];
TransA;
Det:=0.000125;
{----------------------------}
for i:=1 to 3 do begin
S:=0;
for j:=1 to 3 do begin
S:=S+At[i,j]*U[j];
B[i]:=S
end;
end;
{----------------------------}
for i:=1 to 3 do
for j:=1 to 3 do
begin
S:=0;
for k:=1 to 3 do begin
S:=S+At[i,k]*A[k,j];
A1[i,j]:=S
end
end;
{-----------------------------}
q:=1;
repeat
alpha:=q/pow(4,q);
for i:=1 to 3 do
for j:=1 to 3 do
One1[i,j]:=One[i,j]*alpha;
for i:=1 to 3 do
for j:=1 to 3 do
A2[i,j]:=One1[i,j]+A1[i,j];
RevMatr;
{------------------------------}
for i:=1 to 3 do begin
S:=0;
for j:=1 to 3 do begin
S:=S+Ar[i,j]*B[j];
Z[i]:=S
end;
end;
for i:=1 to 3 do begin
S:=0;
for j:=1 to 3 do begin
S:=S+A[i,j]*Z[j];
U1[i]:=S
end
end;
q:=q+1;
until AllRight;
{------------------------------}
clrscr;
writeln('ЏаЁЎ«Ё¦Ґ*ЁҐ Є *®а¬ «м*®¬г аҐиҐ*Ёо');
for i:=1 to 3 do writeln('Z(',i,')=',z[i]);
writeln;
writeln('‡* зҐ*ЁҐ Їа ў®© з бвЁ ЇаЁ Ї®¤бв *®ўЄҐ ЇаЁЎ«. аҐиҐ*Ёп');
for i:=1 to 3 do writeln('U1(',i,')=',U1[i]);
writeln;
writeln('‡* зҐ*ЁҐ Ї а ¬Ґва ॣг«паЁ§ жЁЁ:');
writeln(alpha);
Close(f);
readln;
END.
сама задача и решение тут:http://letitbit.net/download/fedbf2800813/-------.doc.html
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot