PDA

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


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

n1ghtstalker
10.12.2009, 23:15
Need help... я просто в ступоре... 2 задачи на списки:
1. Дано 2 однонаправленных списка целых чисел. Заменить все элементы с чётной суммой цифр из первого списка на наибольший элемент второго списка.
2. Дан двунаправленный список целых чисел.отсортировать элементы списка в порядке убывания.

Я профилонил тему про эти списки и ничего не понимаю как они строяться , если у кого есть материалы по ним.буду благодарен ссыль на них.

cheater_man
11.12.2009, 00:08
Срочно нужна помощь

На основании исходных данных представленных в таблице 4. Необходимо на языке С или С++ написать программу определения:
- среднемесячной заработной платы одного рабочего на предприятии

http://s39.radikal.ru/i085/0912/0a/46024191fbbf.jpg
Если ты эту табличку забьешь в *.txt, то тут проблем нет. Turbo С и вперед :D

Failure
12.12.2009, 03:33
http://i065.radikal.ru/0912/f7/82f39797ed36t.jpg (http://i065.radikal.ru/0912/f7/82f39797ed36.png)

прошу пояснить по человечески чего от меня хотят :D
накодить смогу если четко пойму ТЗ (TP/Delphi)

frostJKE
12.12.2009, 16:06
Пожалуйста помогите сделать лабораторную работу.
Вот задание:
Получение общих сведений о процессоре и подключенных периферийных устройствах.

1. Цель работы

1.Определить наличие и получить общие сведения о подключенных периферийных устройствах в IBM PC AT-совместимой ПЭВМ.
2. Идентифицировать процессор.

2. Задание.

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

Написать нужно в программе Builder C++ , но на языке ассемблер, но можно на чистом ассемблере(только еще небольшая просьба, пожалуйста с комментариями... а то я не разберусь в коде...)
Буду очень признателен за вашу помощь...

pixelm
12.12.2009, 17:25
Привет, делаю курсовик по программированию на C.
Нужна помощь.

Общее меню программы с функциями.


#include <stdio.h>
void sozdanie();
void dobavlenie();
void udalenie();
void korrektirovka();
void prosmotr();
void sortirovka();
void vivod();
void vihod();

void main(void)
{
char ch,v;
do {
printf("1. Sozdanie \n");
printf("2. Dobavlenie \n");
printf("3. Udalenie \n");
printf("4. Korrektirovka \n");
printf("5. Prosmotr \n");
printf("6. Sortirovka \n");
printf("7. Vivod \n");
printf("8. Vihod \n");

printf("Vvedite nomer komandi: \n");

ch=getchar();
v=getchar();

switch (ch)
{
case '1': sozdanie();break;
case '2': dobavlenie();break;
case '3': udalenie();break;
case '4': korrektirovka();break;
case '5': prosmotr();break;
case '6': sortirovka();break;
case '7': vivod();break;
}
} while ((ch)='1' && ch<='7');
}
void sozdanie()
{
printf ("Sozdanie faila \n");
}
void dobavlenie()
{
printf ("Dobavlenie faila \n");
}
void udalenie()
{
printf ("Udalenie faila \n");
}
void korrektirovka()
{
printf ("Korrektirovka faila \n");
}
void prosmotr()
{
printf ("Prosmotr faila \n");
}
void sortirovka()
{
printf ("Sortirovka faila \n");
}
void vivod()
{
printf ("Vivod faila \n");
}
void vihod()
{
printf ("Vihod \n");
}

Вместо printf ("Sozdanie faila \n"); printf ("Dobavlenie faila \n"); и т.д. буду вставлять функции.

Написал первую функцию


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

void sozdanie()
{struct poezd
{
char punkt[15];
int nomer;
int chas;
int minuta;
}; train;
FILE*f;
int i;
f=fopen ("test","w");
if(ferror(f)) perror("oshibca");
else{for(i=0;i<3;i++){
printf("\n nazvanie punkta naznachenya:");
scanf("%s", train.punkt);
printf("\n nomer poezda:");
scanf("%d",&train.nomer);
printf("\n chas");
scanf("%d",&train.chas);
printf("\n minuta");
scanf("%d", &train.minuta");
fwrite(&train,sizeof (struct poezd),1,f);
}
fclose(f);
}

Преподаватель сказал, что лучше во времени отправления взять час и минуту, как отдельные целые числа. Каким образом правильно сделать ввод времени пользователем при создании файла. То есть, чтобы было в виде, например, 11:30?

winflip
12.12.2009, 20:58
В принципе не важно на каком языке писать, если что хотя бы намекните. Задача по программированию.
Дана точка(x,y) и многоугольник (x1,y1,x2,y2,x3,y3). У него не более 100 рёбер.В задаче они описываются как человек и забор. То есть человек представлен точкой, а забор многоугольником. Надо определить какие звенья забора может увидеть человек. Причём сквозь забор он не видит ничего. Можно конечно решать тонной уравнений прямых, но хотелось бы более простое решение. Оно вроде бы есть. Буду благодарен за ответы до понедельника)

sn0w
12.12.2009, 21:06
если разбираешься - посмотри подсчет FOVangle (Filed Of View, по дефолту в играх он 90 градусов, те ты видишь четверть окружающего) и хитбоксов (из аимботов под кс например)

http://img263.imageshack.us/img263/6946/34052046.jpg

это в случае ес нормально к объекту находишься (твоя у параллельна забору), те твой viewport. а если нет то там погеморойней

а вот еще вариант

http://img192.imageshack.us/img192/5343/11740447.jpg

о бля тут я переборщил, средний меридиан такой не будет точно если вупорт под углом(, о бля а может и будет!)) это для статистики интересно кста)

Alexey2
13.12.2009, 01:07
Помогите плз решить вот такую вот хреньку... Долго думал, но нифига не понял, даже условие задачи...

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

Ну или подскажите хотя бы в какую сторону копать)
Спасибо))

pixelm
13.12.2009, 10:28
Программа не запускается, помогите пожалуйста найти ошибки?

#include <stdio.h>
void sozdanie();
void dobavlenie();
void udalenie();
void korrektirovka();
void prosmotr();
void sortirovka();
void vivod();
void vihod();

void main(void)
{
char ch,v;
do {
printf("1. Sozdanie \n");
printf("2. Dobavlenie \n");
printf("3. Udalenie \n");
printf("4. Korrektirovka \n");
printf("5. Prosmotr \n");
printf("6. Sortirovka \n");
printf("7. Vivod \n");
printf("8. Vihod \n");

printf("Vvedite nomer komandi: \n");

ch=getchar();
v=getchar();

switch (ch)
{
case '1': sozdanie();break;
case '2': dobavlenie();break;
case '3': udalenie();break;
case '4': korrektirovka();break;
case '5': prosmotr();break;
case '6': sortirovka();break;
case '7': vivod();break;
}
} while ((ch)='1' && ch<='7');
}
void sozdanie()
{
struct poezd
{
char punkt[15];
int nomer;
int chas;
int minuta;
}train;
FILE*f;
int i;
f=fopen ("test","w");
if(ferror(f)) perror("oshibca");
else{for(i=0;i<3;i++){
printf("\n nazvanie punkta naznachenya:");
scanf("%s", train.punkt);
printf("\n nomer poezda:");
scanf("%d",&train.nomer);
printf("\n vremya otpravlenya");
scanf("%d:%d",&train.chas, &train.minuta");
fwrite(&train,sizeof (struct poezd),1,f);
}
fclose(f);
}
void dobavlenie()
{
printf ("Dobavlenie faila \n");
}
void udalenie()
{
printf ("Udalenie faila \n");
}
void korrektirovka()
{
printf ("Korrektirovka faila \n");
}
void prosmotr()
{
printf ("Prosmotr faila \n");
}
void sortirovka()
{
printf ("Sortirovka faila \n");
}
void vivod()
{
printf ("Vivod faila \n");
}
void vihod()
{
printf ("Vihod \n");
}

Algol
13.12.2009, 13:05
Можно конечно решать тонной уравнений прямых, но хотелось бы более простое решение.
Таки придется решать тонной уравнений
См алгоритмы поиска пересечений отрезков
http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D1%81%D0%B5%D1%87%D0%B5%D 0%BD%D0%B8%D0%B5_%D0%BE%D1%82%D1%80%D0%B5%D0%B7%D0 %BA%D0%BE%D0%B2

BitHack
13.12.2009, 13:39
помогите с программой плиз.

Дана целочисленная квадратная матрица n*n
1) Найти номера столбцов элементы которых образают убываюшую последовательность. Номера вывести на печать.
2) Номера выделенных столбцов возвести в квадрат и вывести на печатать, расположив по возрастанию.

Thenno
13.12.2009, 13:43
Помогите плз решить вот такую вот хреньку... Долго думал, но нифига не понял, даже условие задачи...

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

Ну или подскажите хотя бы в какую сторону копать)
Спасибо))
Не знаю даже, в какую сторону отсылать, ибо это основы, поэтому сразу код:
function proverk (a:array[1..n] of integer):integer;
var
i,j:integer;
begin
for i:=1 to n-2 do
if a[i] mod 2 <> 0 then
if a[i+1] mod 2 <> 0 then
if a[i+2] mod 2 <> 0 then
begin
proverk:=i;
exit;
end;
proverk:=0;
end;

Algol
13.12.2009, 13:49
Не знаю даже, в какую сторону отсылать, ибо это основы, поэтому сразу код:
function proverk (a:array[1..n] of integer):integer;
var
i,j:integer;
begin
for i:=1 to n-2 do
if a[i] mod 2 <> 0 then
if a[i+1] mod 2 <> 0 then
if a[i+2] mod 2 <> 0 then
begin
proverk:=i;
exit;
end;
proverk:=0;
end;
А если бы нужно было проверить последовательности из 23 элементов, ты бы делал 23 IFа ? :)

Thenno
13.12.2009, 14:12
А если бы нужно было проверить последовательности из 23 элементов, ты бы делал 23 IFа ? :)
Нет конечно. Просто если надо из трех, то мне проще написать три IFа подряд и не парится.

ss88
13.12.2009, 16:36
помогите с программой плиз.

Дана целочисленная квадратная матрица n*n
1) Найти номера столбцов элементы которых образают убываюшую последовательность. Номера вывести на печать.
2) Номера выделенных столбцов возвести в квадрат и вывести на печатать, расположив по возрастанию.

Вот тебе на С. Дополнительная сортировка номеров столбцов не нужна, т.к. они и так в массиве по-порядку
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

typedef struct {
int* col_nums;
int col_count;
} matrix_info_t;

#define N 3

matrix_info_t* scan_matrix(int* M, int n);

int main(int argc, char** argv)
{
int M[N*N] = {
5,2,3,
4,3,2,
3,4,1
};

matrix_info_t * m_info = scan_matrix(M, N);

(void)printf("Номера столбцов:\n");
for(int i = 0; i < m_info->col_count; i++){
(void)printf("%d ", m_info->col_nums[i]);
}

(void)printf("\nНомера столбцов в квадрате:\n");
for(int i = 0; i < m_info->col_count; i++){
(void)printf("%d ", m_info->col_nums[i]*m_info->col_nums[i]);
}

(void)printf("\n");

return 0;
}

matrix_info_t* scan_matrix(int* M, int n){

matrix_info_t * ret = malloc(sizeof(matrix_info_t));
ret->col_count = 0;

for(int j = 0; j < n; j++){
bool correct_column = true;
for(int i = 1; i < n; i++){
if(M[N*(i - 1) + j] < M[N*i + j]){
correct_column = false;
break;
}
}

if(correct_column){
ret->col_nums = realloc(ret->col_nums, sizeof(int) * ret->col_count++);
ret->col_nums[ret->col_count - 1] = j;
}
}

return ret;

}

lamsonir
13.12.2009, 17:30
Нужна помощь, сделать лаб работу на delphi
Тема: Разработка матрицы смежности по заданному графу.(в icq дам точное задание)
Кто может помочь, пишите ICQ 573777
естественно не бесплатно)))

Nelson17
13.12.2009, 17:45
Дана целочисленная матрица размера m на n. Размер матрицы задается динамически во время выполнения программы. Для хранения элементов матрицы использовать динамическое выделение памяти. Матрица заполняется случайными числами в диапазоне от -50 до 50. Используя алгоритм пузырьковой сортировки отсортировать элементы каждой четной строки по возрастанию, а нечетную - по убыванию. Заполнение матрицы случайными числами, сортировку элементов строк матрицы и вывод матрицы на экран организовать в виде функции.
Задание вроде не сильное с первого взгляда, но написать не могу. Помогите по-возможности. С++

Alexey2
13.12.2009, 20:32
Thenno, биг спс, хоть что то)

А если бы нужно было проверить последовательности из 23 элементов, ты бы делал 23 IFа ? :)

А как бы ты реализовал по - другому...?

Odio
13.12.2009, 21:02
Люди помогите решить задачи с двумерными массивами пож =\
1. Дан двумерный массив А[n,m].Посчитать количество отрицательных чисел в массиве. Вывести количество на печать.
2. Найти два минимальных элемента в первой строке массива А[n, n].

Thenno
13.12.2009, 21:08
Thenno, биг спс, хоть что то)

А как бы ты реализовал по - другому...?
Отвечу я: можно IF'ы в цикл засунуть просто, но там мороки побольши чуть-чуть. Есть тебе точно дано 3, то проще написать без них.

BitHack
13.12.2009, 22:43
Вот тебе на С. Дополнительная сортировка номеров столбцов не нужна, т.к. они и так в массиве по-порядку
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

typedef struct {
int* col_nums;
int col_count;
} matrix_info_t;

#define N 3

matrix_info_t* scan_matrix(int* M, int n);

int main(int argc, char** argv)
{
int M[N*N] = {
5,2,3,
4,3,2,
3,4,1
};

matrix_info_t * m_info = scan_matrix(M, N);

(void)printf("Номера столбцов:\n");
for(int i = 0; i < m_info->col_count; i++){
(void)printf("%d ", m_info->col_nums[i]);
}

(void)printf("\nНомера столбцов в квадрате:\n");
for(int i = 0; i < m_info->col_count; i++){
(void)printf("%d ", m_info->col_nums[i]*m_info->col_nums[i]);
}

(void)printf("\n");

return 0;
}

matrix_info_t* scan_matrix(int* M, int n){

matrix_info_t * ret = malloc(sizeof(matrix_info_t));
ret->col_count = 0;

for(int j = 0; j < n; j++){
bool correct_column = true;
for(int i = 1; i < n; i++){
if(M[N*(i - 1) + j] < M[N*i + j]){
correct_column = false;
break;
}
}

if(correct_column){
ret->col_nums = realloc(ret->col_nums, sizeof(int) * ret->col_count++);
ret->col_nums[ret->col_count - 1] = j;
}
}

return ret;

}

я забыл написать, что нужно написать на паскале)))
можешь переписать пожалуйста) :rolleyes:

ss88
13.12.2009, 23:20
Дана целочисленная матрица размера m на n. Размер матрицы задается динамически во время выполнения программы. Для хранения элементов матрицы использовать динамическое выделение памяти. Матрица заполняется случайными числами в диапазоне от -50 до 50. Используя алгоритм пузырьковой сортировки отсортировать элементы каждой четной строки по возрастанию, а нечетную - по убыванию. Заполнение матрицы случайными числами, сортировку элементов строк матрицы и вывод матрицы на экран организовать в виде функции.
Задание вроде не сильное с первого взгляда, но написать не могу. Помогите по-возможности. С++
Не путай С и С++
Вот:
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>

void fill_matrix(int* matrix, int m, int n);
void print_matrix(int* matrix, int m, int n);
void sort_matrix(int* matrix, int m, int n);

int main(int argc, char** argv)
{
int m, n;
(void) printf("Введите количество строк: ");
(void) scanf("%d", &m);
(void) printf("Введите количество столбцов: ");
(void) scanf("%d", &n);

int * matrix = malloc(m * n * sizeof(int));

fill_matrix(matrix,m,n);

print_matrix(matrix,m,n);

(void) printf("Сортировка\n");

sort_matrix(matrix,m,n);

print_matrix(matrix,m,n);

return 0;
}

void fill_matrix(int* matrix, int m, int n){
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
int r = rand() % 51;
matrix[m*i + j] = (r % 2)?-r:r;
}
}
}

void print_matrix(int* matrix, int m, int n){
(void) printf("\nМатрица [%d,%d]\n", m, n);

for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
(void) printf("%3d ", matrix[m*i + j]);
}
(void) printf("\n");
}
(void) printf("\n");
}

void sort_matrix(int* matrix, int m, int n){
for(int i = 0; i < m; i++){
bool cond = true;
while(cond) {
cond = false;
for(int j = 0; j < n - 1; j++){
if(i % 2){
if(matrix[m*i + j] < matrix[m*i + j + 1])
cond = true;
} else {
if(matrix[m*i + j] > matrix[m*i + j + 1])
cond = true;
}

if(cond){
int swp = matrix[m*i + j];
matrix[m*i + j] = matrix[m*i + j + 1];
matrix[m*i + j + 1] = swp;
}
}
}
}
}
Результаты в таком виде:
rocky@rocky-laptop:~$ ./s
Введите количество строк: 4
Введите количество столбцов: 4

Матрица [4,4]
10 -49 -9 34
32 -37 -37 48
-45 -19 -5 -31
20 -19 -29 22

Сортировка

Матрица [4,4]
34 10 -9 -49
-37 -37 32 48
-5 -19 -31 -45
-29 -19 20 22
Если не захочет компилироваться в среде, которую ты используешь, то заюзай gcc:
rocky@rocky-laptop:~$ gcc -Wall -pedantic -std=c99 simple_lab3.c -o s
я забыл написать, что нужно написать на паскале)))
можешь переписать пожалуйста)
Какая неописюемая наглость :) Не могу, я паскаль последний раз видел на 1-м курсе, а это было лет 7 назад, но я запомнил, что его лучше не видеть :)
Перепиши сам, это не трудно

cheater_man
13.12.2009, 23:27
Как считать данные из файла *.txt в Turbo C?

ss88
13.12.2009, 23:31
fscanf

Algol
13.12.2009, 23:54
А как бы ты реализовал по - другому...?
Ну например так

function proverk (a:array of integer):integer;
const seqLength = 3;
var
i:integer;
counter: integer;
begin
counter := 0;
for i:=0 to length(a) do
if a[i] mod 2 <> 0 then
begin
counter := counter + 1;
if(counter=seqLength) then
begin
proverk := i- seqLength + 1;
exit;
end
end
else
counter := 0;

proverk:=0;
end;

Suliman36
14.12.2009, 00:24
Помогите пожалуйто реализовать на C++ следующее:
есть файл 1.txt
содержание:

1
12
123
...

есть файл 2.txt
содержание:

a
ab
abc
...

нухно из этих двух файлов получить файл 3.txt с содержанием:

1;a
1;ab
1;abc
12;a
12;ab
12;abc
123;a
123;ab
123;abc
...

Alexey2
14.12.2009, 01:54
Algol и Thenno бальшущее спасибо:)

PALMA
14.12.2009, 08:38
помогите пожалуйста решить задачи

http://pic.ipicture.ru/uploads/091214/thumbs/RBnGl23L5Q.jpg (http://ipicture.ru/Gallery/Viewfull/28567374.html)

marcos
14.12.2009, 14:58
По заданной сетке букв рахмером m*x и списку слов определить позицию в сетке, в которой находится это слово. Слово в сетке может распологаться только по прямой непрерывной линии букв. Регистр букв значения для совпадения не имеет (т.е. строчные и прописные буквы считаются одинаковыми). Слово может распологаться в любом из 8 диагоналей, горизонтальных и вертикальных направлений.

Дается дв числа 1<=m,n<=50. Следующие m строк содержат ровно по n букв каждая. В сетке могут быть и прописные и заглавные буквы. Далее следует число k(при чем 1<=k<=20). Следующие К строк содержат список слов для поиска, одно слово в строке. Эти строки состоят из букв, никаких пробелов, дефисов и других симолов.

Rammstex
14.12.2009, 15:19
Такой вопрос. 16 января экзамен по инфе(теория, язык C).
Кто мог бы (согласен даже за умеренную плату) находиться с утра в ICQ, дабы помочь?

>>serhio<<
14.12.2009, 19:34
Помогите разобраться в pascale
Задача:
1)Найти слова начинающиеся и заканчивающиеся на те же буквы.
2)Дана символьная строка которая заканчивается точкой. Найти длину самого длинного и короткого слова.

Linkus
14.12.2009, 20:28
Помогите разобраться в pascale
Задача:
1)Найти слова начинающиеся и заканчивающиеся на те же буквы.


Если всё правильно понял то вот:
program serhio_1;
var S: string; p: integer;
begin
write('Введи строку.. ');
readln(S);

repeat
p:= pos(' ',S);
if p=0 then p:=length(S)+1;
if S[1]= S[p-1] then write(copy(S,1,p-1),' ');
S:= copy(S,p+1,255);

until p=length(S)+1;

readln;
end.

UPD:

2)Дана символьная строка которая заканчивается точкой. Найти длину самого длинного и короткого слова.

program serhio_2;
var S: string; i,p,k,lowlen,maxlen: integer;
begin
write('Введи строку.. ');
readln(S);

k:=0; maxlen:=0;
p:= pos('.',S);
if p=0 then writeln('Строка не заканчивается точкой!')
else begin
S:= copy(S,1,p-1)+' ';

lowlen:= length(S);
for i:=1 to length(S) do
if S[i]= ' ' then begin
if k> maxlen then maxlen:= k;
if k<lowlen then lowlen:= k;
k:=0;
end else inc(k);

Writeln('Длина максимального слова: ',maxlen);
Writeln('Длина минимального слова: ',lowlen);
end;

readln;
end.

Удачи! :)

p0lk1l0
14.12.2009, 20:56
И так начну по-порядку...

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

Сроки оч сжатые, так что надеюсь что кто-нить откликнется не поздно:)

Так же хочу сказать, еслт кто не хочет мне помочь просто так, а может помочь за умеренную плату, стучим в аську или в ЛС, но лучше в аську...

ICQ:443366774


Задача №1:

"Массивы символов (строки); символьные файлы"

Составить программу, выполняющую в диалоге преобразования над текстовыми файлами согласно заданному варианту. Исходный текстовый файл создается с помощью текстового редактора и должен содержать произвольную последовательность различных символов.
В формулировках заданий используются следующие понятия: ЦЕПОЧКА - последовательность символов, каждый из которых отображается на экране; длина цепочки не превосходит 30 символов. СЛОВО - цепочка, ограниченная пробелами или не отображаемыми символами; регулярное слово - слово, состоящее только из больших английских букв;
ПАЛИНДРОМ - это слово, в котором символы при просмотре слева направо и справа налево совпадают. ЧИСЛО - слово, состоящее только из цифр.
Использование массивов допускается только для хранения отдельных элементов файла; для размещения всего файла массивы использовать нельзя.

Условие задачи:

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



Задача №2:

"Определение принадлежности точек заданной области"
В каждом варианте задается совокупность точек массивом констант, например,
type s=array[1 ..8] of real;
constx:s=(1.0, -1.1, -2.9, 6.1, 4.6, 7.1,-4.1, -2.0);
y:s=(-0.5, 1.1, 3.1, 4.1, 2.1, 4.3, -0.9, -2.1); Необходимо сформулировать условия принадлежности точек области, приведенной в приложении для каждого варианта. Составить логическую функцию, которая возвращает истину, если текущая точка принадлежит данной области, и ложь в противном случае.

Изображение:

http://plasmon.rghost.ru/706254.thumb

З.Ы. Кодер найден:)

Хитрый Ск0рпи0N
15.12.2009, 21:20
Помогите плз с лабой на С

http://i011.radikal.ru/0912/b6/a639e63d6533.jpg
http://s58.radikal.ru/i162/0912/02/d2cd0d714073.jpg

MRAK9
16.12.2009, 01:24
помогите пожалуйста.....
может у кого-нить есть полный двоичный сумматор на delphi?
срочно надо.....

xaker-boss
16.12.2009, 13:44
Люди, нужна ваша помощь, нужно написать программу на delphi "Расписание студента" что бы она подключалась к БД (созданную в Office) и от туда брала само расписание.
Очень нужно, работу необходимо сдать завтра

Andres
16.12.2009, 15:55
Pascal

Тема: Арифметика вещественных чисел. Вычисление по формулам
1.Дано х, y, z. Вычислить а, b, если
http://i027.radikal.ru/0912/8e/2302c59668f2.gif
кроме умножения, добавления и вычетания, вычислить
http://i015.radikal.ru/0912/f2/4e18c209b278.gif

Тема: Самые простые циклы
2.Дано вещественное число а, натуральное число л. Вычислить;
а (а - n)(а - 2n). ..(а - n2).

Тема: Самые простые циклы
3. Вычислить бесконечную сумму с заданной точностью e (е > 0). Считать, что необходимая точность достигнута, если вычисленная сумма нескольких первых слагаемых и дежурное слагаемое оказался по модули меньше, чем е, - эти и все следующие слагаемые можно уже не учитывать. вычислить:
http://s46.radikal.ru/i112/0912/4c/2b3c621abee4.gif

SaiRus
16.12.2009, 16:15
ищутся исходники, шифрование, методы:
-Монофоническая замена
-Шифрование методом перестановки

Кому надо, имеется метод вижнера, RSA, частотная дешифровка

0ldbi4
16.12.2009, 16:35
2SaiRus кинь RSA в ПМ с меня +

desTiny
16.12.2009, 16:55
у меня времени нет, а человек очень просит:
на жаве написать 2 штуки:

1) написать вычисление n-го числа последовательности Фибоначчи так, чтобы имеющиеся k процессоров системы были равномерно нагружены

2) необходимо построить длинную арифметику и с ее помощью найти число е с точностью до 200 знака полсе запятой.

+++

Andres
16.12.2009, 18:14
Надо самому делать..

sebay
16.12.2009, 18:42
Помогите построить график используя MFC.функция или синус или косинус, нужен параллельный перенос, сжатие и растяжение.
ПОжалуйста.
Все ещё актуально.Помогите плиз.

Хитрый Ск0рпи0N
16.12.2009, 19:13
Помогите плз с лабой на С

http://i011.radikal.ru/0912/b6/a639e63d6533.jpg
http://s58.radikal.ru/i162/0912/02/d2cd0d714073.jpg

актуально. помогите :(

xaker-boss
16.12.2009, 19:23
Люди, нужна ваша помощь, нужно написать программу на delphi "Расписание студента" что бы она подключалась к БД (созданную в Office) и от туда брала само расписание.
Очень нужно, работу необходимо сдать завтра
Ну может поможет кто? плиззззз

StealthMaster
16.12.2009, 20:30
помогите пожалуйста.....
может у кого-нить есть полный двоичный сумматор на delphi?
срочно надо.....


function CheckNumber(Number: string): boolean;
var
i: integer;
begin
Result := false;
for i := 1 to length(Number) do
case Number[i] of
'0','1':;
else
exit;
end;
Result := true;
end;


function BinaryAdd(N1, N2: string): string;
var
tmp1, tmp2: byte;
i: integer;
flag: boolean;
begin
// зададим начальные параметры
Result := '';
flag := false;

// если в строках не только 0 и 1
if (not(CheckNumber(N1))) or (not(CheckNumber(N2))) then
exit;

// сделаем обе строки одинаковой длины, дополнив одну из них нулями
tmp1 := length(N1);
tmp2 := length(N2);

if (tmp1 > tmp2) then
for i := 1 to (tmp1 - tmp2) do
N2 := '0' + N2;

if (tmp1 < tmp2) then
for i := 1 to (tmp2 - tmp1) do
N1 := '0' + N1;

// будем посимвольно обрабатывать строки
for i := length(N1) downto 1 do
begin
tmp1 := StrToInt(N1[i]) + StrToInt(N2[i]);;
if flag then
inc(tmp1);

tmp2 := tmp1 mod 2;
Result := IntToStr(tmp2) + Result;

tmp2 := tmp1 div 2;
if (tmp2 = 0) then
flag := false
else
flag := true;
end;

// если осталась неперенесенная единица
if flag then
Result := '1' + Result;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
tmp: string;
begin
tmp := BinaryAdd(edit1.Text, edit2.Text);
ShowMessage(tmp);
end;

jecka3000
16.12.2009, 21:39
пацаны, выручайте. Нужно написать программу на низкоуровневом языке. (В данном случае язык не важен, он описан В ЗАДАЧЕ!)
Рассматривается структура компьютера с жесткой логикой.
Пусть Х - содержимое ячейки 025 ОЗУ в странице 2; А - содержимое ячейки 101 ПЗУ в странице 10. Записать программу в машинных командах, реализующую алгоритм Y = X+A, где Y - содержимое ячейки 026 ОЗУ в странице 3. Коды операций необходимых команд произвольные 6-разрядные.

rid3r~man
17.12.2009, 18:53
Добрые люди, помогите пожалст решить две задачки...
Сделайте плз кто умеет.
На паскале.

1)
Используя рекуррентную формулу вычислить сумму ряда

http://s11.radikal.ru/i183/0912/e5/0ff98551695d.jpg (http://www.radikal.ru)

с точностью
1) e=0,01
2) е=0,001
Определить количество элементов ряда, включенных в сумму.


2)

Составить программы с помощью которых:
- сформировать текстовый файл из строк,
которые должны быть введены с клавиатуры;

- вывести на экран строки с наибольшим количеством слов

50 wmr дам за задачу...
Больше финансы не позволяют :(

mr_walker
17.12.2009, 20:17
Написать примитивный TFTP Server or Client базовыми средствами делфи,
добавить возможность вывода сообщения об ошибке направленной на введенный адрес сервера...
Помогите оч. надо в ближайшие строки... с меня кресты...

Andres
17.12.2009, 20:51
с меня кресты...
Кому они нужны сейчас, скажи?

mr_walker
17.12.2009, 22:24
а я ебу... у меня больше нет нихера.... разве что нафотошопить че могу...

mr_walker
17.12.2009, 22:25
о вот на ВМУ кошельке 1грн 72коп. ))))))))))))

043nKRuT0y
18.12.2009, 19:15
Помогите доделать задание на Java.... вот само задание :
Создать класс Data для работы с датами в формате "день.месяц.год". Дата представляется структурой с 3-мя полями типа INT для дня , месяца и года. Класс должен включать функции инициализации : числами , датой , строкой вида (12.07.2005). Нужны методы вычисления даты через заданное количество дней, вычитание заданного количества дней из даты, определение высокосности года , сравнение дат(равно , до , после), вычисление количества дней между датами.

Вот то что я сделал :
/**
* Created by IntelliJ IDEA.
* User: User
* Date: 19.10.2009
* Time: 12:05:23
* To change this template use File | Settings | File Templates.
*/

import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
import static java.lang.Math.floor;

public class MyDate {
Calendar cal = Calendar.getInstance();
int y;
int m;
int d;

/*
*/
public MyDate() {
// cal.setTime(new Date());
// System.out.println(new Date());
y = cal.get(Calendar.YEAR);
m = cal.get(Calendar.MONTH)+1;
d = cal.get(Calendar.DAY_OF_MONTH);
}

/*
*/
public void out_date(int y, int m, int d) {
System.out.println("Year : " + y);
System.out.println("Month : " + m);
System.out.println("Day : " + d);
}

/*
*/
public int get_hight_year_is(int y) {
return (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) ? 1 : 0;
}
/*
*/
public void set_my_date() {
int year = 2008;
int month = 11;
int day = 21;
System.out.println("Input Year");
System.out.println("Input Month");
System.out.println("Input Day");
MyDate data = new MyDate();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, day);
data.y = cal.get(Calendar.YEAR);
data.m = cal.get(Calendar.MONTH);
data.d = cal.get(Calendar.DAY_OF_MONTH);
System.out.println("Your setting date is :");
data.out_date(data.y, data.m, data.d);
}

/*
*/
public static void main(String[] args) {
MyDate data = new MyDate();
int y = data.y;
int m = data.m;
int d = data.d;
int nod;
data.out_date(y, m, d);
data.set_my_date();
if (data.get_hight_year_is(y) == 1) {
System.out.println("The Year Is Leap");
} else {
System.out.println("The Year Is Normal");
}
}
}

wwalex101
18.12.2009, 19:50
уважаемы программеры прошу вашей помощи помоги разделить двоичные числа на С++ ! зарание спасибо

DiSi
19.12.2009, 01:30
фортран 77 или 90

Program s3
print*,'vedite kytovuy skorost'
read*,w
t=1200
n=(w*t)/(2*3.14)
if n<10000 then
print 10,n
10 Format(a0,f6,0)
else if n>=10000 then
print 11,n
11 Format(a0,f5,1)
end if
end

вот код ошибка в строках
if n<10000 then
else if n>=10000 then

че ему по синтаксу не нравиться?((
и если не сложно обясниет на счет оператотора формат а то не оч его понял


пс я делфи кодер( ненавижу фортран(((

n4e/\@
19.12.2009, 02:25
Фортран не знаю, но может быть условия надо заключать в скобки?

SaiRus
19.12.2009, 17:31
привет, кто знаком с алгоритмом шифровки Эль-Гамаля, заинтересовал вопрос у каждого символа должен быть свой код? шифруем символ кодом, шифруем этот код алгоритмом Эль-Гамаля и получаем на выходе (R,E), передаем клиенту, а потом расшифровываем (R,E) на выходе получаем код символа?...

serg12
19.12.2009, 19:33
В двумерном целочисленном массиве размером 5*5 определить средне арифметическое значение каждой строки сформировать из них одномерный массив , записать его в файл.txt а затем считать его и вывести в окно результатов.
Что неправильно?


Program lab10;
uses crt;
type mas=array[1..5,1..5] of integer;
var f:text;
a:mas; sred:real;
s:string;
i,j,:integer;
b,c:array[1..5] of real;
Procedure 1 (var a:mas);
Var i,j:integer;
Begin
randomize;
for i:=1 to 5 do
for j:=1 to 5 do
a[i,j]:=random(27);
for i:=1 to 5 do
begin
for j:=1 to 5 do
write (a[i,j]:5);
writeln;
end;
begin
clrscr;
assign (f,'C:\stud\120891\lab10.txt');
1(a);
For i:=1 to 5 do
begin
sred:=a[i,j];
for j:1 to 5 do
begin
sum:=0; sum:=sum+a[i,1];
sred:=sum/5;
b:=sred;
end;
end;
rewrite(f);
for i:=1 to 5 do
write (f, b:5);
close(f);
reset(f);
for i:=1 to 5 do
read (f,c);
close(f);
for i:=1 to 5 do
write(c);
repeat until keypressed;
end;
end.

«Adult Holding»
19.12.2009, 19:48
Господа, напишите код на Visual С++:
Вывождение графика ф-ций: y=3x-cos(x) - 1

Буду дико благодарен! ;)

Nelson17
20.12.2009, 14:53
2 ss88, никто ничего не путал и нужно С++.)

Nelson17
20.12.2009, 14:58
Нужна игра змейка в С++.
Кто сможет=_)

PerezZz
20.12.2009, 17:14
Паскаль
20, Написать программу которая из суммы пар элементов заданного массива формирует новый массив. Например если задан массив а1,а2,...ан. то элементы нового массива будут вычисляться следующим образом в1=а1+а2; в2=а3+а4 и т.д.

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

Написать программу, которая меняет местами максимальный и минимальный элементы массива

Написать программу которая из заданного масиива формирует 2 массива, один с элементами с чётными номерами, другой с нечётными

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

ss88
20.12.2009, 18:26
Дана целочисленная матрица размера m на n. Размер матрицы задается динамически во время выполнения программы. Для хранения элементов матрицы использовать динамическое выделение памяти. Матрица заполняется случайными числами в диапазоне от -50 до 50. Используя алгоритм пузырьковой сортировки отсортировать элементы каждой четной строки по возрастанию, а нечетную - по убыванию. Заполнение матрицы случайными числами, сортировку элементов строк матрицы и вывод матрицы на экран организовать в виде функции.
Задание вроде не сильное с первого взгляда, но написать не могу. Помогите по-возможности. С++
2 ss88, никто ничего не путал и нужно С++.)
Хм... где же в условии хоть одно слово о классах, методах и т.д? :)

Nelson17
20.12.2009, 19:41
Ну-у-у... Слова не было, но лабораторная то с темой "С++"
И игрушку "змейку" тоже в с++ нужно.=_)

brainy
20.12.2009, 19:55
Если кто может помочь разобраться с программой на ассемблере, буду премного благодарен. Язык к сожалению знаю хуже некуда. В общем программа обрабатывает заданный в командной строке файл таким образом, что все прописные латинские буквы преобразуются в заглавные. Ниже собствено код, кто может плиз откомментируйте построчно ну или насколько хватит терпения. Заранее благодарен.
CODE SEGMENT
ASSUME CS:CODE, DS:CODE
ORG 100H
BEGIN:
JMP BEG
TEXT1 DB 'Нет параметров.',13,10,'$'
TEXT2 DB 'Файл не найден.',13,10,'$'
PATH DB 80 DUP(O) ;путь к файлу
BUF DB 160 DUP(?) /буфер для чтения файла
BEG:
;блок анализа командной строки
XOR SI,SI
XOR DI,DI
MOV DL,1
LOO:
CMP BYTE PTR [81H+SI],ODH
JZ NO_PAR
MOV AL,[81H+SI]
CMP AL,' '
JZ SPACE
XOR DL,DL
MOV [PATH+DI],AL
INC DI
JMP SHORT L001
SPACE:
OR DL,DL ;если DL=0 тогда первый параметр закончился
JZ NO_PAR
L001:
INC SI
JMP SHORT LOO
NO_PAR:
OR SI,SI ;был ли параметр
JNZ CONT
/сообщение, затем выходим
MOV DX,OFFSET TEXT1
MOV AH,9
INT 21H
JMP EXIT
/теперь открытие и преобразование файла
CONT:
/открыть файл
LEA DX,PATH
MOV AX,3D02H
INT 21H
JNC NORM
MOV DX,OFFSET TEXT2
MOV AH,9
INT 21H
JMP EXIT
NORM :
MOV BX,AX
XOR DI,DI ;в DI будет хранится начало считываемого участка
POVT:
;читать участок файла в буфер
LEA DX,BUF
MOV АН,3FH
MOV CX,160 /размер буфера
INT 21H
MOV AH,AL
LEA SI,BUF
CMP AL,0
;просматриваем буфер и преобразуем латинский шрифт
L02 :
JZ ZER
CMP BYTE PTR [SI],97
JB L01
CMP BYTE PTR [SI],122
JA L01
SUB BYTE PTR [SI],32
L01:
INC SI
DEC AL
JMP SHORT L02
ZER:
PUSH AX
;перемещаем указатель файла назад
MOV AX,4200H
XOR CX,CX
MOV DX,DI /указатель начала считанного участка
INT 21H
; пишем буфер на диск
;количество записанных байт может, вообще говоря,
;быть больше 160
MOV АН,40Н
POP СХ
PUSH СХ
MOV CL,CH
XOR CH,CH
LEA DX,BUF
INT 21H ' .
;проверяем, не достигнут ли конец файла
POP AX
MOV AL,AH
XOR АН,АН
ADD DI,АХ
CMP AL,160 ;сравниваем с размером буфера
JZ POVT
;закрыть файл
MOV АН,ЗЕН
INT 21H
EXIT:
RET
CODE ENDS
END BEGIN

SSB1981
21.12.2009, 03:04
Здравствуйте!
Я пытаюсь разобраться с динамическими массивами.
Как я понял существуют два способа
1)


int *asd=new int[3];

//как я понимаю, здесь я создаю новый массив asd с тремя элементами.


2)



int *asd=(int*)malloc(sizeof(int)*3);

//как я понимаю, здесь я также создаю массив с тремя элементами.


Если я и в первом и во втором случае допишу:



asd[n]=111;
//где n любое целое число

всё прекрасно работает!!! :eek:
Внимание вопрос: почему??? :confused:

visual studio C++

slesh
21.12.2009, 10:26
Не факт что будет работать. Просто та память под которую выделил всё будет доступна для массива, а что за её пределами, может вообще не существовать или быть отданной под другие нужны. К примеру для локальный переменных.
И тогда ты просто будешь затирать их.
Вот пример:

int mas[3];
int z;

z = 0;
mas[3] = 1122334;
printf("%i", z);


зависит от компилятора, но с большой вероятностью выведется не 0, а 1122334

SSB1981
21.12.2009, 10:31
Всё понял!
Большое спасибо!

a1ertso
21.12.2009, 10:42
Помогите пожалуйста с решением(на Делфи).

1.1)Найти произведение элементов массива A = {1, 3.5, 4, -0.8, 1.9, 5, 13}, удовлетворяющих условию http://s12.radikal.ru/i185/0912/5f/ac350cf679dd.bmp , если С = 2, D = 10. Сформировать из этих элементов массив Z.

1.2) В массиве Р(m,n) все элементы разделить на максимальный элемент k-го столбца:
http://content.foto.mail.ru/mail/antoxa_shelest/_answers/i-1.jpg

lisa99
21.12.2009, 11:10
Помогите пожалуйста с решением(на Делфи).

1.1)Найти произведение элементов массива A = {1, 3.5, 4, -0.8, 1.9, 5, 13}, удовлетворяющих условию , если С = 2, D = 10.

уточни.
какому условию

a1ertso
21.12.2009, 11:15
Сори, просто не заметил. Условия вписал.

krypt3r
21.12.2009, 12:12
1.1)

program laba35;

const
a : array [0..6] of real = (1, 3.5, 4, -0.8, 1.9, 5, 13);
c = 2;
d = 10;

var
i : integer;
p : real;

begin
p := 1;
for i := 0 to 6 do
if ((a[i] >= c) and (a[i] < d)) then
p := p * a[i];
writeln ('p = ', p : 0 : 2);
end.

1.2)

program laba36;

type
SomeArray = array [0..1, 0..2] of real;

const
p : SomeArray = ((-1.5, 9.1, 3.5), (2.7, 3.14, 1.5));
k = 0;

function getmax (p : SomeArray; k : integer) : real;
var
i : integer;
max : real;
begin
max := p[0][k];
for i := 1 to 1 do
if max < p[i][k] then
max := p[i][k];
getmax := max;
end;

var
i, j : integer;
max : real;

begin
max := getmax (p, k);
for i := 0 to 1 do
for j := 0 to 2 do
p[i][j] := p[i][j] / max;
for i := 0 to 1 do
for j := 0 to 2 do
writeln (p[i][j] : 0 : 2);
end.

Semus
22.12.2009, 00:02
Здравствуйте, помогите мне пожалуйста.
Необходимо на С реализовать следующую программу: из введенной пользователем строки выбрать самое длинное и самое короткое слово.

У меня есть свои попытки решения данной задачи, вот один из примеров:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char stroka[300];
gets (stroka);

int dlin_min=strlen(stroka); // хранит длинну минимальной строки, пока равна длинне всей строки
int dlin_max=0; //хранит максимальную длинну строки
int dlin_tek=0; //хранит текущую длинну строки

char stroka_min[300]; //строка хранящая минимальное слово
char stroka_max[300];// строка хранящая максимальное слово
char stroka_tek[300]; // строка хранящая текущее слово

for (int i=0; i<strlen(stroka); i++)
{
printf ("i= %d\n", i);
switch (int(stroka [i]))
{
case 32 :{
if (dlin_tek>dlin_max) {
for (int j=0; j<dlin_tek; j++)
{
printf ("j= %d\n", j);
stroka_max[j]=stroka_tek[j];
};
dlin_max=dlin_tek;
};
if (dlin_tek<dlin_min) {
for (int j=0; j<dlin_tek; j++)
{
printf ("j2= %d\n", j);
stroka_min[j]=stroka_tek[j];
};
dlin_min= dlin_tek;
};
dlin_tek=0;
break;
}

default:
{
stroka_tek[i]=stroka[i];
dlin_tek=strlen(stroka_tek);
};
};
};

printf ("minslovo= %s\n", stroka_min);
printf ("maxslovo= %s\n", stroka_max);
return EXIT_SUCCESS;
}


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

043nKRuT0y
22.12.2009, 11:19
Помогите дописать на JAVA два метода :
1 - сравнение дат (равно , до , после)
2 - вычисление количества дней между датами

St0nX
22.12.2009, 12:42
Здравствуйте, помогите мне пожалуйста.
Необходимо на С реализовать следующую программу: из введенной пользователем строки выбрать самое длинное и самое короткое слово.
Но после нескольких неудачных попыток я понял, я что со стороками у меня все глухо.Заведомо благодарю всех откликнувшихся

#include<string.h>
#include <stdio.h>

void main(void)
{
char *string = "a asd sss dasq";
char *s;
char *min;
char *max;
int i,j,h;
s = strtok(string," ");
i = strlen(s);
h = i;
while (s !=NULL)
{
s = strtok(NULL," ");
if(s!=NULL)
{
j=strlen(s);
if (i<j)
{
i=j;
max = s;
}
if (h>j)
{
h=j;
min = s;
}
}
}
printf("Min %s len - %d",min,h);
printf("Max %s len - %d",max,i);
}
Как то так. Не проверял но смысл как это делать вроде понятен.

Trotter
22.12.2009, 13:32
Всем привет, понимаю точ то не сюда пишу но всёже, мне надо написать сетевой органайзер на Visual Studio C++ помощи не прошу с формами с кнопочками и т.д но вот беда я нечего не знаю по поводу как так кодить, раньше баловался на делфи тама всё просто было, попробовал тоже самое провести на этой среде нечего конечно же не получилось, помогите советом

Semus
22.12.2009, 21:17
Здравствуйте, помогите разобраться, почему не компилируется следующая программа (вернее компилируется, но во время исполнения вылетает ошибка)


//определяем число вхождений подстроки в введенную пользователем строку

# include <stdio.h>
# include <stdlib.h>
# include <string.h>

int main ()
{
//вводим строку в которой осуществляем поиск
char * stroka;
printf ("Vvedite stroku:");
gets (stroka);
printf ("%s\n", stroka);

// вводим строку которую будем искать
char * iskom;
printf ("Vvedite iskomuy stoku: ");
scanf ("%s", &iskom);

//указатель на на номер на найденный номер
char * point = 0;

//следующая переменная - счетчик
int i = 0;

for (;;)
{
point = strstr(stroka, iskom);
stroka=point+1;
if (point==NULL) {break;}
i++;
};

printf ("kolichestvo vhogdenii = %d", i);

return 0;
}



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

Trotter
23.12.2009, 01:28
я конечно не совсем силён и могу ошибаться, но тебе надо выделять память...
типо вместо char * stroka писать char * stroka new char[256];
и чтобы вот такова бреда не было printf ("kolichestvo vhogdenii)
подрубай locale.h и в main(){setlocale(LC_ALL, "RUSSIAN"); код... printf("Привет")}
а по поводу выделения памяти я не знаю как на си сделать malloc юзай хотя у меня так заработало как первый раз писал тока вот цикл странный зацикленный какой то)) с циклом извиняй помочь не могу, и чтобы строку к строке прировнять надо по моемому перегрузку оператора сделать... хотя я дилетант тоже не ругайте меня ))

modsonic
23.12.2009, 13:52
Пожалуйста, подскажите как описать класс «Экзаменационная ведомость», частью которого является класс «Студент», хранящий информацию о студенте и его оценке на экзамене. Предусмотреть возможность задания произвольного количества студентов, сортировки студентов по фамилии, вычисления среднего балла за экзамен, а также вывода на экран количества различных оценок. Вот код, который я смог написать, но это еще далеко от идеала:


#include <string.h>
#include <iostream>
#include <stdlib.h>
#include <vcl.h>
#pragma hdrstop
#include <cstdlib>
#include <conio.h>
#pragma argsused
using namespace std;

class ekzam{
public:
class stud{
string name;
string famil;
string otches;
int otsenka;
} temp;
int col;
int srb;
int *values;
int count;
ekzam(int col){
count=col;
values=new int[count];
}
~ekzam(){
delete[]values;
}
void Get(int i){
for(i=0;i<col;i++){
cin>>stud[i].name;
}
}
};

main()
{
int n,i;
cin>>n;
ekzam students(n);
system("PAUSE");
return EXIT_SUCCESS;
}

cupper
23.12.2009, 19:56
шот какоето безумие внутри класса создавать еще клас, тут логически правильней было бы, создать класс студен со следующими полями:
ФИО
ГРУППА
Хеш таблица /* Ключ: название экзамена, значение: оценка*/
/* не зубудь что вместо оценки может быть неявка, ее можно обозначить например как -1, а 0 - это оценки еще нет */
...

А потом создать класс ведомость:
Вектор <Студент>
...
ну и добавить в этот клас всякие приблуды:
добавление студента в ведомость,
проверка чтобы каждый студент присутствовал только один раз в одной ведомости
сортировка вектора по ФИО
Выставление оценки студенту в ведомости

так будет гораздо правильней

Ra$cal
23.12.2009, 20:52
не правильно. оценка хранится не в студенте. и группа в студенте - полнейший бред. в жизни разве так?

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

http://img22.imageshack.us/img22/9170/20091223200106002.png

вот такая диаграммка как вариант.

[EDIT]
Exam поправил на Subject (дисциплина)

cupper
23.12.2009, 21:18
а что хранит класс экзамен ?
Разделение ведомости на ведомость и стока ведомости по абстракции конечно правильней но кому нужна такая детализация ?
Притом исходя из условия то челу нужно всего два класса. Как ты сказал конечно правильней, я просто адаптировал под условия

Ra$cal
23.12.2009, 21:24
предмет, по которому принимался экзамен, т.е. в данном случае просто название.
а на счет детализации - это не детализация. вот у тебя класс ведомости. как ты будешь хранить список студентов с оценками? std::map? надеюсь не надо объяснять, что даже в такой задаче такое решение совсем уж глупое. ты создашь класс, который будет храниться в контейнере, в том же векторе. т.е. придешь все к той же строке ведомости =) подскажу, что разделение журнала на строки - это просто бородатая классика проектирования, и ниче лучше пока не придумано.

cupper
23.12.2009, 21:30
предмет, по которому принимался экзамен, т.е. в данном случае просто название.
std::map? надеюсь не надо объяснять, что даже в такой задаче такое решение совсем уж глупое.
ты видно мало глупостей видел )))
моя логика - студенческая, и я этим не горжусь (

Ra$cal
23.12.2009, 21:34
не, я достаточно видел, поэтому и рекомендую сразу пытаца минимизировать их число, ибо привычка дело злое =)

Semus
23.12.2009, 21:51
я конечно не совсем силён и могу ошибаться, но тебе надо выделять память...
типо вместо char * stroka писать char * stroka new char[256];
и чтобы вот такова бреда не было printf ("kolichestvo vhogdenii)
подрубай locale.h и в main(){setlocale(LC_ALL, "RUSSIAN"); код... printf("Привет")}
а по поводу выделения памяти я не знаю как на си сделать malloc юзай хотя у меня так заработало как первый раз писал тока вот цикл странный зацикленный какой то)) с циклом извиняй помочь не могу, и чтобы строку к строке прировнять надо по моемому перегрузку оператора сделать... хотя я дилетант тоже не ругайте меня ))

Верно подмечено, ты "не совсем силен" . Ты какой-то бред несешь: "память выделять", "перегрузку операторов делать ". И не нужно подрубать "locale.h", и прочее что ты там написал. Все решилось проще и самостоятельно через пол часа после появления поста:


//Задание №1
//определяем число вхождений введеного //пользователем слова в введеную пользователем строку

# include <stdio.h>
# include <stdlib.h>
# include <string.h>

int main ()
{
char stroka[300]; //данный массив предназначен для хранения введеной пользоватлем строки, объем до 300символов
char * pStr = stroka; //этот указатель используется для поиска данных, ему дается адрес первого элемента

//вводим строку из которой осуществляем поиск
printf ("Vvedite stroku: "); //просим пользователя ввести строку
gets (stroka); //пользователь вводит строку

// вводим строку которую будем искать
char iskStroka[300]; //массив предназначенный для хранения искомой строки
char * iskom = iskStroka; //этот указатель используется для поиска и подсчета числа вхождения подстрок в строку

//вводим искомую подстроку
printf ("Vvedite iskomuy slovo: "); //просим пользователя ввести искомое слово
scanf("%s", iskStroka);// ввод искомого слова

char * point = 0;//указатель на на номер на найденый номер

int i = 0; // переменная - счетчик, используем для подсчета кол-ва вхождений подстроки в строку

// следующий цикл обеспечивает подсчет вхождений подстроки в строку
do //далее начинается вечный цикл с постусловие
{
point = strstr(pStr, iskom);//ищем позицию вхождения подстроки в строку
pStr=point+1; //при помощи указателя как-бы обрезаем длинну строки,
//что при следующем цикле осуществился поиск данных
//с позиции найденой строки+1.
//Если не поставить "+1" цикл будет бесконечен, так как постоянно
//будет находиться первое вхождение с которого теперь начинается адрес поискового указателя pStr

if (point==NULL) {break;}; //если на очередном шаге не было найдено вхождения - прерываем цикл
i++;
}
while (true);//цикл вечен, если его не прервать

//закончили подсчет вхождений строки в подстроку

printf ("kolichestvo vhogdenii = %d\n", i);// выводим результат на экран

system ("PAUSE"); //ждем от пользователя нажатия какой-либо клавиши
return 0;
}

elusive.light
24.12.2009, 01:49
3. В киоске продается растворимый кофе, предлагается ассортимент из трех известных кофейных торговых марок (названия на ваш выбор), а также варианты приготовления – полный стакан / половина стакана, от 0 до 2 ложек сахара. Сделайте объявление структуры данных, моделирующей заказ кофе. При этом для кода торговой марки обязательно применить конструкцию enum, а информацию о количестве воды и ложек сахара следует запаковать при помощи битовых полей в один байт. Нужно составить тестовую программу, использующую такую структуру. :confused:

elusive.light
24.12.2009, 02:09
Есть еще прога, но она не из лёгких, и я заранее благодорю любого, кто хоть чем-то поможет ;)

Имеется структура данных DynamicArray для динамического массива целых чисел.
struct DynamicArray
{ /* Память для хранения значений массива */
int* m_ArrayData;
/* Объем выделенной памяти (в ячейках массива) */
int m_ArrayCapacity;
/* Количество ячеек фактически занятых массивом */
int m_ArrayCurrentSize;
};

Динамический массив – это структура данных для хранения элементов в последовательности нефиксированного размера, которая самостоятельно следит за объемом выделенной памяти по мере добавления элементов. Динамический массив выделяет память с небольшим запасом для будущих элементов. Если места в массиве больше нет, а пользователь продолжает добавлять элементы в массив, то структура данных автоматически выделяет вдвое больший блок, чем было выделено ранее. Подобная идея лежит в основе популярного контейнера std::vector в C++. Разработайте следующие вспомогательные функции, а также тестовую программу, использующую функции (сначала идет прототип функции, а потом ее предназначение):
void DynamicArrayInit ( struct DynamicArray* _pArray, int _initialSize );

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

void DynamicArrayDestroy ( struct DynamicArray* _pArray );

Освобождает память, занятую массивом

int DynamicArrayGetCellValue ( const struct DynamicArray* _pArray, int _cellIndex );

Возвращает текущее значение в интересующей ячейке. Индекс не может быть вне интервала [0 : m_ArrayCurrentSize - 1)

void DynamicArraySetCellValue ( struct DynamicArray* _pArray, int _cellIndex, int _newValue );

Устанавливает текущее значение в интересующей ячейке. Индекс не может быть вне интервала [0 : m_ArrayCurrentSize - 1)
void DynamicArrayPushBackValue ( struct DynamicArray* _pArray, int _newValue );

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

void DynamicArrayPopBackValue ( struct DynamicArray* _pArray );

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

int DynamicArrayBack ( const struct DynamicArray* _pArray );

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

void DynamicArrayResize ( struct DynamicArray* _pArray, int _newSize );

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

void DynamicArrayReserve ( struct DynamicArray* _pArray, int _newCapacity );
Выполняет принудительное резервирование памяти для будущих элементов. Если новый размер резерва меньше или равен старому, вызов функции игнорируется. Если новый размер резерва больше старого, необходимо повторное выделение блока аналогично DynamicArrayPushBackValue

tester_on
24.12.2009, 15:09
Помогите решить задачку из лабараторной по C++

Вычислить f=cos(2 в квадрате)x на отрезке [-2; 5] с шагом 0,15. Найти сумму всех f > a*2

Wesley
24.12.2009, 16:38
помогите плиииз! написать программу на паскале:
упорядочить матрицу А[6,6] по элементам третьей строки.

Alexey2
24.12.2009, 19:30
Помогите исправить ошибки..Нужно инвертировать матрицу относительно побочной диагонали... Язык c.


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define RND (rand()%100-50)

int vvod_hand(int strok, int stolb,int massiv[50][50])
{int i; int j;char buffer[100];
{for(i=1; i<=strok; i++)
{for(j=1; j<=stolb; j++)
{printf("massiv[%d][%d]= ",i,j);
fgets(buffer,10,stdin);
massiv[i][j]=atoi(buffer);
}}}
}

int vvod_rand(int strok, int stolb,int massiv[50][50])
{int i; int j;
{for(i=1; i<=strok; i++)
for(j=1; j<=stolb; j++)
massiv[i][j]=rand()%50;
}
}

int vivod(int strok, int stolb,int massiv[50][50])
{int i; int j;
{for(i=1; i<=strok; i++)
{
{for(j=1; j<=stolb; j++)
printf("%d ",massiv[i][j]);
}
printf("\n");}
}
}

main(int argc, char*argv[])
{int a, b, i, x, kol_vo, strok, stolb, j, p;
int massiv[50][50];
char buffer[100];

srand (time (NULL));

if (argc<3)
{puts("programma vvivodit massiv");
puts("vvedite ./labor4 kol_vo strok kol_vo stolbcov sposob vvoda <klava/rand>");
}

strok=atoi(argv[1]);
if (strok<1 || strok>50)
{puts("kol-vo strok >1 no <100");
getchar(); exit(0);}

stolb=atoi(argv[2]);
if (stolb<1 || stolb>50)
{puts("kol-vo stolbcov >1 no <100");
getchar(); exit(0);}

if(strcmp(argv[3], "klava")==0)
vvod_hand(strok,stolb,massiv);

else
vvod_rand(strok,stolb,massiv);

printf("\n");
printf("Massiv: \n");
vivod(strok,stolb,massiv);



//invertirovanie
for(i=1;i<=strok/2;i++)
{
for(j=1;j<=stolb/2;j++)
{
if(j<stolb-i-1)//tolko elementy nad pobochnoy diagonalyu


massiv[i][j] = massiv[strok][stolb-j];//i menyaem


}
}
//vyvodim na ekran
printf("Inverted matrix: \n");
for(i=1;i<=strok;i++)
{
for(j=1;j<=stolb;j++)
{
printf("%i ",massiv[i][j]);
}
printf("\n");
}

getchar();
exit(0);
}

Nelson17
24.12.2009, 19:54
Дана целочисленная матрица размера m на n. Размер матрицы задается динамически во время выполнения программы. Для хранения элементов матрицы использовать динамическое выделение памяти. Матрица заполняется случайными числами в диапазоне от -50 до 50. Используя алгоритм пузырьковой сортировки отсортировать элементы каждой четной строки по возрастанию, а нечетную - по убыванию. Заполнение матрицы случайными числами, сортировку элементов строк матрицы и вывод матрицы на экран организовать в виде функции.
Задание вроде не сильное с первого взгляда, но написать не могу. Помогите по-возможности. С++

Точно в С++! Создать два файла сpp и заголовочный файл. Написать отдельную функцию, которая сортирует.
Пожалуйста помогите, уже просто срок совсем поджал! Заранее благодарен

P.A.U.L
24.12.2009, 22:03
Помогите плз доделать лабу...

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

Здача:
Составить функцию, которая возвращает значение 0, если в последовательности целых чисел а1,а2,...аn отсутствуют три соседних нечетных числа, или номер первого числа встретившейся тройки таких чисел...

Код:

program proverka;
uses crt;
const n=10;
var c,i:integer;

function proverk (var a:array of integer):integer;
var i,j:integer;
begin
for i:=1 to n-2 do
if b[i] mod 2 <> 0 then
if b[i+1] mod 2 <> 0 then
if b[i+2] mod 2 <> 0 then
begin
proverk:=i;
exit;
end;
proverk:=0;
end;
begin
clrscr;
for i:= 1 to n do begin
readln(a[i]);
c:=proverk(a[i]);
write(' ',c);
writeln;
end;
end.

n1ghtstalker
24.12.2009, 23:19
Помогите плз доделать лабу...

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

Здача:
Составить функцию, которая возвращает значение 0, если в последовательности целых чисел а1,а2,...аn отсутствуют три соседних нечетных числа, или номер первого числа встретившейся тройки таких чисел...

Код:

program proverka;
uses crt;
const n=10;
var c,i:integer;

function proverk (var a:array of integer):integer;
var i,j:integer;
begin
for i:=1 to n-2 do
if b[i] mod 2 <> 0 then
if b[i+1] mod 2 <> 0 then
if b[i+2] mod 2 <> 0 then
begin
proverk:=i;
exit;
end;
proverk:=0;
end;
begin
clrscr;
for i:= 1 to n do begin
readln(a[i]);
c:=proverk(a[i]);
write(' ',c);
writeln;
end;
end.

во первых зачем тебе n? если она у тебя константового типа и =10 .
во вторых откуда взялся массив b?
при том надо прописать случай else.
при том в основном варе не объявлен массив , то что он присутсвует в функции это не значит
что он будет в основной программе.

ps мне интересно каким образом ты эту программу компилировал и таких косяков не нашёл?

P.A.U.L
24.12.2009, 23:43
n1ghtstalker, ой сорь, чтот я затупил с кодом, видать не сохранил переделанную, а скинул код совсем сырой...

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

function proverk (a:array[1..n] of integer):integer;
var
i,j:integer;
begin
for i:=1 to n-2 do
if a[i] mod 2 <> 0 then
if a[i+1] mod 2 <> 0 then
if a[i+2] mod 2 <> 0 then
begin
proverk:=i;
exit;
end;
proverk:=0;
end;

n1ghtstalker
24.12.2009, 23:45
n1ghtstalker, ой сорь, чтот я затупил с кодом, видать не сохранил переделанную, а скинул код совсем сырой...

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

function proverk (a:array[1..n] of integer):integer;
var
i,j:integer;
begin
for i:=1 to n-2 do
if a[i] mod 2 <> 0 then
if a[i+1] mod 2 <> 0 then
if a[i+2] mod 2 <> 0 then
begin
proverk:=i;
exit;
end;
proverk:=0;
end;

ты читал мои комментарии? где случай else??
у тебя после всех проверок сначала присваивается значение i , а в конце концов 0 .

+ номер первого числа встретившейся тройки таких чисел... ??? WTF?
скинь всё условие.
при том соседними для к примеру для 4 являются 1,2,3 так и 5,6,7.

Algol
24.12.2009, 23:48
P.A.U.L, просто ради интереса, ты на каком факультете учишся ?

Algol
24.12.2009, 23:51
у тебя после всех проверок сначала присваивается значение i , а в конце концов 0 .
Да не, в функции у него все относительно нормально :)

n1ghtstalker
24.12.2009, 23:57
Да не, в функции у него все относительно нормально :)
ну ты посмотри по шагам, оно и выходит относительно. оно значения i элемента не даст.а вернёт 0. после всех циклов допустим proverk=5;
потом ей же значение 0....
мож это эконом какой нибудь?)

Algol
25.12.2009, 00:00
ну ты посмотри по шагам, оно и выходит относительно. оно значения i элемента не даст.а вернёт 0. после всех циклов допустим proverk=5;
потом ей же значение 0....
мож это эконом какой нибудь?)
В паскале exit это выход из процедуры. Ты видимо путаешь с break в си :)

P.A.U.L
25.12.2009, 00:03
Если поможете буду оч признателен...

Retimiled
25.12.2009, 00:04
да и судя по задаче ...препод хотел увидеть рекурсию... ИМХО!


.... for-ы могут оказаться на трояк!

Algol
25.12.2009, 00:11
да и судя по задаче ...препод хотел увидеть рекурсию... ИМХО!
Зачем там рекурсия? Там итеративно решить можно, я даж недавно тут пример где-то приводил...

Retimiled
25.12.2009, 00:24
int check(int *a,int n) // взорви моск препода
{
for(i=0;i<n-2;i++)
if((a[i] & 1)+(a[i+1] & 1)+(a[i+2] & 1)==3)
return a[i];
return 0;
}

tester_on
25.12.2009, 11:06
Не кто?

Retimiled
25.12.2009, 17:09
Помогите решить задачку из лабараторной по C++

Вычислить f=cos(2 в квадрате)x на отрезке [-2; 5] с шагом 0,15. Найти сумму всех f > a*2

... задачки слишком простые для пользователя АНТИЧАТА! (подумайте об этом)

#include <stdio.h>
#include <math.h>
int main()
{
float i,f,a;
float sum;
printf("\r\nВведите а:");
scanf("%f",&a);
for(i=-2,sum=0;i<5;i+=0.15)
{
f=fcos(i)^2;
if(f>a*2)
sum+=f;
}
printf(\r\nРезультат:%f",sum);
return 0;
}

STIFFmaster
26.12.2009, 15:11
помогите с лабораторной. Нужно осуществить поиск подстроки в строке без использования функций.
я пробовал так:

#include <iostream.h>
void main()
{
char stroka[30];
char podstroka[6];
int ch=0;
cout<<" vvedite stroky: ";
cin.getline(stroka, 30);
cout<<"\n vvedite iskomyjy podstroky: ";
cin.getline(podstroka, 6);
for ( int i=0; i<50; i++)
{
if (podstroka[0]==stroka[i])&&
(podstroka[1]==stroka[i])&&
(podstroka[2]==stroka[i])&&
(podstroka[3]==stroka[i])&&
(podstroka[4]==stroka[i])&&
(podstroka[5]==stroka[i]) ch++;
}
cout<<ch;
}


не получается...

Fata1ex
26.12.2009, 19:10
как ты представляешь логику твоей программы?
ты на каждой итерации сравниваешь поочердено все символы подстроки с одним элементом. что неверно. ты должен сравнивать i-ый элемент строки с первым в подстроке. i+1-ый со вторым и тд.
плюс избегай странных чисел, используй константы

elusive.light
26.12.2009, 21:03
PLS помогите решить задачу реально сам не могу справиться. Мне её в понедельник надо сдать(28.12.09). Заранее очень благодарен :)

В киоске продается растворимый кофе, предлагается ассортимент из трех известных кофейных торговых марок (названия на ваш выбор), а также варианты приготовления – полный стакан / половина стакана, от 0 до 2 ложек сахара. Сделайте объявление структуры данных, моделирующей заказ кофе. При этом для кода торговой марки обязательно применить конструкцию enum, а информацию о количестве воды и ложек сахара следует запаковать при помощи битовых полей в один байт. Нужно составить тестовую программу, использующую такую структуру.

043nKRuT0y
26.12.2009, 22:05
2 STIFFmaster :
попробуй так :
void main()
{
char stroka[30];
char podstroka[6];
int ch=0;
cout<<" vvedite stroky: ";
cin.getline(stroka, 30);
cout<<"\n vvedite iskomyjy podstroky: ";
cin.getline(podstroka, 6);
for ( int i = 0; i < strlen(stroka); i++)
for(int j = 0; j < strlen(podstroka); j++){
if(stroka[i] == podstroka[j]) ch++;
}
cout<<ch;
}

Так должно получиться .... я только точно не помню правильно ли я указал функции определения длинны строки - то ли strlen() то ли len()

Algol
26.12.2009, 22:36
2 STIFFmaster :
попробуй так :
void main()
{
char stroka[30];
char podstroka[6];
int ch=0;
cout<<" vvedite stroky: ";
cin.getline(stroka, 30);
cout<<"\n vvedite iskomyjy podstroky: ";
cin.getline(podstroka, 6);
for ( int i = 0; i < strlen(stroka); i++)
for(int j = 0; j < strlen(podstroka); j++){
if(stroka[i] == podstroka[j]) ch++;
}
cout<<ch;
}
Интересно, а что данная функция считает ? Мозгом чувствую что что-то интересное, но что именно - понять не могу :D

STIFFmaster
27.12.2009, 00:03
В програме должно выводить сколько раз встречается подстрока в строке.

043nKRuT0y
27.12.2009, 00:59
дык - так просто такую проверку добавь:

if(ch == strlen(podstroka)){
kol_podstrok ++;
ch = 0;
}


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

ss88
27.12.2009, 11:35
PLS помогите решить задачу реально сам не могу справиться. Мне её в понедельник надо сдать(28.12.09). Заранее очень благодарен :)

В киоске продается растворимый кофе, предлагается ассортимент из трех известных кофейных торговых марок (названия на ваш выбор), а также варианты приготовления – полный стакан / половина стакана, от 0 до 2 ложек сахара. Сделайте объявление структуры данных, моделирующей заказ кофе. При этом для кода торговой марки обязательно применить конструкцию enum, а информацию о количестве воды и ложек сахара следует запаковать при помощи битовых полей в один байт. Нужно составить тестовую программу, использующую такую структуру.
Какой язык?

Вот тебе на Сях
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

typedef enum {JACOBS, NESCAFE, TCHIBO} trade_mark_t;

const char* sugar_msgs[] = {"без","с одной ложечкой","с двумя ложечками"};

const char* water_msgs[] = {"стаканчик","половина стаканчика"};
const char* trademark_msgs[] = {"JACOBS", "NESCAFE", "TCHIBO"};

/* Структура заказа стаканчика кофе */
typedef struct {

/* Торговая марка */
trade_mark_t tm;

/* битовое поле сахара и воды
* 0x00 - полный стакан без сахара
* 0x01 - полстакана без сахара
* 0x11 - полстакана с одной ложкой сахара
* 0x21 - полстакана с двумя ложками сахара*/
uint8_t sugar_water;

} request_for_coffee_t;

void check_correct(int have, int max);

int main(int argc, char** argv)
{
request_for_coffee_t request;
int sugar, water, tm;

(void) printf("Какой марки кофе вы жаждете?\n");
(void) printf("[0] JACOBS\n[1] NESCAFE\n[2] TCHIBO\n");
(void) scanf("%d",&tm);
check_correct(tm,2);

(void) printf("Сколько сахара?\n");
(void) printf("[0] без сахара\n[1] одна ложечка\n[2] две ложечки\n");
(void) scanf("%d",&sugar);
check_correct(sugar,2);

(void) printf("Дозировка\n");
(void) printf("[0] стаканчик\n[1] половина стаканчика\n");
(void) scanf("%d", &water);
check_correct(water,1);

request.tm = tm;
request.sugar_water = sugar;
request.sugar_water <<= 4;
request.sugar_water |= water;

(void) printf("Вы заказали:\n");
(void) printf("%s ",water_msgs[request.sugar_water & 0x0F]);
(void) printf("%s\n",trademark_msgs[request.tm]);
(void) printf("%s сахара\n",sugar_msgs[request.sugar_water>>4]);
(void) printf("Спасибо, до свиданья!\n");

return 0;
}

void check_correct(int have, int max) {
if(have >= 0 && have <=max)
return;
else {
fprintf(stderr, "Нет таких кнопок на кофейном автомате :)\n");
exit(1);
}
}

Algol
27.12.2009, 13:27
дык - так просто такую проверку добавь:

if(ch == strlen(podstroka)){
kol_podstrok ++;
ch = 0;
}


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

Ra$cal
27.12.2009, 14:23
ss88 - http://en.wikipedia.org/wiki/Bit_field

serg1991
27.12.2009, 15:45
Помогите пожалуйста, скоро зачет, а массивы для меня - темный лес. К четвергу все задачи надо прорешать, помогите хотя бы несколько сделать.
Условия по ссылке
http://narod.ru/disk/16374301000/zachet.doc.html

Retimiled
27.12.2009, 16:55
помогите с лабораторной. Нужно осуществить поиск подстроки в строке без использования функций.
я пробовал так:

#include <iostream.h>
void main()
{
char stroka[30];
char podstroka[6];
int ch=0;
cout<<" vvedite stroky: ";
cin.getline(stroka, 30);
cout<<"\n vvedite iskomyjy podstroky: ";
cin.getline(podstroka, 6);
for ( int i=0; i<50; i++)
{
if (podstroka[0]==stroka[i])&&
(podstroka[1]==stroka[i])&&
(podstroka[2]==stroka[i])&&
(podstroka[3]==stroka[i])&&
(podstroka[4]==stroka[i])&&
(podstroka[5]==stroka[i]) ch++;
}
cout<<ch;
}


не получается...

Мог бы дать ..."самый быстрый поиск" но не обьяснишь преподу ,раз проблемы с простейшим! Есть несколько миров в программировании!

...
int flag;
for(i=0,ch=0;*(stroka+i)!=0;i++)
{
for(int j=0,flag=0;*(podstroka+j)!=0 && flag==0 && *(stroka+i+j)!=0;j++)
if(*(stroka+i+j)!=*(podstroka+j))
flag=1;
if(flag==0)
ch++;
}

Sinex
27.12.2009, 17:26
Помогите пожалуйста с ассемблером.
Шесть задач надо срочно сделать.
+ гарантируется
1)Издающий писк, если слово оканчивается буквой "В"
2)Стирающий экран при нажатии клавиши "END"
3)Издающий писк только при вводе латинских букв.
4)Издающий писк только при вводе букв кириллицы.
5)Стирающий предыдущий символ при нажатии клавиш "wn" (эти две буквы при этом на экран выводиться не должны)
6)Заменяющий все буквы Ы кириллицы на сочетание "йи"

Algol
27.12.2009, 17:27
...
int flag;
for(i=0,ch=0;*(stroka+i)!=0;i++)
{
for(int j=0,flag=0;*(podstroka+j)!=0 && flag==0;j++)
if(*(stroka+i+j)!=*(podstroka+j))
flag=1;
if(flag==0)
ch++;
}


В *(stroka+i+j) будет выход за пределы строки.

Ra$cal
27.12.2009, 18:03
bool strcheck(const char* src, const char* sub){
while ( (*src == *sub) && *sub ){
src++;
sub++;
}
return *sub == 0;
}


int find_substr(const char* text, const char* sub){
const char* cur_text = text;
const char* end_text = text + strlen(text) - strlen(sub);
int position = -1;

while(cur_text++ != end_text){
if(strcheck(cur_text, sub)){
position = cur_text - text;
break;
}
}

return position;
}

int main(){
char text[] = {"123 111 345 321 654"};
char sub[] = {"655"};
int position = find_substr(text, sub);

if(position != -1){
cout << "position: " << position << ", substring = " << sub << endl;
}
else{
cout << "substring not found" << endl;
}
return 0;
}

ps: strcheck можете заменить на вызов strcmp. главное соблюдать порядок параметров - первым идет текст, вторым искомая подстрока.

«Adult Holding»
27.12.2009, 18:29
Господа, напишите код на Visual С++:
Вывождение графика ф-ций: y=3x-cos(x) - 1

:o ОЧЕНЬ СРОЧНО И НУЖНО!!! Буду дико благодарен!

Если можно без послания на *** и гугл) Нужно, что бы компилилось.

Retimiled
27.12.2009, 19:35
2 algol

...
int flag;
for(i=0,ch=0;*(stroka+i)!=0;i++)
{
for(int j=0,flag=0;*(podstroka+j)!=0 && flag==0 && *(stroka+i+j)!=0;j++)
if(*(stroka+i+j)!=*(podstroka+j))
flag=1;
if(flag==0)
ch++;
}


2-nd verson :D придумываю для вас прямо тут не проверяя .... так что проверяйте!
#include <stdio.h>
void st(char *str1,char *str2,int l, int *sum)
{
if(*str1==0)
{
if(*str2==0)
*sum++;
}
else
if(*str2==0)
*sum++;
else
if(*str1==*str2)
st(str1+1,str2+1,l+1,sum);
else
st(str1-l+1,str2-l,0,sum);
}

int main()
{
int sum=0;
char str[]="srvferv ergergt4etr retgbrth4 wfwrefg4ert5 wqede";
char stt[]="er";
st(str,stt,0,&sum);
printf("Совпадений:%d",sum);
}

Ra$cal
27.12.2009, 20:25
человеческая глупость не знает границ.

xanser
28.12.2009, 14:09
1) Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз (в порядке, как они встречаются в тексте)
2) Дан файл f, компоненты которого являются целыми числами. Найти количество квадратов простых чисел среди компонент.
3) Даны символьные файлы f и g. Определить совпадают ли компоненты файла f с компонентами файла g. Если нет то получить номер первой компоненты, в которой исходные файлы отличаются между собой. В случае когда один из файлов имеет n компонент (n>=0) и повторяет начало другого (более длинного файла), ответом должно быть число n+1

Задачи по C++.

cupper
28.12.2009, 14:19
1) Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз (в порядке, как они встречаются в тексте)
2) Дан файл f, компоненты которого являются целыми числами. Найти количество квадратов простых чисел среди компонент.
3) Даны символьные файлы f и g. Определить совпадают ли компоненты файла f с компонентами файла g. Если нет то получить номер первой компоненты, в которой исходные файлы отличаются между собой. В случае когда один из файлов имеет n компонент (n>=0) и повторяет начало другого (более длинного файла), ответом должно быть число n+1

Задачи по C++.
1. Бежим по символьно и каждый символ заносишь в хеш таблицу, потом распечатываешь те у который значение равно 1, (символ в этом случае ключ, а в хеш таблице они будут храниться в томже поряднке в каком в тексте встречаются)
2. эм, ну, если я правильно понял, считываешь число из файла, возводишь в квадрат, смотришь простое ли это число, если да увеличиваешь счетчик на +1
3. ...
PS. я видно не в тему, тут не объяснять, а делать за вас надо ?

xanser
28.12.2009, 15:26
интересно, спасибо, почитаю про хеш таблицы. задачи простые, но с++ не знаю совершенно. на паскале бы решил без проблем

Retimiled
28.12.2009, 18:27
2 xanser
1-я (пишу без лабуды) (бью прямо тут без проверки)

int i,j,fl;
char str[]="jhb sdjcnweofnlm wefoi-pokas lknlqkmwdqw";
for(i=0;*(str+i)!=0;i++)
{
for(j=0,fl=0;*(str+j)!=0 && fl==0;j++)
if(*(str+i)==*(str+j) && i!=j)
fl=0;
if(fl==0)
printf("%c",*(str+i));
}


правильно ли я понял что компонентами называются лексемы разделенные пробелом запятой точкой вопросительным и восклицательным знаками а так же переводом строки?


если ДА , то
2-я (пишу без лабуды) (бью прямо тут без проверки)
P.S. проверка на простое по Кнут-у


int havegotfield(char *sourcestr,char *deststr,int nelement,char *delimiterStr,int mode)
{
int i;
int mcnt;
char tstr[300];
int flrez=0;
int pstr=0;
int prepfl;
*(deststr)=0;
if(strchr(delimiterStr,*(sourcestr))!=0)
prepfl=0;
else
prepfl=1;
for(i=0,mcnt=1,flrez=0,prepfl=0;*(sourcestr+i)!=0; i++)
{
if(strchr(delimiterStr,*(sourcestr+i))!=NULL)
{
if(mode==0)
{
if(prepfl!=0)
{
if(mcnt<=nelement)
mcnt++;
else
break;
}
prepfl=0;
}
else
{
if(mcnt<=nelement)
mcnt++;
else
{
flrez=1;
break;
}
}
}
else
{
if(mcnt==nelement)
{
*(deststr+pstr)=*(sourcestr+i);
pstr++;
flrez=1;
}
prepfl=1;
}
}
*(deststr+pstr)=0;
return flrez;
}

unsigned long numb;

int simpl[10]={2,3,5,7,11,13,17,19,23,29};

long test_simple(unsigned long num)
{
int i;
unsigned long p,j;
long rez;
if(num<100)
{
for(i=0;i<10;i++)
if((numb/simpl[i])*simpl[i]==numb && numb!=simpl[i])
return -2;
for(i=0;i<10;i++)
if((num/simpl[i])*simpl[i]==num && num!=simpl[i])
return -1;
return num;
}
else
{
p=sqrt(num);
for(j=0;j<p-sqrt(p);j++)
{
rez=test_simple(p-j);
if(rez!=-1)
{
if(rez==-2)
return -2;
if((numb/rez)*rez==numb)
{

return -1;
}
}

}
return num;
}
}




int main()
{
char str[1500],buf[10],dstr[100];
int ind=0;
int kolvo=0;
int i,j,k;
unsigned long n;
CFile f;
CFileException e;
char path[300];
printf("\r\nInput file path:");
scanf("%s",path);
if(f.Open(path,CFile::modeRead,&e))
{
while(f.Read(buf,1)==1)
{
switch(*buf)
{
case 0x0d:
*(str+ind)=0;
break;
case 0x0a:
for(i=1;havegotfield(str,dstr,i," .,!?-+",1)!=0;i++)
{
n=strtoul(str,0,10);
n=numb=sqrt(n);
l=test_simple(n);
if(!(l==-1 || l==-2))
printf("\r\n-%s-",dstr); \\ вывод но можно и посчитать типа kolvo++;
\\
}
ind=0;
default:
*(str+ind)=*(buf);
ind++;
}
}
f.Close();
}

}

.devastatiour
29.12.2009, 00:16
курсяк!!!помогите плиз.вот тема:
На базе МП разработать измеритель мощностей двух инфранизкочастотных сигналов, поступающих синхронно от двух АЦП в виде восьмиразрядных прямых кодов со скоростью 100 отсчетов в секунду, объем выборки 1024 отсчета. С выдачей результата в двоичном коде целой и дробной частей во внешний регистр.
впринципе есть готовая прога,нужно либо к ней комменты написать,либо написать заново.контакт 65000000
в ассемблере нужно всё это

Dieselpro
29.12.2009, 19:06
Помогите плз в excel с помощью visual basic for applications сделать задачу.

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

Задача легкая, но я не понимаю как работать с visual basic for applications. Если можно киньте ссылку на файл с решенной задачей.
Спасибо.
Все, забейте, я сам сделал. :D

.Life
29.12.2009, 21:43
Помогите исправить ошибки..Нужно инвертировать матрицу относительно побочной диагонали... Язык c.



#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define RND (rand()%100-50)

int vvod_hand(int strok, int stolb,int massiv[50][50])
{int i; int j;char buffer[100];
{for(i=1; i<=strok; i++)
{for(j=1; j<=stolb; j++)
{printf("massiv[%d][%d]= ",i,j);
fgets(buffer,10,stdin);
massiv[i][j]=atoi(buffer);
}}}
}

int vvod_rand(int strok, int stolb,int massiv[50][50])
{int i; int j;
{for(i=1; i<=strok; i++)
for(j=1; j<=stolb; j++)
massiv[i][j]=rand()%50;
}
}

int vivod(int strok, int stolb,int massiv[50][50])
{int i; int j;
{for(i=1; i<=strok; i++)
{
{for(j=1; j<=stolb; j++)
printf("%d ",massiv[i][j]);
}
printf("\n");}
}
}

main(int argc, char*argv[])
{int a, b, i, x, kol_vo, strok, stolb, j, p;
int massiv[50][50];
char buffer[100];

srand (time (NULL));

if (argc<3)
{puts("programma vvivodit massiv");
puts("vvedite ./labor4 kol_vo strok kol_vo stolbcov sposob vvoda <klava/rand>");
}

strok=atoi(argv[1]);
if (strok<1 || strok>50)
{puts("kol-vo strok >1 no <100");
getchar(); exit(0);}

stolb=atoi(argv[2]);
if (stolb<1 || stolb>50)
{puts("kol-vo stolbcov >1 no <100");
getchar(); exit(0);}

if(strcmp(argv[3], "klava")==0)
vvod_hand(strok,stolb,massiv);

else
vvod_rand(strok,stolb,massiv);

printf("\n");
printf("Massiv: \n");
vivod(strok,stolb,massiv);



//invertirovanie
for(i=1;i<=strok/2;i++)
{
for(j=1;j<=stolb/2;j++)
{
if(j<stolb-i-1)//tolko elementy nad pobochnoy diagonalyu


massiv[i][j] = massiv[strok][stolb-j];//i menyaem


}
}
//vyvodim na ekran
printf("Inverted matrix: \n");
for(i=1;i<=strok;i++)
{
for(j=1;j<=stolb;j++)
{
printf("%i ",massiv[i][j]);
}
printf("\n");
}

getchar();
exit(0);
}

Retimiled
29.12.2009, 22:54
Странный код
int vvod_hand(int strok, int stolb,int massiv[50][50])
массив передается указателем(адресом на массив) .... соответственно не нужно городить а писать как ЕСТЬ

int vvod_hand(int strok, int stolb,int *massiv)

поймите прямую связь между указателем и массивом
внутри функции где я имею право использовать
massiv[i][j] дав входные параметры как указал выше .. обычно тут люди испытывают страх!!!

все это относится ко всем функциям!!!


далее везде не берется во внимание что
ИНДЕКС МАССИВА НАЧИНАЕТСЯ С 0(НУЛЯ)!!!
пример
int A[5]
возможные обращения
A[0] A[1] A[2] A[3] A[4]

обмена как такого НЕТ ВООБЩЕ !!! обмен значениями
2-х переменных осуществляются через 3-ю, исключением являеются целые числа!

вообще дагонали главная & побочная существуют только у квадратных матриц!
... поэтому пусть размер равен n , тогда перестановка...

void invert(int *massiv,int n)
{
int z;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(i+j<n-2)
{
z=massiv[i][j];
massiv[i][j]=massiv[n-j-1][n-i-1];
massiv[n-j-1][n-i-1]=z;
}
}

xanser
30.12.2009, 17:44
"Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные точки заданного множества точек на плоскости."

Что-то нет никаких идей..

Retimiled
30.12.2009, 18:09
каждые три точки .... задают треугольник .... по сути каждая сторона треугольника это ХОРДА! А как известно перпендикуляры к хотя бы к 2-м серединам хорд дают пересечением однозначно центр окружности! Радиус получаешь по 2-м точкам центру окружности и любой из 3-х заданных точек!

.... если
struct crd
{
int x;
int y;
};
crd mnohestvo[N];

то проход по всевозможным тройкам

float l;
for(i=0;i<N-3;i++)
for(j=i+1;j<N-2;j++)
for(k=j+1;k<N;k++)
if(min>(l=raschet(i,j,k)))
min=l;


расчет середины хорды

void find_sered(crd *first,crd *second,crd *sered)
{
sered->x=(first->x+second->x)/2;
sered->y=(first->y+second->y)/2;
}


уравнение прямой проходящей через 2 точки
y = kx + b — уравнение прямой, проходящей через точки A и B, где
k = (yB — yA) / (xB — xA)

уравнение перпендикуляра проходящего к отрезку AB
и проходящему через точку С
y = -(1/k)x + (Yc + (1/k)Xc)

и наконец нахождение центра
который равен решению системы 2-х уравнений

y = -(1/k)x + (Yc + (1/k)Xc) для 1-й и 2-й точек
и такому же для 2-й и 3-й точек.

lokli
30.12.2009, 18:52
А не проще через радиус описанного круга R=abc/(4S), где a,b,с длинна сторон треугольника, а S его площадь. Площадь найти по формуле Герона, а длину сторон как корень из((x2-x1)квадрат + (y2-y1)квадрат) где х2 и y2 координаты конца отрезка, а х1 и y1 координаты начала отрезка. (Сори не знаю как корень и квадрат поставить).

Retimiled
30.12.2009, 18:54
2 lokli маладес .... твое решение проще намного!

Algol
30.12.2009, 23:39
А не проще через радиус описанного круга R=abc/(4S), где a,b,с длинна сторон треугольника, а S его площадь. Площадь найти по формуле Герона, а длину сторон как корень из((x2-x1)квадрат + (y2-y1)квадрат) где х2 и y2 координаты конца отрезка, а х1 и y1 координаты начала отрезка. (Сори не знаю как корень и квадрат поставить).
Да, хорошее решение. Однако стоит заметить, что число всевозможных треугольников на n точках равно примерно n^3. Что может стать проблемой при больших n. Поэтому для решения подобных задач используется триангуляция, с быстродействием O(n log n). Но это выходит конечно за рамки лаб :)

qwert135
31.12.2009, 22:46
Народ,помогите плиз.Надо написать прогу на паскале.Движение математического маятника,угол отклонения задается вручную.Заранее спасибо:)

DimkO
01.01.2010, 16:24
тебе нужна графическая имитация движения?объясни суть задания

qwert135
01.01.2010, 18:16
Да,именно графически.Просто требуется прога при включении которой от пользователя требовалось бы ввести только начальный угол отклонения маятника.После ввода пользователем размера угла на экран бы выводился сам маятник,движущийся бесконечно,точнее до тех пор пока пользователь сам не остановит программу

n1ghtstalker
01.01.2010, 19:58
Да,именно графически.Просто требуется прога при включении которой от пользователя требовалось бы ввести только начальный угол отклонения маятника.После ввода пользователем размера угла на экран бы выводился сам маятник,движущийся бесконечно,точнее до тех пор пока пользователь сам не остановит программу

эм по какой формуле то расчёт движения должен идти?

qwert135
01.01.2010, 23:48
А вот это хз.Дали задание составить программу движения математического маятника.Угол отклонения задавать вручную.И все.

Algol
02.01.2010, 01:09
А вот это хз.Дали задание составить программу движения математического маятника.Угол отклонения задавать вручную.И все.
Маятник движется по синусоиде
x=Asin(p+wt)
где A - амплитуда
p - начальная фаза (угол отклонения)
w=sqrt(g/L)
L -длина подвеса
t - время

n1ghtstalker
02.01.2010, 12:59
Маятник движется по синусоиде
x=Asin(p+wt)
где A - амплитуда
p - начальная фаза (угол отклонения)
w=sqrt(g/L)
L -длина подвеса
t - время

а вообще маятник не может увелить угол отклонения? он постепенно должен потом уменьшаться? до полной остановки?.

Реализовать в приципе через угол просто. если только нарисовать маятник, задаёшь угол. и пошёл туда сюда ходить.

Retimiled
02.01.2010, 14:17
2 n1ghtstalker

..а algol и не писал про увеличивающуюся амплитуду .... Максимальное отклонение и есть амплитуда А, просто в данный момент начальная фаза равна максимальному отклонению!

.Life
02.01.2010, 15:13
привет, кто знаком с алгоритмом шифровки Эль-Гамаля, заинтересовал вопрос у каждого символа должен быть свой код? шифруем символ кодом, шифруем этот код алгоритмом Эль-Гамаля и получаем на выходе (R,E), передаем клиенту, а потом расшифровываем (R,E) на выходе получаем код символа?...

Algol
02.01.2010, 15:26
а вообще маятник не может увелить угол отклонения? он постепенно должен потом уменьшаться? до полной остановки?.
Математический маятник вообще не меняет амплитуду, она не увеличивается и не уменьшается.

Forcer
02.01.2010, 15:36
привет, кто знаком с алгоритмом шифровки Эль-Гамаля, заинтересовал вопрос у каждого символа должен быть свой код?
Нет, не обязательно. Вполне возможна такая схема:
строка(любые символы) -> массив байт -> число -> шифрование
число - это число большой размерности, больше чем int, long, etc. Для работы с такими числами нужно использовать специальные классы для работы с большими числами. Например, в java это будет выглядеть так:

String source = "Hello world!";
BigInteger message = new BigInteger(message.getBytes());
BigInteger в свою очередь умеет умножать, складывать, брать обратное по модулю, возводить в степень. В этом классе реализованы специальные алгоритмы для работы с большими числами. Если мы говорим о с++, то тогда нужно подключать дополнительные библиотеки, например ntl http://www.shoup.net/ntl/
Помни, что шифртекст больше исходного сообщения и при дешифровании нужно это учитывать.

Keltos
02.01.2010, 19:14
Задача, помогите пожалуйста:

В результате выполненных измерений, получен ряд значений из 8 элементов (n=8). Считается, что результат измерения – случайная величина (СВ) `X`, распределенная по нормальному закону. А именно, СВ группируется в окрестности некоторого наивероятнейшего значения и зависит от многих факторов, причем каждый из них мало влияет на СВ, по сравнению с суммой всех остальных.
Каждый результат измерения обозначается - `xi`, где i - номер измерения (элемента) в ряду измерений.
Пусть задан ряд: x1 = 30, x2 = 20, x3 = 40, x4 = 35, x5 = 45, x6 = 25, x7 = 50, x8 = 30.
Для практики представляет интерес не отдельное значение СВ, а некоторый диапазон, в который попадают ее значения (измерения).
Наивероятнейшее значение СВ, вычисляется как среднее арифметическое полученных значений измерений (элементов) и называется математическим ожиданием СВ.
Для нашего ряда получим:
М(Х) = (30+20+40+35+45+25+50+30)/2 =34,375
Обычно рассчитывают вероятность попадания СВ в диапазон М(Х) ±d, где d – некоторая, заданная граница величин значений измерений.
То есть определяют, какой процент значений измерений попадет в диапазон, ±d относительно среднего значения.
Пусть в нашем примере значение границы расчетного диапазона ±d = 7. следовательно необходимо определить вероятность попадания СВ в диапазон 34,375 ± 7.
Для этого сначала нужно определить рассеяние СВ, то есть степень ее распределения относительно среднего значения. Для нормального закона распределения рассеяние СВ характеризует среднее квадратическое отклонение (СКО). Оно обозначается σ и рассчитывается по формуле:

σх = sqrt [ (30-34,375)^2 + (20-34,375)^2 + (40-34,375)^2 + (35-34,375)^2 + (45-34,375)^2 + (25-34,375)^2 + (50-34,375)^2 + (30-34,375)^2 ]

Для нашего примера:
= 9,499
Вычислив значение СКО, пересчитаем границу расчетного диапазона в σх по формуле: а = d ׃ σх получим а = 7 / 9,499 =0,737

Для нормального закона распределения выполняется следующее равенство:
P(|X| < a) = Ф(а).
где: Х – случайная величина;
а – граница диапазона в СКО;
P(|X| < a) – вероятность того, что значение СВ `Х` не выйдет за границы `а`;
Ф(а) – функция Лапласа, дающая значения вероятности. Задается таблицей №1.

По значению а=0,737 из прилагаемой таблицы находим Р= 0,539. Значение Р получаем аппроксимацией табличных значений:
0,73 = 0,535;
0,74 = 0,541.

Нормальный закон распределения [значения функции 2Ф(а)]
тут таблица


дано -
СВ: 95 97 99 94 85 80 83 96 84
Граница расчетного диапазона: 9
вот что написал

#include <iostream.h>
#include <math.h>

int main()
{
// Vvod slychaynih velichin
double a[9];
cout<<"Vvedite znacheniya slychanynoy velichiny"<<endl;
for (int i=0; i<9; i++)
cin>>a[i];
cout<<"Znacheniya slychanynoy velichiny =>"<<endl;
for ( i=0; i<9; i++)
cout<<"a["<<i<<"]="<<a[i]<<endl;
// Srednee arifmeticheskoe
double S;
S=(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8])/9 ;
cout<<"Srednee arifmeticheskoe - "<<S<<endl<<endl;
// Veroyatnost popadaniya
cout<<"Veroyatnost popadaniya Slychayniy velichiny v diapazon - "<<S<<"+-9"<<endl<<endl;
// Srednee kvadraticheskoe otklonenie
double K;
K=sqrt( ( pow((a[0]-S),2)+pow((a[1]-S),2)+pow((a[2]-S),2)+pow((a[3]-S),2)+pow((a[4]-S),2)+pow((a[5]-S),2)+pow((a[6]-S),2)+pow((a[7]-S),2)+pow((a[8]-S),2) ) /9);
cout<<"Srednee kvadraticheskoe otklonenie - "<<K<<endl<<endl;
// Granica raschetnogo diapazona
double A;
A=9/K;
cout<<"Granica raschetnogo diapazona - "<<A<<endl;
// Function Laplasa
double P;

return 0;

}

проблема, как видно, в последнем действии.
как быть с функцией Лапласа, если ее значения находятся в таблице?
википедия на функцию лапласа выдает какие-то стремные дифференциалы :<<<<

Sar@
02.01.2010, 20:28
как быть с функцией Лапласа, если ее значения находятся в таблице?
<

Наверное, хотел написать не находятся? Если аргумент функии Лапласа не из таблицы, тогда значение берут 0.5 ;)

Algol
03.01.2010, 00:47
википедия на функцию лапласа выдает какие-то стремные дифференциалы :<<<
Ппц куда катится образование.....
http://www.webmath.ru/poleznoe/table_laplasa.php

DJeFRY_RASH
03.01.2010, 16:50
Ребята не могли бы вы помочь с прогой, вся прога написана, всё сделано правильно, работает, но заминка в том, что уравнение для расчёта неправильное !

program xyz;

uses
SysUtils,
Windows;

label
EnterN;

var
N, i, z : Integer;
ans : Char;



//------------------------------------------------------------------------------
function Ru(str: String): String; // Функция перевода получаемой строки из ANSI-кодировки в OEM-кодировку DOS.
begin // Начало функции.
Result := ''; // Обнуляем результат.
if Length(str) > 0 then // Если получена непустая строка, то
begin // выполняем код:
SetLength(Result, Length(str)); // Устанавливаем размер для строки результата.
CharToOem(PChar(str), PChar(Result)); // Конвертируем строку в OEM-формат (модуль 'Windows.pas').
end; // Результирующая строка уже в новой кодировке.
end; // Конец функции.



//------------------------------------------------------------------------------
begin
WriteLn(Ru('Программа для вычисления факториала нечётных чисел:')); // Вывод информации на экран о назначении программы.
WriteLn('');
WriteLn(' N!!! = 1 x 3 x 5 ... x N ');
WriteLn('');
WriteLn(Ru('Выполнил ...')); // Вывод информации на экран об авторе программы.
WriteLn('');
Writeln('...');
EnterN: // Возврат в это место при ошибке или при повторном вводе данных.
WriteLn(''); // ...
Write(Ru('Введите нечётное число N, где N > 1 : ')); // ...
ReadLn(N); // Ввод числа Х.
if (N <= 1) or (N mod 2=0) then // Если Х меньше или равен 1, то
begin // выполнить код:
WriteLn(Ru('Произошла ошибка при вводе, попробуйте ещё раз.')); // - вывести сообщение об ошибке;
GoTo EnterN; // - вернуться к началу;
end; // ...
WriteLn(''); // ...
z := 1; // Обнуляем переменную результата.
for i := 1 to N do z := z*(i*2-1); // Увеличиваем переменную результата N раз.
WriteLn(Ru('Полученный результат: '+IntToStr(z))); // Отправить Х на обработку в функцию 'Formula()' и вывести результат.
WriteLn(''); // ...
Write(Ru('Вы хотите продолжить работу с программой? (Y/N) : ')); // Предложить продолжить работу с программой.
ReadLn(ans); // Получить согласие.
if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo EnterN; // Если согласие получено - возврат к началу.
end.


Когда запускаешь прогу, просит ввести N, если вводим 5, то получаем такой факториал 1х3х5х7х9, а нужно чтобы 5 была последней цифрой в этом подсчёте, то есть 1х3х5.
Перепробовал многие варианты, не выходит. кто может разобраться, помогите !

lokli
03.01.2010, 18:42
Перед циклом for i := 1 to N do z := z*(i*2-1); вставь строкуN:=((N div 2)+1); этим ты поставиш количество итераций цикла равным количеству непарных чисел до заданного числа N. Код не проверял но должно работать. :)

n1ghtstalker
03.01.2010, 18:47
Ребята не могли бы вы помочь с прогой, вся прога написана, всё сделано правильно, работает, но заминка в том, что уравнение для расчёта неправильное !

program xyz;

uses
SysUtils,
Windows;

label
EnterN;

var
N, i, z : Integer;
ans : Char;



//------------------------------------------------------------------------------
function Ru(str: String): String; // Функция перевода получаемой строки из ANSI-кодировки в OEM-кодировку DOS.
begin // Начало функции.
Result := ''; // Обнуляем результат.
if Length(str) > 0 then // Если получена непустая строка, то
begin // выполняем код:
SetLength(Result, Length(str)); // Устанавливаем размер для строки результата.
CharToOem(PChar(str), PChar(Result)); // Конвертируем строку в OEM-формат (модуль 'Windows.pas').
end; // Результирующая строка уже в новой кодировке.
end; // Конец функции.



//------------------------------------------------------------------------------
begin
WriteLn(Ru('Программа для вычисления факториала нечётных чисел:')); // Вывод информации на экран о назначении программы.
WriteLn('');
WriteLn(' N!!! = 1 x 3 x 5 ... x N ');
WriteLn('');
WriteLn(Ru('Выполнил ...')); // Вывод информации на экран об авторе программы.
WriteLn('');
Writeln('...');
EnterN: // Возврат в это место при ошибке или при повторном вводе данных.
WriteLn(''); // ...
Write(Ru('Введите нечётное число N, где N > 1 : ')); // ...
ReadLn(N); // Ввод числа Х.
if (N <= 1) or (N mod 2=0) then // Если Х меньше или равен 1, то
begin // выполнить код:
WriteLn(Ru('Произошла ошибка при вводе, попробуйте ещё раз.')); // - вывести сообщение об ошибке;
GoTo EnterN; // - вернуться к началу;
end; // ...
WriteLn(''); // ...
z := 1; // Обнуляем переменную результата.
for i := 1 to N do z := z*(i*2-1); // Увеличиваем переменную результата N раз.
WriteLn(Ru('Полученный результат: '+IntToStr(z))); // Отправить Х на обработку в функцию 'Formula()' и вывести результат.
WriteLn(''); // ...
Write(Ru('Вы хотите продолжить работу с программой? (Y/N) : ')); // Предложить продолжить работу с программой.
ReadLn(ans); // Получить согласие.
if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo EnterN; // Если согласие получено - возврат к началу.
end.


Когда запускаешь прогу, просит ввести N, если вводим 5, то получаем такой факториал 1х3х5х7х9, а нужно чтобы 5 была последней цифрой в этом подсчёте, то есть 1х3х5.
Перепробовал многие варианты, не выходит. кто может разобраться, помогите !


в цикле организуй проверку до вычисления факториала.
те

for i := 1 to N do
begin
if i mod 2 <> 0 then
z := z*i;
end;

ну и формулу чуть подредактировал. а то я не уловил зачем было i*2-1
вот в приципе и всё.

DJeFRY_RASH
03.01.2010, 19:22
Ребята
респект, спасибо большое, помогли !

STIFFmaster
03.01.2010, 20:34
Помогите, пожалуйста. Буду признателен.
Дана целочисельная матрица. Отсортировать строки матрицы относительно первого элемента строки по убыванию.

n1ghtstalker
03.01.2010, 21:57
Помогите, пожалуйста. Буду признателен.
Дана целочисельная матрица. Отсортировать строки матрицы относительно первого элемента строки по убыванию.

не хочу всю программу расписывать...
просто проверяешь соседние элементы в строке если
a[i,j] > a[i,j+1] then
begin
x:=a[i,j+1];
a[i,j+1]:=a[i,j];
a[i,j]:=x;
end;

XimiK69
03.01.2010, 22:10
Помогите, пожалуйста. Буду признателен.
Дана целочисельная матрица. Отсортировать строки матрицы относительно первого элемента строки по убыванию.
#include <iostream>
using namespace std;

int main()
{
int l = 0;
int a[3][3] = {
3,7,3,
4,2,8,
6,8,1
};
for(int i = 0; i < 3; i++)
{

for(int j = 1; j < 3; j++)
{
int t = a[i][j], l = 0;
for(l=j-1; (l >= 0)&&(a[i][l] < t); l--)
{ a[i][l+1]=a[i][l]; }
a[i][l+1] = t;
}
}
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{ cout << a[i][j] <<" "; }
cout << endl;
}
return 0;
}

n1ghtstalker
03.01.2010, 22:13
#include <iostream>
using namespace std;

int main()
{
int l = 0;
int a[3][3] = {
3,7,3,
4,2,8,
6,8,1
};
for(int i = 0; i < 3; i++)
{

for(int j = 1; j < 3; j++)
{
int t = a[i][j], l = 0;
for(l=j-1; (l >= 0)&&(a[i][l] < t); l--)
{ a[i][l+1]=a[i][l]; }
a[i][l+1] = t;
}
}
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{ cout << a[i][j] <<" "; }
cout << endl;
}
return 0;
}

хе хоть в C и не шарю пока особо.
товарищ зачем заранее матрицу и элементы определять?)
меня б в универе за это уже на кол посадили )

XimiK69
03.01.2010, 22:15
просто проверил алгоритм на этом примере, хотя с тобой согласен.....на константах работать нельзя....

DJeFRY_RASH
03.01.2010, 23:41
Ребят, гляньте, что можно сделать ...

program xyz;

uses
SysUtils;

Function Ru ( S : string ) : string ;
VAR
T : string ; { временная строка}
i : integer ; { номер символа в строке }
code : byte ; { код символа }
BEGIN
T := S ; { получает значение параметра }
FOR i := 1 TO Length ( S ) DO { для всех символов строки S}
BEGIN { изменяет кодировку символов кириллицы }
code := Ord ( S[ i ] ) ; { определяет код символа}
CASE code OF { ПРОПИСНЫЕ БУКВЫ }
192 .. 197: T[ i ] :=Chr(code-64) ; { А-Е: 192-197 ->128-133}
168: T[ i ] :=#240; { Ё: 168->240}
198 .. 223: T[ i ] :=Chr(code-64); { Ж-Я : 198-223->128-133} { строчные буквы }
224 .. 229: T[ i ] :=Chr(code-64); { а-е : 224-229->160-165}
184: T[ i ] :=#241; { ё: 184 ->241}
230 .. 239: T[ i ] :=Chr(code-64); { е-п: 230-239->166-175}
240 .. 255: T[ i ] :=Chr(code-16); { р-я: 240-255->224-239}
END ;
END ;
Ru := T ; { возвращает значение временной строки }
END;

VAR
i,j,k,n,temp:integer; // искомые числа
repeat_it:boolean; // зацикливание программы (True/False)
ans:char; // используется для получения согласия для продолжения работы программы
label // идентификатор
p1;

Function IntSqrt(temp:integer):real; // функция для вычисления квадратного корня.
VAR
x:real;
t:real;
begin // начало функции
x:=sqrt(temp); // извлечение квадратного корня из числа.
if (x-round(x))=0 then t:=x // Если от х отнять округленный х будет равно нулю, тогда t=x.
else t:=0; // Либо t=0.
end;


begin
Writeln(Ru('Программа находит все натуральные числа, меньшие чем N, для которых выполняется соотношение a*a + b*b = c*c. [a,b,c < N]'));
Writeln; // ...
Writeln(Ru('Автор программы ...')); // Вывод информации на экран об авторе программы.
Writeln; // ...
Writeln('...'); // Вывод на экран - e-mail автора программы.
Writeln;
p1: // Возврат в это место при ошибке или при повторном вводе данных.
repeat_it:=true; // Зацикливание программы, True-правда.
while repeat_it=true do begin
Write(Ru('Введите число, которое вы хотите проверить: ')); // ...
read(temp);
Writeln('OTBET: ',IntSqrt(temp):6:0); // Отправить temp на обработку в функцию 'Formula()' и вывести результат на экран.
Writeln; // ...
Write(Ru('Введите N: ')); // ...
Read(n); // Ввод числа N
for i:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
for j:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
for k:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
if i*i+j*j=k*k then Writeln('a=',i:4,'; b=',j:4,'; c=',k:4); // Если i*i+j*j=k*k, то выводятся на экран все возможные варианты решения этого уравнения.
Writeln; // ...
Write(Ru('Вы хотите продолжить работу с программой ? (Y/N): ')); // Предложить продолжить работу с программой.
Readln;
readln(ans); // Получить согласие.
writeln; // ...
if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo p1; // Если согласие получено - возврат к началу.
break;

end;
end.

Собственно если ввожу N = 6
то выводит ответ
a = 3 b = 4 c = 5
a = 4 b = 3 c = 5
то есть нужно просто добавить что-то (не знаю что) :(
чтобы в случае если "с" совпадает несколько раз, тогда чтобы выводилось 1 раз.

elusive.light
04.01.2010, 01:04
Ребята нужна срочная помощь. Помогите кто, как сможешь. Принимаются любые версии.

Нужно написать программу для вычисления общего бала, зная оценки по лабам, тестам, но с учётом прогулов. Т.е. надо создать массив с оценками за лабы и тесты(размер массива определяется константами), вывести их среднее арифметическое(учитывая, что важность оценок в процентах такова: лабы - 75%, а тесты - 25%). Оценки находятся в структуре. Самое важное, это то что надо из среднего бала вычесть процент прогулов, который приблизительно равен 10%.
Программа не должна быть сильно сложной, где-то на уровне 1-го курса 1-го семестра.

Вот прога, которую я написал, но там нужно оценки за лабы и тесты сменить на массивы, с размером, меняющимся в константах.

#include<stdio.h>
/*Прога для вычисления оценки за лабы и тесты с учётом пропусков*/

struct Marks
{
char f[50], i[50], o[50];
float lab1, lab2, lab3, lab4;
float test1, test2;
float num_prop;
};

void main()
{
Marks stud;

scanf("%s %s %s", stud.f, stud.i, stud.o);

printf("Vvedite ocenki za labi\n");
scanf("%f %f %f %f", &(stud.lab1), &(stud.lab2), &(stud.lab3), &(stud.lab4));

printf("Vvedite ocenki za testi\n");
scanf("%f %f", &(stud.test1), &(stud.test2));

printf("Vvedite kol-vo propuskov\n");
scanf("%f", &(stud.num_prop));

float res;

res = (((stud.lab1 + stud.lab2 + stud.lab3 + stud.lab4) / 4) * 0.75) + (((stud.test1 + stud.test2) / 2) * 0.25) - (stud.num_prop * 0.1 * 5);

printf("%f", res);

getchar();
getchar();

}


Я начал делать с массивами, но не получается сделать вычисления.

#include<stdio.h>
const int n = 4;
const int m = 2;

struct Marks
{ char sur[50], nam[50], pat[50];
double lab[n], test[m];
double numSpace;
};

void main()
{
Marks stud;
printf("Enter your full name...\n\t");
scanf("%s %s %s", stud.sur, stud.nam, stud.pat);

printf("Enter marks of lab...\n\t");
for( int i = 0; i < n; i++ )
scanf("%lf", &(stud.lab[i]));

printf("Enter marks of test...\n\t");
for( int k = 0; k < m; k++ )
scanf("%lf", &(stud.test[k]));

printf("Enter numbers of space...\n\t");
scanf("%lf", &(stud.numSpace)); }

Можете дополнить мою прогу либо написать свой вариант. Прошу срочно надо на завтра(04.01.2010)

lokli
04.01.2010, 11:34
Держи код. #include<stdio.h>


struct Marks
{ char sur[50], nam[50], pat[50];
double lab[4], test[2];
double numSpace;
};

void main()
{
float res;
int i,n=4,m=2,k;
struct Marks stud;
printf("Enter your full name...\n");
scanf("%s %s %s", stud.sur, stud.nam, stud.pat);

printf("Enter marks of lab...\n");
for(i= 0; i < n; i++ )
scanf("%lf", &(stud.lab[i]));

printf("Enter marks of test...\n");
for(k=0; k < m; k++ )
scanf("%lf", &(stud.test[k]));

printf("Enter numbers of space...\n");
scanf("%lf", &(stud.numSpace));

res = (((stud.lab[0]+stud.lab[1] + stud.lab[2] + stud.lab[3]) / 4) * 0.75) + (((stud.test[0] + stud.test[1]) / 2) * 0.25) - (stud.numSpace * 0.1 * 5);
printf("%f", res);
getchar();
getchar();
}
Работает правда не знаю так ли как ты хотел так что проверь.

Retimiled
05.01.2010, 17:36
2 n1ghtstalker

дык вставь ввод в матрицу

int *a;
int razmern;
printf("\r\nВведите размерность матрицы:");
scanf("%d",&razmern);
a=new int[razmern*razmern];
// ввод поэлементно
for(int i=0;i<razmern;i++)
{
for(int j=0;j<razmern;j++)
{
printf("\r\nВведите элемент a[%d][%d]:",i,j);
scanf("%d",&a[i][j]);
}
}

.... тут чивото делай 8)
....
delete[] a; //удаляй массив

Spider545
05.01.2010, 20:28
Ребят помогите плиззз!!!!!!! :)
надо программку в С++ Builder написать такую: Алгоритм нахождения наибольшего паросочетания в двудольном графе.
За ранее спасибо!)

n1ghtstalker
05.01.2010, 23:27
2 n1ghtstalker

дык вставь ввод в матрицу

ололо ) во первых это надо было не мне
во вторых я давал только комментарий по этому поводу
)) гений ёпт )

Retimiled
05.01.2010, 23:31
2 n1ghtstalker
извини не заметил что ты просто Критик!

GinTonic
06.01.2010, 02:12
Подскажите как написать программу которая сама себя может копировать...

lion-mobile
06.01.2010, 03:26
привет. спасайте, ибо начинается сессия, а лаба не сдана..


задание:



1.
квадратичная форма. Написать программу, которая вычисляет квадратичную форму для матрицы A размером n*n и вектора
http://s51.radikal.ru/i134/1001/26/7413d3b06bad.jpg



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


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

cupper
06.01.2010, 13:44
Подскажите как написать программу которая сама себя может копировать...
попробуй ради эксперимента, открыть на чтение экзешник выполняемой программы в бинарном режими и также записать его в файл :) всегда хотел это попробывать сделать да лень было :)
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string>
using namespace std;

int main(){
srand ( time(NULL) );
int iSecret = rand() % 3 + 1;
string filename;
switch (iSecret){
case 1: filename="1";
break;
case 2: filename="2";
break;
case 3: filename="3";
break;
default: break;
}

ifstream file;
file.open("test", ios::binary);
ofstream fileEXE;
fileEXE.open(filename.c_str(), ios::binary);
char *buff;
file.seekg (0, ios::end);
int size = file.tellg();
file.seekg(0, ios::beg);
buff = new char [size];
file.read(buff, size);
fileEXE.write(buff,size);

file.close();
fileEXE.close();
delete[] buff;
return 0;

}

Spider545
07.01.2010, 14:21
Помогите с графами плллииииизззз, очень надо!!((((

DimkO
07.01.2010, 16:42
подскажите,нужно что бы при нажатии на карте(загруженную в TImage) на какой либо участок(тип страну) происходило действие такое то,вот вообще нету никаких зацепок,киньте хоть какую то идею,и все это на делфи:)

Spider545
07.01.2010, 23:59
HHHHEEEELLLLLLPPPPPPP!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!
помогите плиззз!!!!!!!
надо программку в С++ Builder написать такую: Алгоритм нахождения наибольшего паросочетания в двудольном графе.
:confused:

Linkus
08.01.2010, 03:46
наибольшего паросочетания в двудольном графе.

хорошо, хорошо, ты тока объясни, чё это)) :)

4p3
08.01.2010, 04:44
привет. спасайте, ибо начинается сессия, а лаба не сдана..


На чем писать? Псевдокод подойдет?

Markus_13
08.01.2010, 15:04
Тилль, во1ых неплохобы использовать тег "[CODE]"
во2ых не совсем понял - "выводила предложения только с запятыми" - т.е. только если в строке присутствует запятая?

Тилль
08.01.2010, 15:39
Маркус

Да.

Dieselpro
08.01.2010, 18:46
Visual Basic 6

Разработать информационную технологию вычисления предела последовательности http://www.imagepost.ru/thumbs/1234.png с точностью до ε. Начальное значение n принять равным 1.

RomaJkaa
08.01.2010, 20:22
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы 10 на 10 .
Найти сумму модулей элементов выше главной диагонали.

Вопрос по первой части :
1)Что-то он криво считает минимумы в углах там вроде как нужен учёт границ только я не знаю как это сделать ((
и ещё с элементами меньше нуля криво работает

если не сложно помогите

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int main(){
int k,j,i,m,n,loc_min,summ;
cout << endl << endl << "vvedite kolichestvo strok : ";
cin >> m;
cout << "vvedite kolichestvo stolbcov : ";
cin >> n;
int **a = new int *[m];
for ( i = 0 ; i < m ; i++){
a[i] = new int [n];
}
for ( i = 0 ; i < m ; i++ ){
for ( j = 0 ; j < n ; j++ )
cin >> a[i][j];
}

cout << endl << endl;

loc_min = 0;
summ = 0;


for ( i = 0 ; i < m ; i++ )
{
for ( j = 0 ; j < n ; j++ )
{
if( (i==0) && (j==0) && (a[i][j]<a[i][j+1]) && (a[i][j]<a[i+1][j]) && (a[i][j]<a[i+1][j+1]) )
loc_min = loc_min + 1;
else
if( (a[i][j]<a[i-1][j-1]) && (a[i][j]<a[i-1][j]) && (a[i][j]<a[i-1][j+1]) && (a[i][j]<a[i][j-1]) && (a[i][j]<a[i][j+1]) && (a[i][j]<a[i+1][j-1]) && (a[i][j]<a[i+1][j]) && (a[i][j]<a[i+1][j+1]))
loc_min = loc_min + 1;
}
}

cout << endl;
cout << " colichestvo localnyx minimumov v matrice : " << loc_min;

for ( i = 0 ; i < m-1 ; i++ )
{
cout <<endl << summ;
for ( j = 1 ; j < n ; j++ )
{
if ( i+j < n )
if ( a[i][j+i] < 0 )
summ = summ - a[i][j+i];
else
summ = summ + a[i][j+i];
}
}
cout << " summa modulei elementov, raspol. vishe glavnoi diagonali : " << summ;
getchar();

4p3
08.01.2010, 20:52
если не сложно помогите


Помочь не сложно, только код нечитабелен и нет комментариев.

4p3
08.01.2010, 20:56
Visual Basic 6

Разработать информационную технологию вычисления предела последовательности http://www.imagepost.ru/thumbs/1234.png с точностью до ε. Начальное значение n принять равным 1.

Попробуй задать этот вопрос на dxdy.ru . Однако, учти, что тамошний народ за тебя ничего писать не будет, так что лучше заранее запастись идеями.

Dieselpro
08.01.2010, 20:58
Попробуй задать этот вопрос на dxdy.ru . Однако, учти, что тамошний народ за тебя ничего писать не будет, так что лучше заранее запастись идеями.
У меня даже идей нету. Я вообще не представляю как на VB пределы считать :confused: . Но за совет спасибо.

4p3
08.01.2010, 21:13
У меня даже идей нету. Я вообще не представляю как на VB пределы считать :confused: . Но за совет спасибо.

Здесь на лицо итеративный алгоритм. Начинаешь с какой-то точки N. Затем подставляешь N+1. Если их разница результата будет меньше эпсилона, то ты нашел предел.

PS: пофиксь картинку, пожалуйста. Непонятно двойка под корнем или нет.

Dieselpro
08.01.2010, 21:20
PS: пофиксь картинку, пожалуйста. Непонятно двойка под корнем или нет.
Скорее всего под корнем. Я не знаю. У меня в задании так нарисовано.

4p3
08.01.2010, 21:24
Скорее всего под корнем. Я не знаю. У меня в задании так нарисовано.

Пораскинул мозгами, если не абстрагироваться, то можно взять, к примеру, метод Ньютона. Ведь ясно же к чему стремится функция.

Dieselpro
08.01.2010, 21:33
Пораскинул мозгами, если не абстрагироваться, то можно взять, к примеру, метод Ньютона. Ведь ясно же к чему стремится функция.
Как-то сложно это. Мне кажется должно как-то проще решаться. Попробую по методу Ньютона. Спасибо за совет.

4p3
08.01.2010, 21:44
Как-то сложно это. Мне кажется должно как-то проще решаться. Попробую по методу Ньютона. Спасибо за совет.

Если это слишком сложно для тебя, можешь попробовать метод бисекции, но он требует указания интервала и работает гораздо медленнее. Также я не помню, гарантируют ли данные методы сходимость или нет.

RomaJkaa
08.01.2010, 23:43
Не могу найти ошибку

1. Минимальный по модулю элемент массива.
2. Сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
Преобразовать массив таким образом, чтобы в первой его половине расположились элементы, стоящие в чётных позициях, а во второй половине – элементы стоявшие в нечётных позициях.

Собственно проблема в том что когда вводишь деситичные дроби программа берёт только целую часть как для вычисления суммы так и для нахождения минимального
например если вводить элементы : 3 5 3 0.5 3 5 0 8
программа выдаёт что 0.5 наименьший элемент
аналогично при сумме если после 0 например 7 3.4 сумма получается 10

cpp

#include <iostream.h>
#include <conio.h>
#include <math.h>


int main()
{
clrscr();
int n;
cout<<"vvedite koli4estvo elementov";cin>>n;

int i;
int ineg;

float sum;float *a=new float [n];
int imin;

cout<<"vvedite elementi=\n";

int k=0;
int m=n/2;

for(i = 0; i < n; i++)cin>>a[i];
for(i = 0; i < n; i++)cout<<a[i]<<' ';
for(i = 0; i < n; i++) if (a[i]==0) ineg=i;
for(sum=0,i=ineg+1;i<n;i++) sum+=abs(a[i]);
if(int(ineg==0)) cout<<"net 0-vix eleventov";
else
cout<<endl<<"summa "<<sum;


for( i=ineg=0;i<n;i++) {
if(abs(a[i]) < abs(a[imin])) imin=i;}
cout<<"\n\t i min="<<(a[imin]);
cout<<endl ;

float *b = new float[n];

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

{
if(int(i)%2==0)
{b[m]=a[i];m++;}
else
{b[k]=a[i];k++; }
}
for(i=0;i<n;i++)
{cout<<b[i]<<" ";}
cout<<endl;
getch();
return 0;

}

[Life]
08.01.2010, 23:55
помогите с лабораторной. Нужно осуществить поиск подстроки в строке без использования функций.
я пробовал так:



#include <iostream.h>
void main()
{
char stroka[30];
char podstroka[6];
int ch=0;
cout<<" vvedite stroky: ";
cin.getline(stroka, 30);
cout<<"\n vvedite iskomyjy podstroky: ";
cin.getline(podstroka, 6);
for ( int i=0; i<50; i++)
{
if (podstroka[0]==stroka[i])&&
(podstroka[1]==stroka[i])&&
(podstroka[2]==stroka[i])&&
(podstroka[3]==stroka[i])&&
(podstroka[4]==stroka[i])&&
(podstroka[5]==stroka[i]) ch++;
}
cout<<ch;
} не получается...

4p3
09.01.2010, 00:04
Не могу найти ошибку

На лицо неявное приведение типов. Вы преобразуете дробное число из формата IEE 754 в целочисленное. Работайте в одном формате или используйте приведение типов.

4p3
09.01.2010, 00:08
']помогите с лабораторной.

Используйте тег CODE. Глаза режет. И, очень Вас прошу, комментируйте свой код.

Ваша задача сводится к поиску вхождения одного массива в другой. Это делается двумя циклами, один из которых вложен в другой.

STIFFmaster
09.01.2010, 01:55
Help!!!
помогите, мне с лабой
Написать програму что реализирует две функции с однаковіми именами но разными входящими данными(перегрузка).
Функция max, что находит максимальное значение из двух целых чисел и максимальное значения длиннейшего из слов предложения.

KI11obyte
09.01.2010, 02:06
STIFFmaster, как то так


//фуникция для работы с числами
int max(int a, int b)
{
if (a>b) return a;
else return b;
}
//функция для работы со строкой
int max(char * c)
{
int a;
int max=1;
while (c!='\0')
{
if (c==' ')
if (a>max)
{
max=a;
a=0;
}
if (c!=' ')
a++;
c++;
}

}


З.ы. могут быть мелкие ошибки - давно на С++ не писал, плюс набирал прямо тут, нигде не проверял.

KI11obyte
09.01.2010, 02:20
Life а какого черта ты сравниваешь каждый символ подстроки с текущим рассматриваемым символом в строке? ты тогда уж сравнивай со следующими. а еще лучше сделать проверку без привязки к количеству символов строке
да и в цикле конечное значение левое какое то

int k=0;
for ( int i=0; i<30; i++)
{
if (stroka[i]==podstroka[k])
k++;
if ((stroka[i]!=podstoka[k]) && (!k))
k=0;
if (k==strlen(podstroka))
cout<<i-k;
}

[Life]
09.01.2010, 02:49
Life а какого черта ты сравниваешь каждый символ подстроки с текущим рассматриваемым символом в строке? ты тогда уж сравнивай со следующими. а еще лучше сделать проверку без привязки к количеству символов строке
да и в цикле конечное значение левое какое то

int k=0;
for ( int i=0; i<30; i++)
{
if (stroka[i]==podstroka[k])
k++;
if ((stroka[i]!=podstoka[k]) && (!k))
k=0;
if (k==strlen(podstroka))
cout<<i-k;
}

Спасибо, о то некак не мог додуматся....

Gifts
09.01.2010, 03:36
Dieselpro задача можно решить из критерия сходимости для последовательности. Для любого числа ε > 0 существует номер N такой, что при всех n > N и любых натуральных m выполняется неравенство |Xn+m - Xn| < ε.

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

[Life] у KI11obyte немного неправильно, его функция не найдет строку 'abc' в строке 'aaabc' int j=0;
for (int i=0; i<30 || !(stroka[i]); i++)
{
if (stroka[i]==podstroka[0])
for (j=0;j<0; i++)
{
if (!podstroka[i+j]) return 1;
if (!stroka[i+j]) return 0;
if (stroka[i+j]!=podstroka[j]) break;
}
}
return 0;

return 1 - заменить на сообщение что строка найдена, а return 0 - что нет, ну или оформить все в отдельную функцию. Ведь задание гласит - не использовать СТАНДАРТНЫЕ функции, а это будет собственная

[Life]
09.01.2010, 03:54
Спасибо Gifts, а то смотрю что написал KI11obyte - и сам думаю видать что-то не так...
а вот
int j=0;
for (int i=0; i<30 || !(stroka[i]); i++)
{
if (stroka[i]==podstroka[0])
for (j=0;j<0; i++)
{
if (!podstroka[i+j]) return 1;
if (!stroka[i+j]) return 0;
if (stroka[i+j]!=podstroka[j]) break;
}
}
return 0;

норм. спс.

KI11obyte
09.01.2010, 04:06
Хммм.. а почему не найдет? вроде все норм. хотя если в цикле первое и второе условие поменять местами то будет лучше

Gifts
09.01.2010, 04:15
Мм, да, будет, но все равно - остается определенный класс подстрок, которые не будут найдены, например:

aaaaabcde
aaaabсde

Когда k будет установлен в ноль переменная i будет равна 4, и нам не хватит даже длины слова для поиска. Необходимо каждый раз возвращаться

KI11obyte
09.01.2010, 04:19
Мда, ошибка (=
Хотел обойтись без вложенного цикла - получилось плохо (=

Rammstex
09.01.2010, 18:47
Не лаба, но нужный для зачёта семинар по инфе...
Язык C.
Выполнить упражнения, следуя указаниям в doc-файле.
Очень прошу, к 11 января нужно.
задания http://saveimg.ru/show-image.php?id=a60ed786585359a3b067af75b6e6edf5
doc-файл http://slil.ru/28457448

Вася Рогов
10.01.2010, 01:57
Pascal. Задача на логику: составить программу, которая по данным составит расписание занятий.

Учитель литературы может провести 1, 2, 3 уроки;
Учитель физкультуры (физ-ры) может провести 1, 4 уроки;
Учитель математики может провести 2, 3, 4 уроки;
Учитель технологии (трудов) может провести 3, 4 уроки.

Т.е. входные данные такие:
1110
1001
0111
0011

Вывод (к примеру):
Литература
Математика
Технология
Физкультура

Помогите исходником или расписанным алгоритмом. Буду благодарен.

n1ghtstalker
10.01.2010, 16:00
эм ну по сути простой перебор .
алгоритм.
если лит-ра 1
то физ-ра 4
математика 2
а труд 3

....
если хочешь в лс все варианты распишу
а ввод как осуществляться будет?
или просто надо все варианты вывести?

DJeFRY_RASH
10.01.2010, 19:32
Ребят, помогите плиз, завтра сдавать ...

program xyz;

uses
SysUtils;

Function Ru ( S : string ) : string ;
VAR
T : string ; { временная строка}
i : integer ; { номер символа в строке }
code : byte ; { код символа }
BEGIN
T := S ; { получает значение параметра }
FOR i := 1 TO Length ( S ) DO { для всех символов строки S}
BEGIN { изменяет кодировку символов кириллицы }
code := Ord ( S[ i ] ) ; { определяет код символа}
CASE code OF { ПРОПИСНЫЕ БУКВЫ }
192 .. 197: T[ i ] :=Chr(code-64) ; { А-Е: 192-197 ->128-133}
168: T[ i ] :=#240; { Ё: 168->240}
198 .. 223: T[ i ] :=Chr(code-64); { Ж-Я : 198-223->128-133} { строчные буквы }
224 .. 229: T[ i ] :=Chr(code-64); { а-е : 224-229->160-165}
184: T[ i ] :=#241; { ё: 184 ->241}
230 .. 239: T[ i ] :=Chr(code-64); { е-п: 230-239->166-175}
240 .. 255: T[ i ] :=Chr(code-16); { р-я: 240-255->224-239}
END ;
END ;
Ru := T ; { возвращает значение временной строки }
END;

VAR
i,j,k,n,temp:integer; // искомые числа
repeat_it:boolean; // зацикливание программы (True/False)
ans:char; // используется для получения согласия для продолжения работы программы
label // идентификатор
p1;

Function IntSqrt(temp:integer):real; // функция для вычисления квадратного корня.
VAR
x:real;
t:real;
begin // начало функции
x:=sqrt(temp); // извлечение квадратного корня из числа.
if (x-round(x))=0 then t:=x // Если от х отнять округленный х будет равно нулю, тогда t=x.
else t:=0; // Либо t=0.
end;


begin
Writeln(Ru('Программа находит все натуральные числа, меньшие чем N, для которых выполняется соотношение a*a + b*b = c*c. [a,b,c < N]'));
Writeln; // ...
Writeln(Ru('Автор программы ...')); // Вывод информации на экран об авторе программы.
Writeln; // ...
Writeln('...'); // Вывод на экран - e-mail автора программы.
Writeln;
p1: // Возврат в это место при ошибке или при повторном вводе данных.
repeat_it:=true; // Зацикливание программы, True-правда.
while repeat_it=true do begin
Write(Ru('Введите число, которое вы хотите проверить: ')); // ...
read(temp);
Writeln('OTBET: ',IntSqrt(temp):6:0); // Отправить temp на обработку в функцию 'Formula()' и вывести результат на экран.
Writeln; // ...
Write(Ru('Введите N: ')); // ...
Read(n); // Ввод числа N
for i:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
for j:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
for k:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
if i*i+j*j=k*k then Writeln('a=',i:4,'; b=',j:4,'; c=',k:4); // Если i*i+j*j=k*k, то выводятся на экран все возможные варианты решения этого уравнения.
Writeln; // ...
Write(Ru('Вы хотите продолжить работу с программой ? (Y/N): ')); // Предложить продолжить работу с программой.
Readln;
readln(ans); // Получить согласие.
writeln; // ...
if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo p1; // Если согласие получено - возврат к началу.
break;

end;
end.

Собственно если ввожу N = 6
то выводит ответ
a = 3 b = 4 c = 5
a = 4 b = 3 c = 5
то есть нужно чтобы в случае если "с" совпадает несколько раз, тогда чтобы выводилось 1 раз.

Fata1ex
10.01.2010, 19:45
Тебе нужно, чтобы с каждым 'c' выводилась только одна пара или чтобы набор чисел в тройке различался в каждом варианте?
На будущее - тут нет экстрасенсов, пиши, что делает твоя программа и что должна делать ВНЕ кода. И вовсе не зачем пихать в код всю программу, достаточно проблемного места.

DJeFRY_RASH
10.01.2010, 19:55
Полная задача программы:
Нужно определить функцию, которая возвращает натуральное число, если аргумент функции является квадратом этого числа и ноль в противном случае.
Составить программу, которая находит все натуральные числа, меньшие чем N, для которых выполняется соотношение a2(квадрат) + b2(квадрат) = c2(квадрат).
Проблема:
То есть всё норм работает, кроме того, что когда я получаю в ответе одинаковые "с", то получается что "а" и "b", разные, но числа одинаковые, поэтому программа их выводит, и один вариант получается лишним.
то есть, если я ввожу N = 6, я должен получить ответ, только
a = 3; b = 4; c = 5
а не два варианта.

Fata1ex
10.01.2010, 20:06
набор чисел в тройке различался в каждом варианте
ага.

Можешь записывать a и b в массив, а потом сравнивать. Больше ничего в голову пока не приходит.
Goto буэ ) используй repeat/until

ps. а вообще в условии ни слова не сказано про твою "проблему". может это вовсе не проблема?

RandomJkee
10.01.2010, 21:34
Нужно 11 января написать прграмму по C# прибл за час, задание передам по icq, обратно также. прогу надо будет начать делать где то около 9-00(время московское), моя аська 428055866
Пишите о цене договоримся, очень надо

DJeFRY_RASH
10.01.2010, 22:04
Я тоже думал, что не проблема, но преподователь оборвал, сказал сделай так чтобы одинаковые ответы не повторялись.
Вот я и думаю как сделать...
Может что-то наподобии этого добавить ?

Procedure PrintTreangle(n:integer);
VAR
a,b,c:longint;
count:longint;
BEGIN
FOR a:=1 To n Do
For b:=a+1 To n Do
Begin
c:=IntSqrt(a*a+b*b);
if c>0 Then Writeln(a:4, b:4, c:4);
Begin
Writeln(a:4, b:4, c:4);
count:=count+1;
if count mod 100=0 Then
Readln;
end;
end;
END;

Algol
11.01.2010, 00:30
Procedure PrintTreangle(n:integer);
VAR
a,b,c:longint;
count:longint;
BEGIN
FOR a:=1 To n Do
For b:=a+1 To n Do
Begin
c:=IntSqrt(a*a+b*b);
if c>0 Then Writeln(a:4, b:4, c:4);
Begin
Writeln(a:4, b:4, c:4);
count:=count+1;
if count mod 100=0 Then
Readln;
end;
end;
END;
Правильнее наверно
FOR a:=1 To n-1 Do
For b:=a To n-1 Do

Nelson17
11.01.2010, 15:23
Прошу помощи!!! :confused: :confused:

С++!!!!!

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

Fata1ex
11.01.2010, 15:25
я писал уже пару раз, поищи.
да и вообще на этом форуме уже столько раз поднималась эта тема ...

[+] посмотри Солтера и Клепера: у них в первых главах нечто подобное есть

>>serhio<<
11.01.2010, 16:37
Пожалуйста помогите разобраться в задаче на pascale!!! Буду очень признателен!
Задача№1
Дана последовательность из 10 слов. Вывести слова, в которых первая буква входит в них один раз.
Задача№2
Составить список содержащий сведения об n студентов, для каждого учащегося указать: фамилию,идентификационный номер, дата выдачи свидетельство постановке на учетв налоговом органе,дата рождения,год поступления в университет,курс,группа,ко -во семестровобучения,оценки каждой сесии по всем семестрам. Информация о каждом студенте о форме и виде записи, совокупность записей объединить в массив.Вывести на экран список студентов, рекомендуемых к получению стипендии. Критерий – средний балл рекомендуемого студента должен быть выше значения, задаваемого с клавиатуры. N = 4.

AmadeoRache
11.01.2010, 17:52
Помогите решить тоже на Pascal .
http://dump.ru/viewer/4116999.jpg

[Life]
11.01.2010, 22:31
Подскажите как написать программу которая сама себя может копировать...

Algol
11.01.2010, 23:12
']Подскажите как написать программу которая сама себя может копировать...
Держи :D
using System;
using System.IO;

namespace ConsoleApplication20
{
class Program
{
static void Main(string[] args)
{
File.Copy(AppDomain.CurrentDomain.BaseDirectory+
AppDomain.CurrentDomain.FriendlyName, "c:\\best.exe", true);
}
}
}

[Life]
11.01.2010, 23:21
Держи :D
using System;
using System.IO;

namespace ConsoleApplication20
{
class Program
{
static void Main(string[] args)
{
File.Copy(AppDomain.CurrentDomain.BaseDirectory+
AppDomain.CurrentDomain.FriendlyName, "c:\\best.exe", true);
}
}
}

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

tw1ns
14.01.2010, 11:30
Есть просьба к пользователям данного форума. Есть задачки на Паскале. Не могли бы Вы помочь в решении. Заранее благодарен. :)


http://s49.radikal.ru/i124/1001/e8/089a6173608et.jpg (http://radikal.ru/F/s49.radikal.ru/i124/1001/e8/089a6173608e.jpg.html)

n1ghtstalker
14.01.2010, 17:06
Есть просьба к пользователям данного форума. Есть задачки на Паскале. Не могли бы Вы помочь в решении. Заранее благодарен. :)


http://s49.radikal.ru/i124/1001/e8/089a6173608et.jpg (http://radikal.ru/F/s49.radikal.ru/i124/1001/e8/089a6173608e.jpg.html)

omg.... в чём проблемма собственно?
не вижу смысла даже помогать в этом.
если есть конкретные вопросы задавай

Nelson17
14.01.2010, 20:51
Прошу помощи!!!

С++!!!!!

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

STIFFmaster
14.01.2010, 21:00
Помогите с лабораторкой, завтра нада сдавать(((
Написать функцию сложения двух строк, в которой результат возвращается с помощью указателя(указатель передается функцией)

Вася Рогов
15.01.2010, 14:27
2tw1ns: Первый вариант, Вторая и Третья Задачи (потратил около трёх минут, там и по коду это видно).
const
x = 0.5;
var
y, min, max : real;
begin
min:=-5;
max:=5;

while min<>max do
begin
y:=sin(min)+2*cos(min);
writeln(y:2:2);
min:=min+x;
end;

readln
end.


const
max = 100;
var
mas : array [1..max] of integer;
x, y : integer;
begin
randomize;

for x:=1 to max do mas[x]:=random(100);

for x:=2 to max do if mas[1]<mas(x) then inc(y);

writeln(y);
end.

Слишком легкие задачи, чтобы помогать. Если ты и эти решить не можешь..... то ..... хз) Плохо дело, короче.

St0nX
15.01.2010, 17:35
Помогите с регуляркой:
Выбор всех атрибутов href из HTML текста.

Algol
15.01.2010, 21:45
Помогите с регуляркой:
Выбор всех атрибутов href из HTML текста.
Самая простая, но не самая правильная:
\bhref="([^"]+)"|\bhref='([^']+)'

SHARA
16.01.2010, 03:52
Помогите с лабораторкой, завтра нада сдавать(((
Написать функцию сложения двух строк, в которой результат возвращается с помощью указателя(указатель передается функцией)
Не знаю нужна еще или нет.
Вроде работает:

/*Написать функцию сложения двух строк.
в которой результат возвращается с помощью указателя(указатель передается функцией)*/
#include<iostream>
#include<cstdlib>
using namespace std;
void my_strcat(char *s1, char *s2);
int main()
{

char str1[80];
char str2[80];
char *i;
char *j;
i=str1;
j=str2;
cout<<"First string: ";
gets(str1);
cout<<"Second string: ";
gets(str2);
my_strcat(i,j);
cout<<str1;
return 0;
}
void my_strcat(char *s1, char *s2)
{
while(*s1)
s1++;
while(*s2){
*s1=*s2;
s1++;
s2++;
}
*s1='\0';
}

DJGRIFON
17.01.2010, 16:08
Люди помогите. Что нужно добавить что бы прога ещо показывала 10 звездочек в столбик
#include <iostream.h>
char function(int kol)
{
for (int i=0;i<kol;i++)
cout<<'*';
}
int main ()
{
cout<<"riadok iz zirochok - ";
char a=function(10);
cout<<a;
return 0;
}

STIFFmaster
17.01.2010, 16:21
SHARA
спасибо

warkk
17.01.2010, 19:11
Т.е. ты не знаешь как функцию выполнить в цикле?)
В самой функции есть цикл, вывод звездочек) Ты сам прогу писал?

DJGRIFON
17.01.2010, 20:38
Не так не получитса, но спасибо за попытку. Там нужно повторить функцыю с помощу цыкла. но я не могу понять как.

SHARA
17.01.2010, 23:26
Люди помогите. Что нужно добавить что бы прога ещо показывала 10 звездочек в столбик
#include <iostream.h>
char function(int kol)
{
for (int i=0;i<kol;i++)
cout<<'*';
}
int main ()
{
cout<<"riadok iz zirochok - ";
char a=function(10);
cout<<a;
return 0;
}



Вот держи, вроде работает

#include<iostream>
using namespace std;
char function(int x);
int main()
{
int i;
char g;
i=10;
setlocale(LC_ALL, "Russian");
cout<<"10 звездочек в ряд"<<endl;
g=function(i);
return 0;
}
char function(int x)
{
int j;
for(j=0; j<x; j++) cout<<'*'<<endl;
return j;
}

DJGRIFON
17.01.2010, 23:52
SHARA
Спасибо большое выручил

hallboy
18.01.2010, 10:18
Помогите,пожалуйста!Нужно написать програму на С...
С меня + и голоса вконтакте.

Задание:
Задана последовательность действительных чисел. Найти сумму квадратов чисел,
значение которых принадлежит промежутке [a, b].
Входные данные программы
считываются из текстового файла. В результате работы программы на
диске формируется текстовый файл, в котором записываются ФИО и
группа исполнителя работы, задания к работе, содержание входного
файла данных, результаты расчета;

Вот она же готовая на паскале:

uses crt;
var
i,o:text;
a,b,x,k:integer;
begin
clrscr;
write('a=');readln(a);
write('b=');readln(b);
assign(i,'in1.txt');
reset(i);
assign(o,'out1.txt');
append(o);
while not eof(i) do
begin
read(i,x);
if (x>a) and (x<b) then
begin
write(x,' - ');
x:=sqr(x);
writeln(x);
k:=k+x;
end;
end;
writeln('k=',k);
writeln(o,' - ',k);
close(i);close(o);
readln;
end.

lokli
18.01.2010, 14:04
2 hallboy
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<io.h>
#include<conio.h>
void main()
{
int a,b,x,k;
int *p1, *p2;
printf("a=");
scanf("%i",&a);
printf("b=");
k=0;
scanf("%i",&b);
p1=fopen("in1.txt","r");//открываем первый файлдля чтения.
if (p1==0)//если его нет
{
puts("file does not exist.");//то выводим надпись на экран что его нет и выходим из прграммы.
exit(1);
}
do
{
fscanf(p1,"%i",&x); //считываем из файда элемент х
if ((x>a)&&(x<b)) //если он больше а и меньше б
{
printf("%i - ",x);// выводим на экран х
x=pow(x,2);//находим квадрат х и присваиваем это значение х.
printf("%i\n", x);//выводим на экран х
k+=x;//присваиваем к сумму к+х
}
}while(eof(*p1));//пока не законцчиться файл р1(in1.txt)
printf("k=%i\n",k);//выводим на экран к
p2=fopen("out2.txt","w");//создаем файл р2(out2.txt)для записи(если он уже был раньше создан то перезаписываем его.)
fprintf(p2," - %i",k);//записываем в файл р2 к
fclose(p1);//закрываем файлы р1 и
fclose(p2);//р2
getch();//задерживаем завершение программы до нажатия любой кнопки.
}

GroodeR
21.01.2010, 01:40
Ребята, нужна помощь по языку Си.

Есть несколько заданий.

1.Реализовать программу сравнения рядков.

2. Дана целочеслительная матрица. Вычислить номер рядка с минимальной сумой элементов у рядка.

3. Написать программу которая вычисляет длину введенного рядка.

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

Буду весьма признателен.

diakon2
21.01.2010, 01:53
Помогите, у меня возникла проблема!!!!!!! При компилировании , ввожу одинаковое количество симвалов в 1й 2й и 3й строчке , выдает пральный результат , а вот если во 2й строке больше симвалов чем в 1й и 3й ,то при компилировании выдает только первую строчку ,а вторую пустую (если в 1й и 3й одинаковые числа) , а если разные числа также выдет только 1ю , а во второй ересь (


my_strcpy.c


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
extern char* mystrcpy(char* dest, char* src);



int main(int argc, char** argv) {
printf("%s\n",mystrcpy(argv[1],argv[2]));
printf("%s\n",mystrcpy(argv[3],argv[2]));
return 0;
}


my_strcpy.s

.intel_syntax noprefix
.globl mystrcpy
.type mystrcpy, @function
mystrcpy:
push ecx
push edx


mov ecx, [esp+12]
mov edx, [esp+16]


next:
mov al,[edx]
mov [ecx],al
cmp al,0
jz done


inc ecx
inc edx
jmp next

done:
mov eax, [esp+12]
pop edx
pop ecx
ret

sledopit2
21.01.2010, 22:03
всем привет,ребята помогите пажалуйста с лабой.задание таково: нужно с помощью функции сделать подсчёт всех отрицательных чотных чисел в массиве.или хотябы просто чотных,без отрицательных.выручите пжлст.

lokli
21.01.2010, 23:00
sledopit2 можно было бы указать язык на каком нужна данная программа. Написал на С надеюсь угадал. #include <stdio.h>
#include<math.h>
#define n 10
void otbor(int a[], int j, int *ko, int *otr);/
void main()
{
int k,otr,a[n];
otbor(a,n,&k,&otr);
printf("k=%i, otr=%i",k,otr);
}
void otbor(int a[], int j, int *ko, int *otr)
{
int i;
*ko=0;
*otr=0;
for(i=0;i<n;i++)
{
printf("Enter elements a[%i]: ",i+1);
scanf("%i",&a[i]);
if ((fmod(a[i],2)==0)&&(a[i]!=0))//проверяем что остаток от деления a[i] на 2 равен 0 и что a[i] не равен 0
{
if (a[i]<0)// если a[i] меньше 0
(*otr)++;// то прибавляем 1 к счетчику отрицательных чисел
(*ko)++;//и прибавляем к счетчику простых чисел 1
}
}
}

sledopit2
21.01.2010, 23:16
да надо на языке С,но этот вариант не подходит так как препод палит что такого мы не учили в первой четверти первого курса.Если можно сделать на подобии этой лабороторной:
#INCLUDE <iostream.h>
int sogl(char b);
void main()
{char b;
cout<<"vvedite bukvu";
cin>>b;
if(sogl(b)==1) cout<<"soglasnaja";
else cout<<"glasnaja";
}
int sogl(char b)
{
{if(b=='q'||b=='w'||b=='r'||b=='t'||b=='p'||b=='s' ||b=='d'||b=='f'||b=='g'||b=='h'||b=='j'||b=='k'|| b=='l'||b=='z'||b=='x'||b=='c'||b=='v'||b=='b'||b= ='n'||b=='m')
return 1;
else
return 0;
}
}
эта программка делает такое...при вводе согласной буквы выводиться цыфра 1 ,а при вводе гласной на экран выводиться 0.
всё это делалось в программе gcc.Если можете сделайте по такому примеру пажалуйста.

cupper
22.01.2010, 00:16
ипать О_о !! Это препод вам так сказал сделать ?

#include <iostream>

int func (int *A, int len){
int key=0; // счетчик неотрицательных четных чисел
for (int i=0; i<len; i++){
if ((A[i] < 0) && (A[i]%2 == 0)) // операция % повзращает остаток от деления если он равен нуля то в нашем случае число кратно 2 следовательно оно четно
key++; // равносильно key = key + 1;
}
return key;
}

int main(){
const int len = 6; //длина массива
int mas[len]={1, -2, 3, -5, -6, 0};
int key = func (mas, len);
std::cout<<"Prepod typoi kazel, chisel vot stoka: "<<key<<std::endl; //
}


lokli ты извращенец :)

sledopit2
22.01.2010, 00:44
cupper спасибо мил человек,про препада в точку.

Dionis1542
22.01.2010, 01:34
срочно нужно 4 задачи (http://letitbit.net/download/5170.cdef55a966fae894acf0953c3/28122009484.jpg.html) на с бидери 2006. с 1 по 4 пожалуста если не затруднит
. я извиняюсь что ссылка на файлообменник потому что хоста для картинок нормального не знаю. и если не трудно посоветуйте какой

a1ertso
22.01.2010, 02:04
Исправте пожалуйста ошибки.
Делфи.
program funktion;
{$APPTYPE CONSOLE}
uses
SysUtils,
Math;

var
x,a,alpha,betta,y:real;
Rezult:real;
fo:text;

procedure ReadFromFile(var x,a,alpha,betta:real) ;
var fi:text;
begin
AssignFile(fi,'file1.txt');
Reset(fi);
Readln(fi,x,a,alpha,betta);
Closefile(fi);
end;
procedure WriteToFile(var f:text ;y:real);
begin
WriteLn(f,' Arithmetic expression: Y=',Rezult);
CloseFile(f);
end;


function F(x,a,alpha,betta:real):real;
var
ch,zn,y:real;
begin
ch:=logN(3,power(x+1,3))-15*power(10,-3.5)*
x+power(sqrt(alpha+6*power(10,-5)),5)+arcsin(betta);
zn:=exp(a)*(x*x*x)+6.15*power(10,4)*
sqr(cos(betta)) +power(x/a+tan(0.6),4);
y:=ch/zn;
F:=Y;
end;
begin
ReadFromFile(x,a,alpha,betta) ;
Y:= F(x,a,alpha,betta);
AssignFile(fo,'funks.txt');
Rewrite(fo);
WriteToFile(fo,y);

end.
В итоге, результат "У" должен записатся в файл с ответом Arithmetic expression: Y=(ответ). но выводяться только нули.


И по возможности вторую задачку:

PROGRAM laba_6;
{$APPTYPE CONSOLE}
uses
SysUtils,math;

var
F:array [1..10] of integer;
e,c,pi,k,m :real;


i,n:integer;
ee,ff :string;
fi,fo :text;
begin
AssignFile(fi,'1.txt');
read(fi); //откр. для чтения
READ(fi,e,c,pi,k,m); //читаем строку

for i:=1 to n do Read(fi,F[i]);
CloseFile(fi); //закрываем файл
//вывод инфы в файл
AssignFile(fo,'1.out');
Rewrite(fo); // открываем для записи
Writeln(fo,' e',e,' c=',c,' pi=',pi,' k=',k,' m=',m);
//Writeln(fo,' ' e',e,' c=',c,' pi=',pi,' k=',k,' m=',m);
Write(fo,' F=(');
for i:=1 to n do Write(fo,F[i]:3);
Writeln(fo,' )');
CloseFile(fo); // закрываем файл
//Вывод
Writeln(' e',e,' c=',c,' pi=',pi,' k=',k,' m=',m);
//Writeln(' e=',e:12:9,' c=',e:4);
Write(' f=(');
for i:=1 to n do Write(F[i]:3);
Writeln(' )');
WriteLn('***** Press <ENTER> to finish *****');
Readln;
Readln;
END.

Взять из файла и переписать в другой. Но второй файл остается пустой. Заранее благодарен.

SnooPy
23.01.2010, 13:37
Здравствуйте помогите лабу сделать
Тема ОБработка одномерных массивов (pascal)
1. вычислить значение 37 элиментов одномерного целочисленного массива F в интервале (-9;6) с использованием генератора случайных чисел
2. Вычислить среднеквадратичное значение положительных элементов второй половинны массива.
3. Определить наименьший по модулю элемент среди нечетных по номеру элементов третьей четверти массива.
4. Упорядочить каждые вторые элементы последней четверти массива по убыванию обратных функций.

new-sl
23.01.2010, 14:01
всем привет мине нужно решить 1 задачу мине нужно програмно перестовлять и решат линеиные и квадратние уровнения а тагже чтобы прога могла перестовлять формулы по задонои переменои и решать патом ету переменую функцыи надо написать самому ест у каво какаянибуть инфа или подсказки буду благодарен !

Linkus
23.01.2010, 15:14
new-sl, ты вообще знаешь что такое запятая?? Или другие знаки препинания. Я не понял твой запрос :)

new-sl
23.01.2010, 15:44
мине нужно програмно перестовлять и решат линеиные и квадратние уровнения .
Тагже чтобы прога могла перестовлять формулы по задонои переменои и решать патом ету переменую.
Функцыи надо написать самому!
Ест у каво какаянибуть инфа или подсказки ? , буду благодарен !

пример :

1: x^2+6x+4=0 x=?
2: 2x+3=4 x=?
3: x^2+6x+4=2x^2+5x-4 x=?

STIFFmaster
23.01.2010, 18:38
Помогите найти ошибку. Программа должна искать количество вхождений подстроки в строку, а вместо нужного числа всегда выводит только 0

#include <iostream.h>
void main()
{
char stroka[30];
char podstroka[6];
int ch=0;
cout<<"vvedite stroky ";
cin.getline(stroka, 30);
cout<<"\nvvedite iskomyjy podstroky ";
cin.getline(podstroka,6);
for(int i=0; i<25; i++)
{
if ((stroka[i]==podstroka[0])
&& (stroka[i+1]==podstroka[1])
&& (stroka[i+2]==podstroka[2])
&& (stroka[i+3]==podstroka[3])
&& (stroka[i+4]==podstroka[4])
&& (stroka[i+5]==podstroka[5]) )
ch++;
}

cout<<ch;
}

XimiK69
23.01.2010, 19:30
Помогите найти ошибку. Программа должна искать количество вхождений подстроки в строку, а вместо нужного числа всегда выводит только 0

#include <iostream.h>
void main()
{
char stroka[30];
char podstroka[6];
int ch=0;
cout<<"vvedite stroky ";
cin.getline(stroka, 30);
cout<<"\nvvedite iskomyjy podstroky ";
cin.getline(podstroka,6);
for(int i=0; i<25; i++)
{
if ((stroka[i]==podstroka[0])
&& (stroka[i+1]==podstroka[1])
&& (stroka[i+2]==podstroka[2])
&& (stroka[i+3]==podstroka[3])
&& (stroka[i+4]==podstroka[4])
&& (stroka[i+5]==podstroka[5]) )
ch++;
}

cout<<ch;
}
Или я задание не понял или очень странный код проверки у тебя
Есть стандартная функция проверки......
for(int i=0; stroka[i] != '\0'; i++)
{
if(stroka[i] == podstroka[0])
{
bool fl = true;
for(int j = 0; podstroka[j] != '\0'; j++)
{
if(stroka[i + j] != podstroka[j]) { fl = false; break; }
}
if(fl) { ch++; }
}
}

KrabKN
23.01.2010, 20:18
1.провести подсчет согласных букв во введенной стоке, на си


2.Данная целочисленные матрица. Отсортировать строки матрицы в соответствии с первого элемента строки по убыванию.

XimiK69
23.01.2010, 20:31
KrabKN, а в чем у тебя затруднения при решении этих задач?
На форуме эти задачи были уже разобраны....
Вот решение 2 задачи http://www.forum.antichat.ru/threadnav122076-216-10.html
1 задача тоже несложная.......

KrabKN
23.01.2010, 20:45
не правильна ввожу формулы
нужна помощь
что то не получаеца у меня