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

05.04.2008, 16:34
|
|
Участник форума
Регистрация: 31.10.2007
Сообщений: 213
Провел на форуме: 394522
Репутация:
14
|
|
2 krypt3r : слушай подскажы как в выше описаном тобой коде о полендромном слове прыисходит выделение слова а то я немогу догнать даную конструкцыю ! И что означает даная конструкцыя "((s1 = strchr (s1, 0x20)) != NULL)" особенно 0x20 ато я с таким еще не сталкивалса , а препад напрягает )
|
|
|

07.04.2008, 08:47
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
Как понять фразу?
как в выше описаном тобой коде о полендромном слове прыисходит выделение слова
Как в слове происходит выделение слова О.О? Или имелось в виду выделение слова из введенной строки? В коде юзаются два указателя, которые указывают (сорри за тавтологию=) на начало двух соседних слов, разделенных пробелом. Символы, находящиеся между этими указателями, принадлежат одной строке
Функция strchr
НАЗВАНИЕ
strchr, strrchr - определение местонахождения символа в строке
СИНТАКСИС
#include <string.h>
char *strchr(const char *s, int c);
char *strrchr(const char *s, int c);
ОПИСАНИЕ
Функция strchr() возвращает указатель на местонахождение первого совпадения с символом c в строке s.
Функция strrchr() возвращает указатель на местонахождение последнего совпадения с символом c в строке s.
Здесь, "символ" означает "байт" - эта функция не работает с широкими и многобайтными символами.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функции strchr() и strrchr() возвращают указатель на совпадения с соответствующим символом, а если символ не найден, то возвращают NULL.
Другими словами,
Код:
while ((s1 = strchr (s1, 0x20)) != NULL)
ищет в строке пробел. 0x20 - это шестнадцатиричный код пробела, если смущает, замени его на более понятный вариант
Код:
while ((s1 = strchr (s1, ' ')) != NULL)
Если пробел не найден, то возвращает NULL и выходит из цикла, если пробел найден, то прогоняем цикл для выделения слова, его реверсинга и сравнения "обратного" слова с оригинальным. Последнее происходит с помощью функции strstr. Ну тут все просто. Читай ман
НАЗВАНИЕ
strstr - поиск подстроки
СИНТАКСИС
#include <string.h>
char *strstr(const char *haystack, const char *needle);
ОПИСАНИЕ
Функция strstr() находит первую встретившуюся подстроку needle в строке haystack. Завершающие символы '\0' не сравниваются.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция strstr() возвращает указатель на начало найденной подстроки или NULL, если подстрока не найдена.
|
|
|

09.04.2008, 01:15
|
|
Новичок
Регистрация: 02.04.2008
Сообщений: 28
Провел на форуме: 979643
Репутация:
20
|
|
Решите пожалуйста задачу. Сроки жмут, а я все пары по информатике прогулял, думая что там меня ничему новому не научат, теперь каюсь. Решение необходимо на Турбо Паскале... Заранее спасибо.
------------
Дана матрица А:
-4.1 5.8 -6.7 4.3
2.1 -5.1 6.3 -4.7
Найти
Р=<сумма элементов 1 строки> - <произведение элементов 2й строки>
b [1...n, 1...m]
bij, b[i,j]
--------------------
|
|
|
перемножение матриц с помощью указателей |

09.04.2008, 16:28
|
|
Новичок
Регистрация: 27.03.2008
Сообщений: 7
Провел на форуме: 56723
Репутация:
14
|
|
перемножение матриц с помощью указателей
Нужно переделать так, чтобы в функции result вместо sum=sum+a[i][h]*b[h][j]; использовались указатели.
C++
2. МУЛЬТ
Перемножить две квадратичных целочисленных матрицы (со случайными значениями) размером N x N (N = 100) с помощью указателей и адресной арифметики. Обращение к элементам матрицы в виде m[i][j] разрешено только в исключительных ситуациях! Оптимизировать код программы путем «чистки циклов».
Память для матрицы m[N][N] выделяется «построчно»:
m[0][0] … m[0][N-1] m[1][0] … m[1][N-1] …….. m[N-1][0] … m[N-1][N-1]
Код:
#include<iostream>
#include <conio.h>
using namespace std;
void fillarray(int * array[], int m, int n)
{
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
array[i][j]=rand() % 10; //fill with random value from 0 to 9
cout<<array[i][j]<<"\t"; //print to screen
}
cout<<"\n"; //"\n"=endl
}
cout<<endl;
}
void result(int * a[], int * b[], int m, int k, int n)
{
int sum;
cout<<"Result "<<m<<"x"<<n<<" array:"<<endl<<endl;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
for(int h=0; h<k ;h++)
{
sum=sum+a[i][h]*b[h][j]; //matrix multiplication
}
cout<<sum<<"\t"; //print to screen
sum=0;
}
cout<<endl;
}
}
int main()
{
srand(time(NULL));
int m,n,k;
cout<<"Put first array size: "<<endl<<"m: ";
cin>>m; cout<<"n: "; cin>>k;
cout<<"Put second array size: "<<endl<<"m: "<<k<<endl<<"n: ";
cin>>n; cout<<endl;
/* allocate memory */
int**p=new int *[m],**q=new int*[k];
for (int i=0;i<m;i++) p[i]=new int[k];
for (int i=0;i<k;i++) q[i]=new int[n];
fillarray(p,m,k);
cout<<"*"<<endl<<endl;
fillarray(q,k,n);
cout<<"="<<endl<<endl;
result(p,q,m,k,n);
/* free memory */
for (int i=0;i<k;i++) delete p[i];
for (int i=0;i<n;i++) delete q[i];
delete[] p, q;
cout<<endl<<"Press any key..."<<endl;
getch();
return 0;
}
хэлп ми энибади...
еще есть вторая прога, которая перемножает матрицы, рабочая, использует указатели, но этот вариант выложен на нашем студенческом форуме и с него уже скатали все кому не лень. Поэтому, нужно как-то склепать две программы в одну, используя указатели, и так, чтобы не было похоже на вторую прогу
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int const N =3;
int ** func(int **m, int **n)
{
int **v;
int i, j, f, l, h, k;
v = (int**)malloc(sizeof(int) * N);
if(v == NULL)
{
printf("Not ehough memory!\n");
getch();
exit(1);
}
for(i=0; i<N; i++)
{
*(v+i) = (int*)malloc(sizeof(int)*N);
if(*(v+i) == NULL)
{
printf("Not enough memory!\n");
getch();
exit(1);
}
}
i = j = k = h =0;
for (f=0; f<N; f++)
{
for(l=0; l<N; l++)
{
int sum=0, current;
for(j=0,k=0; j<N,k<N; j++,k++)
{
current = *(*(m+i)+j) * *(*(n+k)+h);
sum += current;
}
*(*(v+f)+l) = sum;
h++, j=0, k=0;
}
i++, j=0, k=0, h=0;
}
return v;
}
int main()
{
int **m;
int **n;
int **v;
n = m = (int**)malloc(sizeof(int) * N); // v6deljaem pamat'
int i,j,k,h,f,l;
srand(time(NULL));
for (i=0; i<N; i++){
m[i] = (int*)malloc(sizeof(int)*N);// v6deljaem pamat'
for(j=0; j<N; j++){
m[j] = (int*)malloc(sizeof(int)*N);}}
for (k=0; k<N; k++){
n[k] = (int*)malloc(sizeof(int)*N);// v6deljaem pamat'
for(h=0; h<N; h++){
n[h] = (int*)malloc(sizeof(int)*N);}}
for (i=0; i<N; i++){
for(j=0; j<N; j++){
*(*(m+j)+i) = (rand() % 10) + 1; }} // zapolnjaem matrix
for (i=0; i<N; i++){
for(j=0; j<N; j++){ printf("%d\t", m[i][j]); } printf("\n"); }
printf("\n*\n\n");
for (k=0; k<N; k++){
for(h=0; h<N; h++){
*(*(n+h)+k) = (rand() % 10) + 1; }} // zapolnjaem matrix
for (k=0; k<N; k++){
for(h=0; h<N; h++){ printf("%d\t", n[k][h]); } printf("\n"); }
printf("\n=\n\n");
v = func(m, n);
for (i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
printf("%d\t", *(*(v+i)+j));
}
printf("\n\n");
}
getch ();
return 0;
}
P.S. Тем, кто поможет, плюсы, а также $$$ (призовой фонд 20 WMZ  )
|
|
|

09.04.2008, 17:32
|
|
Познающий
Регистрация: 17.01.2008
Сообщений: 94
Провел на форуме: 314553
Репутация:
38
|
|
Jairam вы 2 коду malloc поменяй на new и тебе новый код а если тебе нужно по другому алгоритму то стучи по ICQ № 465-497-196
|
|
|

11.04.2008, 00:29
|
|
Новичок
Регистрация: 02.04.2008
Сообщений: 28
Провел на форуме: 979643
Репутация:
20
|
|
Просил решить задачу, но никто не отписАл... Вот, если у кого будет такая/похожая выкладываю решение:
Program matrix2;
Uses CRT;
Var b:array [1..2,1..4] of real;
i,j:integer;
p,p1,p2:real;
BEGIN
ClrScr;
b[1,1]:=-4.1;
b[1,2]:=5.8;
b[1,3]:=-6.7;
b[1,4]:=4.3;
b[2,1]:=2.1;
b[2,2]:=-5.1;
b[2,3]:=6.3;
b[2,4]:=-4.7;
Writeln('vivod matrx');
For i:= 1 to 2 do
begin
For j:=1 to 4 do
begin
Write(b[i,j]:3:1);
Write(' ');
end;
Writeln;
end;
p:=0;
p1:=0;
p2:=1;
For j:=1 to 4 do
begin
p1:=p1+b[1,j];
p2:=p2*b[2,j];
end;
p:=p1-p2;
Writeln('p=',p:6:2);
readkey;
END.
|
|
|

11.04.2008, 10:46
|
|
Новичок
Регистрация: 09.04.2008
Сообщений: 1
Провел на форуме: 2138
Репутация:
0
|
|
Экспертная система
Всем привет !! Вообщем такая проблема? нужно написать экспертную систему по типу Prospector с использованием нечёткой логики и неточных данных , считающюю коээфиценты уверенности по формуле Байеса
Может быть кто то уже делал что то подобное и есть примеры работ??
|
|
|

16.04.2008, 15:28
|
|
Новичок
Регистрация: 05.03.2008
Сообщений: 11
Провел на форуме: 46977
Репутация:
1
|
|
Всем привет! Люди помогите плЗзз.
Вот задание:
сформировать и вывести на экран вектор(масив одновымерный) из N целых случайных чисел,
каторые принимают значения на отрезке [a,b]. Границы интервала ([a,b])
ввести с клавы. Найти среднее арифметическое случайных чисел,
с них же найти максимальный минимальный елементы и их порядковые номера.
Да чуть не забил, для работы с массивами нужно использовать УКАЗАТЕЛЬ(ЛИ).
|
|
|

16.04.2008, 17:16
|
|
Познающий
Регистрация: 08.03.2007
Сообщений: 65
Провел на форуме: 91259
Репутация:
16
|
|
только если есть готовые решения или их часть.
На С/С++/c# надо написать прогу, в которой рисуется многогранник произвольный, который можно будет крутить в разные стороны.
просто не очень охота изучать опенГЛ или директикс
ЛИБО
код на OpenGL для вывода различных многогранников.
Последний раз редактировалось hackconnect; 16.04.2008 в 21:35..
|
|
|

18.04.2008, 11:58
|
|
Новичок
Регистрация: 19.03.2008
Сообщений: 3
Провел на форуме: 21476
Репутация:
0
|
|
Срочно нужна помоч.
Помогите сделать задачи.
первая:
Номиналы россиыских рублей могут принимать значения 1,2,5,10,50,100,500,1000,5000. Копейки представить как 0.01 (1 копейка), 0.05 (5 копеек). 0.1 (10 копеек), 0.5 (50 копеек). Создать клаасс Money для работы с денежными суммами. Сумма должна быть представлена полями-номиналами, значениями которых должно быть количество купюр данного достоинства. Реализовать сложение сумм, вычитание сумм, деление сумм, деление суммы на дробное число, умножение на дробное число и операции соавнения. Дробная часть (копейки) при выводе на экран должны быть отделена от целой запятой.
Вторая задача.
Создать класс ModelWindow для работы с моделями экранных окон. В качестве полей задаются: заголовок окна, координаты левого верхного угла, размер по горизонтали, размер по вертикали, цвет окна, состояние "видимое/невидимое", состояние "с рамкой//без рамки". Координаты и размеры указываются в целых числах. Реализовать операции: передвижение окна по горизонтали.
Во всех этих заданиях, помимо указанных взадании операций, обязательно должны быть реализованы следующие методы:
# метод инициализации Init;
# ввод с клавиатуры Read;
# вывод на экран Display;
# преобразование в строку tostring.
Все задания должны быть реализованы тремя способами.
1. тип данных представляется структурой с необходимыми полями, а операции
реализуются как внешние функции, которые получают объекты данного типа в
качестве аргументов.
2. Как класс с закрытыми полями, где операции реализуются как методы класса.
3. инкапсулировать поля класса в независимой структуре и в ней реализовать методы Init(), Read(), Display(), tostring(). В основном классе должно быть поле данных, представленное объектом структурой.[/I][/QUOTE]
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|