Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

27.09.2009, 09:55
|
|
Постоянный
Регистрация: 13.10.2007
Сообщений: 347
Провел на форуме: 1345617
Репутация:
115
|
|
Работа с памятью EEPROM ATmega16
Задание1. Сложить два числа хранящиеся в ячейках памяти по адресам 120H и 121H, записать полученную сумму в ячейку памяти по адресу 122H. В области EEPROM, начиная с адреса 008Н , содержащей 32 байта, поместить константу ААН.
------------------
асемблер
|
|
|

27.09.2009, 12:11
|
|
Участник форума
Регистрация: 05.06.2009
Сообщений: 127
Провел на форуме: 1313455
Репутация:
249
|
|
По итерациям что то вроде того:
Код:
program Iteraz;
uses graph,crt;
var
a,b,x1,x,f1,f2,e:real;
i,n:integer;
function ArcSin ( X : Real ): Real;
begin
if X = 1.0 then { чтобы не было деления на 0 }
ArcSin := Pi / 2.0
else
ArcSin := ArcTan ( X / Sqrt ( 1 - X * X ) );
end;
function f(tmpX:real):real;
begin
f:=sqrt(1*tmpX*tmpX)-ArcSin(tmpX);
end;
begin
a:=0;
b:=0.99;
x1:=a;
f1:=f(x1);
e:=0.001;
n:=round((b-a)/e);
writeln('Metod iterazii');
for i:=1 to n do begin
x:=x1+(b-a)/n;
f2:=f(x);
if f1*f2<=0 then begin
writeln('Done. X = ',(X+x1)/2:6:4);
writeln('Kolichectvo iterazii = ',i);
end;
x1:=x;f1:=f2;
end;
readkey;
end.
Метод итераций.
При решении нелинейного уравнения методом итераций воспользуемся записью уравнения в виде x=f(x). Задаются начальное значение аргумента x0 и точность e. Первое приближение решения x1 находим из выражения x1=f(x0), второе - x2=f(x1) и т.д. В общем случае i+1 приближение найдем по формуле xi+1 =f(xi). Указанную процедуру повторяем пока |f(xi)-xi| >eУсловие сходимости метода итераций |f'(x)<1| . Структограмма метода итераций:
Не знаю корректно ли работает программа, но я в свое время её сдал ;D
Если подставить в качестве верхнего предела 1, то будет переполнение.
По сути все верно, так как если изменить интервал, то программа вообще не найдет решения.
Другой вариант:
Код:
program ITERAT;
uses crt;
const max_iter=100; {максимальное количество итераций}
var
i :integer;
x,x0,eps,M:real;
function ArcSin ( X : Real ): Real;
begin
if X = 1.0 then { чтобы не было деления на 0 }
ArcSin := Pi / 2.0
else
ArcSin := ArcTan ( X / Sqrt ( 1 - X * X ) );
end;
function F(tmpX:real):real; {функция}
begin
f:=sqrt(1*tmpX*tmpX)-ArcSin(tmpX);
end;
begin {основная программа}
clrscr;
x:=0;
x0:=0.99;
eps:=0.001;
i:=0;
repeat
M:=-(F(x+eps)-F(x-eps))/(2*eps); {коэффициент для улучшения сходимости}
x0:=x;
x:=x0+F(x0)/M; {сердце метода итераций}
inc(i);
until (abs(x-x0)<=eps)or(i>max_iter);
if (abs(x-x0)<=eps) then writeln('Otvet: X= ',x:6:4,' naiden za ',i,' shagov')
else writeln('Otvet ne naiden! Za ',max_iter:0,' shagov.');
readkey;
end.
Программа взята отсюда и немного подредактирована.
Последний раз редактировалось Dosia; 27.09.2009 в 13:08..
|
|
|

27.09.2009, 13:13
|
|
Познающий
Регистрация: 25.03.2008
Сообщений: 65
Провел на форуме: 190034
Репутация:
3
|
|
Задача на TurboP связанная с циклами.
Найти среднее геометрическое всех целых положительных чисел меньше 10.
|
|
|

27.09.2009, 15:05
|
|
Участник форума
Регистрация: 05.06.2009
Сообщений: 127
Провел на форуме: 1313455
Репутация:
249
|
|
Код:
program SREDNEE_GEOMETRICHESKOE;
var
SrGeoM:real;
i:integer;
begin
SrGeom:=1;
for i:=1 to 9 do SrGeom:=SrGeom*i;
srGeom:=exp(ln(srGeom)/i);
writeln('Srednee geometricheskoe vseh zelih polozhitelnix chisel menshe 10 [1..9] = ',SrGeom:6:4);
readln;
end.
Результат работы:
Код:
Srednee geometricheskoe vseh zelih polozhitelnix chisel menshe 10 [1..9] = 4.147
2
Проверил на калькуляторе - сходится.
|
|
|

27.09.2009, 23:26
|
|
Участник форума
Регистрация: 15.12.2006
Сообщений: 212
Провел на форуме: 587761
Репутация:
144
|
|
Создайте текстовый файл, содержащий сведения о телефонах абонентов: фамилия абонентов, год установки телефона. Напишите программу, которая формирует двоичный файл, каждый элемент которого является структурой, составленной на основе данных текстового файла. Отсортируйте данные бинарного файла в алфавитном порядке фамилий абонентов и по вводимой фамилии абонента выведите его номер телефона
Создать текстовый файл, содержащий сведения о сотрудниках института: фамилия работающего, название отдела, год рождения, стаж работы, должность, оклад. Напишите программу, которая формирует двоичный файл, каждый элемонт которого является структурой, составленной на основе данных текстового файла. Отсортируйте данные бинарного файла в порядке возрастания стажа работы. Выведите на экран информацию о сотрудниках, чей стаж работы больше Х лет.
С++
Ребят выручите.
|
|
|

28.09.2009, 18:29
|
|
Постоянный
Регистрация: 15.03.2008
Сообщений: 441
Провел на форуме: 2052341
Репутация:
95
|
|
Составить программу, вычисляющую значение переменной F по правилу:
min(x,y), если а -цифра
F=
max(x,y), если а - не цифра
Переменные x,y,F – вещественные, переменная a – символьная. Значение переменных x,y,a ввести с клавиатуры. На экран вывести значение переменных x,y,a и вычисленное значение переменной F.
язык - с#
ИСпользовать жедательно толко оператор if else.
Заранее спасибо)
|
|
|

28.09.2009, 18:58
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
Код:
Console.WriteLine("Enter x: ");
int x = int.Parse(Console.ReadLine());
Console.WriteLine("Enter y: ");
int y = int.Parse(Console.ReadLine());
Console.WriteLine("Enter a: ");
char a = char.Parse(Console.ReadLine());
int F = 0;
if(Char.IsDigit(a))
{
F = x > y ? y : x;
}
else if(Char.IsLetter(a))
{
F = x > y ? x : y;
}
Console.WriteLine("\nX: {0} ; Y: {1} ; A: {2}\nF: {3}", x,y,a,F);
Console.ReadLine();
|
|
|

28.09.2009, 19:06
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме: 298300
Репутация:
128
|
|
Сообщение от Validol
С++
Ребят выручите.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ABONENTS_COUNT_MAX 500
#define LINE_MAX 256
typedef struct {
char name[LINE_MAX];
char phone_number[LINE_MAX];
unsigned int installation_year;
} abonent;
int abonents_compare (const void * a, const void * b) {
return strcmp(((abonent*)a)->name,((abonent*)b)->name);
}
int main(int argc, char** argv){
FILE * text_file = fopen(argv[1],"rt");
abonent abonents[ABONENTS_COUNT_MAX];
int abonents_count = 0;
char buf_name[LINE_MAX], buf_number[LINE_MAX];
int buf_year;
while( fscanf(text_file,"%s %s %d", buf_name,buf_number,&buf_year)!= EOF){
strcpy(abonents[abonents_count].name,buf_name);
strcpy(abonents[abonents_count].phone_number,buf_number);
abonents[abonents_count++].installation_year = buf_year;
}
fclose(text_file);
qsort (abonents, abonents_count, sizeof(abonent), abonents_compare);
FILE * struct_file = fopen("base.txt","w");
fwrite(abonents,sizeof(abonent),abonents_count,struct_file);
fclose(struct_file);
char name[LINE_MAX];
while(1){
printf("Enter the name: ");
scanf("%s",name);
for(int i=0; i<abonents_count; i++)
if(strcmp(abonents[i].name,name)==0)
printf("%s\n",abonents[i].phone_number);
}
return 0;
}
Делов-то, это про телефоны, второе делай по аналогии. Перед тем, как идти сдавать, разберись, что в проге происходит. Она выполняет все, что от тебя требовалось.
Текстовый файл в таком формате
abonent 884756739 1998
hd 8288374 1999
1_abonent 44556654 1967
Последний раз редактировалось ss88; 28.09.2009 в 19:10..
|
|
|

29.09.2009, 00:06
|
|
Участник форума
Регистрация: 26.11.2008
Сообщений: 158
Провел на форуме: 2816163
Репутация:
158
|
|
ss88
А как лучше - читать текстовый, создавать массив потом сортировать и записывать в бинарный файл или - сразу читать текстовик и записывать в бинарный а потом сортировать(уже в бинаре) ?
|
|
|

29.09.2009, 01:08
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
зависит от количества записей. если их очень много - то чтобы не убить оперативу делаешь сортировку слиянием, она работает с файлами. если записей не фатально много - сортировка в памяти и лишь потом запись.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|