PDA

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


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

XimiK69
23.01.2010, 21:45
не правильна ввожу формулы
нужна помощь
что то не получаеца у меня
мммм......
ну вот пример проверки гласных.....согласные попробуй сам.....
void main()
{
char buf[] = "eyuioa"; ///нужный нам алфавит

char str[] = "forum.antichat.ru";
int count = 0;
for(int i = 0; str[i] != '\0'; i++)
{
for(int j = 0; buf[j] != '\0'; j++)
{
if(str[i] == buf[j]) { count++; break; }
}
}

cout << count << endl;
}

XimiK69
24.01.2010, 00:11
Idainet, но тогда все таки придется проверять через isAlpha, а то пунктуацию и другие символы будешь пропускать.......

SnooPy
24.01.2010, 00:28
Народ помогите у меня ошибка только в третьем задании
Определить наименьший по модулю элемент среди нечетных по номеру элементов трпетьей четверти массива
Программа:

Program LR5V23;
Const n=37;a=-9;b=6;
Var
min ,Buf,i,k:integer;
F:array[1..N] of integer;
c,p:real;
begin Randomize;
Writeln ('Vector f=');
For i:=1 to n do begin
F[i]:=a+Random(b-a);
Write (F[i]:4);
end;
Writeln;
P:=0;k:=0;
i:=round (n/2);
While i<=n do Begin
If F [i]<>0 Then Begin
k:=k+1;P:=p+1/F[i];
end;
i:=i+1;
end;
Writeln ('p=',p:8:4);
min:=9;
For i:=Round (n/2) to round(3*n/4) do
If I mod 2=0 then
If abs (f[i])<min Then min:=abs(f[i]);

Writeln ('min=',min:4);
For i:=N div 3 to N-1 Doтут препод докапался
For k:=i+1 to N -1 do
If(F[i]<0) AND (F[k]<0) Thenи вот тут непойму в чем ошибка
if 1/F[i]<1/F[k] then begin
Buf:=F[i];
F[k]:=F[k];
F[k]:=buf;
end;
For i:=(n div 4 ) to (2*N div 4) Do
IF F[i]<0 Then Write (F[i]:4);
Writeln;
end.


помогите пожалуйста мне просто завтра зачет сдавать(

XimiK69
24.01.2010, 00:34
Idainet, если ты учитываешь, что с 91 по 96 идут знаки......то с тобой полностью согласен)

SnooPy
24.01.2010, 01:02
просто на самом деле проблема с этим заданием!:(

STIFFmaster
24.01.2010, 01:03
уже как-то стыдно тут просить о помощи, но если поможете мне написать эту лабораторку то я(надеюсь) уже не буду тревожить. А даже сам буду помагать.

Написать функцию которая выводит на экран количество вхождений подстроки в строку используя стандартные функции и указатели.

XimiK69
24.01.2010, 01:40
уже как-то стыдно тут просить о помощи, но если поможете мне написать эту лабораторку то я(надеюсь) уже не буду тревожить. А даже сам буду помагать.

Написать функцию которая выводит на экран количество вхождений подстроки в строку используя стандартные функции и указатели.
Можно так......
void main()
{
char str[] = "haha";
char sl[] = "ha";

char *p = str;
int k = strlen(sl);

int count = 0;
while(p)
{
if(p = strstr(p,sl))
{
count++; p += k;
}
}

cout << count << endl;
}

SnooPy
24.01.2010, 01:41
мне ни кто не поможет?(

nMonkn
24.01.2010, 01:53
Можно так......
void main()
{
char str[] = "haha";
char sl[] = "ha";

char *p = str;
int k = strlen(sl);

int count = 0;
while(p)
{
if(p = strstr(p,sl))
{
count++; p += k;
}
}

cout << count << endl;
}

Только хотел выложить код почти 1в1 с твоим :) , только вместо haha , пользовал hoho ;)

XimiK69
24.01.2010, 02:07
Idainet, пробовал запускать такой проект?
void main()
{
for(char i = 0; i < 255; i++)
cout << i;
}

XimiK69
24.01.2010, 02:08
SnooPy паскаль не проходил....( не могу помочь......

SnooPy
24.01.2010, 02:11
не эт то что маленькими and писать как то преподу пофиг мне она во че подчеркнула
трпетьей четверти массива
Writeln ('min=',min:4);
For i:=N div 3 to N-1 Doтут препод докапался
For k:=i+1 to N -1 do
If(F[i]<0) AND (F[k]<0) Thenи вот тут непойму в чем ошибка
if 1/F[i]<1/F[k] then begin
Buf:=F[i];
F[k]:=F[k];
F[k]:=buf;

Dionis1542
24.01.2010, 07:09
мне ни кто не поможет?(

atomOK
24.01.2010, 12:26
Помогите решить пожалуйста 6 лаб по с++.

на upload.com.ua (http://upload.com.ua/get/901334806/)

С меня качественный рерайт)

KrabKN
24.01.2010, 17:21
очень нужна программа провести подсчет согласных букв во введенной стоке, на си


вот пример проверки гласных
void main()
{
char buf[] = "eyuioa"; ///нужный нам алфавит

char str[] = "forum.antichat.ru";
int count = 0;
for(int i = 0; str[i] != '\0'; i++)
{
for(int j = 0; buf[j] != '\0'; j++)
{
if(str[i] == buf[j]) { count++; break; }
}
}

cout << count << endl;
}

только она вопще не работает
и неммогу понять зачем здесь 2 масива

XimiK69
24.01.2010, 17:31
очень нужна программа провести подсчет согласных букв во введенной стоке, на си


вот пример проверки гласных
void main()
{
char buf[] = "eyuioa"; ///нужный нам алфавит

char str[] = "forum.antichat.ru";
int count = 0;
for(int i = 0; str[i] != '\0'; i++)
{
for(int j = 0; buf[j] != '\0'; j++)
{
if(str[i] == buf[j]) { count++; break; }
}
}

cout << count << endl;
}

только она вопще не работает
и неммогу понять зачем здесь 2 масива
эту задачу мы с Idainet обсуждали....решили не проверять по массиву.....а придерживаться кодировки

DJeFRY_RASH
24.01.2010, 18:52
Delphi
Программа должна разбивать число на множители !!
Например при вводе 16, чтобы разбивало на 2*2*2*2;
14 на 7*2 и подобное !
А то я в недоумении... Или если есть какие-то мысли, а я потом реализую сам... :confused:
Должна состоять из функций и процедур.
А и еще должна останавливать вывод ответов через каждые 20 строк. ... :confused:
На завтра надо :(

DJeFRY_RASH
24.01.2010, 20:42
Idainet,
Спасибо, в принципе понятно, но если не сложно прокомментируй пожалуйста !

telega
25.01.2010, 01:41
все нормально нашел ришение

>>serhio<<
25.01.2010, 03:51
Натолкните на мыссль как реализовать!
1. Дан текстовый файл. Считая, что количество букв в одном слове не превосходит 20, определить, сколько в файле имеется слов, состоящих из одного, двух, трех и т.д. символов. Результат вывести в другой текстовый файл.

XimiK69
25.01.2010, 03:57
Натолкните на мыссль как реализовать!
1. Дан текстовый файл. Считая, что количество букв в одном слове не превосходит 20, определить, сколько в файле имеется слов, состоящих из одного, двух, трех и т.д. символов. Результат вывести в другой текстовый файл.
на потоках надо написать или какие функции тебе можно использовать? НА С или С++? или .....

>>serhio<<
25.01.2010, 04:25
pascal

KrabKN
25.01.2010, 04:40
Написать программу, которая заменяет все буквы «о» в строке на буквы «а»
(си)
кто может напешыте мне на завтра очень нужно

XimiK69
25.01.2010, 05:02
Написать программу, которая заменяет все буквы «о» в строке на буквы «а»
(си)
кто может напешыте мне на завтра очень нужно
Если тебе поможет.........
#include <iostream>
using namespace std;

void main(void)
{
char str[] = "ChorOscho u nas na forume";

for(int i = 0; str[i] != '\0'; i++)
{
if((str[i] == 'o')||(str[i]=='O')) { str[i] = 'a'; }
}

cout << str << endl;
}

>>serhio<<
25.01.2010, 05:30
помогите исправить ошибки плиз
const
n=20;{maks dlina slova}
var
kolvo:array[1..n] of integer;
slovo, stroka:string;
i:integer;
f:text;
begin
for i:=1 to n do
begin
assign(f,'c:\in.txt');
reset(f);
while not eof(f) do
begin
readln(f,stroka);
slovo:='';
for i:=1 to length (stroka) do
begin
if stroka[i] in ['',''] then {v kvdratnih skobkah
cherez zapyatuyu perechislit' vse razdeliteli slov.kazhdiy razdelitel' v kavichkah razdelitel'}
begin
if length(slovo) > 0 then kolvo[length(slovo)]:=kolvo[length(slovo)]+1;
slovo:='';
end else
slovo:=slovo+stroka[i];
end;
if length(slovo)>0 then kolvo[length(slovo)]:=kolvo[length(slovo)]+1;
end;
close(f);
assign(f,'c:\out.txt');
rewrite(f);
for i:=1 to n do
writeln(f,'slov iz',i,'bukv:',kolvo[i]);
close(f);
readln;
end.

atomOK
25.01.2010, 14:08
Помогите решить пожалуйста 6 лаб по с++.

на upload.com.ua (http://upload.com.ua/get/901334806/)

С меня качественный рерайт)

Люди, помогите плиз...... Горю......

cupper
25.01.2010, 14:45
Люди, помогите плиз...... Горю......
бл*ть, имей уважения в другим, скопипасть сюда задачу, а не выкладывай черти что черти куда !!!

atomOK
25.01.2010, 14:58
я не в коем случае не хотела проявить не уважение к людям.....

в файле 6 задач с примерами как нужно решать....
Если я выложу их непосредственно сюда - будет очень много текста....

выложила на еще один обменник

http://narod.ru/disk/17246678000/laba.doc.html

cupper
25.01.2010, 15:12
я не в коем случае не хотела проявить не уважение к людям.....

в файле 6 задач с примерами как нужно решать....
Если я выложу их непосредственно сюда - будет очень много текста....

выложила на еще один обменник

http://narod.ru/disk/17246678000/laba.doc.html
уухх!!


//#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main(){
int mas[3][4];
//randomize();
srand(time(NULL));
int i;
int j;
for(i=0;i<3;i++){
for(printf("\n"),j=0;j<4;j++){
mas[i][j]=rand()%100;
printf("x[%d][%d]=%-4d",i,j,mas[i][j]);
}
}
printf("\n");
int min;
int index;
for (i=0; i<3; i++){
index = 0;
min = mas[i][0];
for (j=1; j<4; j++){
if (min > mas[i][j]){
min = mas[i][j];
index = j;
}
}
mas[i][index] = mas[i][i];
mas[i][i] = min;
}
for(i=0;i<3;i++){
for(printf("\n"),j=0;j<4;j++){
printf("x[%d][%d]=%-4d",i,j,mas[i][j]);
}
}
printf("\n");
}


./test

x[0][0]=21 x[0][1]=6 x[0][2]=67 x[0][3]=58
x[1][0]=79 x[1][1]=39 x[1][2]=47 x[1][3]=30
x[2][0]=28 x[2][1]=10 x[2][2]=58 x[2][3]=30

x[0][0]=6 x[0][1]=21 x[0][2]=67 x[0][3]=58
x[1][0]=79 x[1][1]=30 x[1][2]=47 x[1][3]=39
x[2][0]=28 x[2][1]=58 x[2][2]=10 x[2][3]=30

если я правильно понял условие.

Если нужно к массиву через указателя явно обращаться, что было заострено в 6 лабе то вот такой вариант

//#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main(){
int mas[3][4];
int *pt;
//randomize();
srand(time(NULL));
int i;
int j;
for(i=0;i<3;i++){
pt = mas[i];
for(printf("\n"),j=0;j<4;j++){
*(pt+j)=rand()%100;
printf("x[%d][%d]=%-4d",i,j,*(pt+j));
}
}
printf("\n");
int min;
int index;
for (i=0; i<3; i++){
pt = mas[i];
index = 0;
min = *(pt + 0);
for (j=1; j<4; j++){
if (min > *(pt + j)){
min = *(pt + j);
index = j;
}
}
*(pt + index) = *(pt + i);
*(pt + i) = min;
}
for(i=0;i<3;i++){
pt = mas[i];
for(printf("\n"),j=0;j<4;j++){
printf("x[%d][%d]=%-4d",i,j,*(pt+j));
}
}
printf("\n");
}


x[0][0]=33 x[0][1]=48 x[0][2]=44 x[0][3]=60
x[1][0]=95 x[1][1]=82 x[1][2]=25 x[1][3]=59
x[2][0]=34 x[2][1]=6 x[2][2]=44 x[2][3]=45

x[0][0]=33 x[0][1]=48 x[0][2]=44 x[0][3]=60
x[1][0]=95 x[1][1]=25 x[1][2]=82 x[1][3]=59
x[2][0]=34 x[2][1]=44 x[2][2]=6 x[2][3]=45

atomOK
25.01.2010, 15:18
спасибо, за помощь) Большое.

Ток я дупля вообще не отбиваю в этом. :rolleyes:

Я вообще учусь на переводчика, а так как тех универ присобачили нам с++....

Если вам не сложно, может стукните в асю :rolleyes:

и еще: это типо лаба 1??? :rolleyes:

cupper
25.01.2010, 15:25
спасибо, за помощь) Большое.

Ток я дупля вообще не отбиваю в этом. :rolleyes:

Я вообще учусь на переводчика, а так как тех универ присобачили нам с++....

Если вам не сложно, может стукните в асю :rolleyes:

и еще: это типо лаба 1??? :rolleyes:
переводчик программист )) будешь msdn нам переводить и документацию всякую ))
зачем в аську ? есть вопросы пиши тут.

atomOK
25.01.2010, 15:30
переводчик программист )) будешь msdn нам переводить и документацию всякую ))
зачем в аську ? есть вопросы пиши тут.


ок.

так вот, это типо лаба 1? да?

cupper
25.01.2010, 15:51
ок.

так вот, это типо лаба 1? да?
а черт туплю, нет, это 6-я :) я пост твой первый неправильно прочитал )) мне прочиталось не 6 задач, а шестую задачу. Остальные пусть делают другие ))

atomOK
25.01.2010, 15:57
а черт туплю, нет, это 6-я :) я пост твой первый неправильно прочитал )) мне прочиталось не 6 задач, а шестую задачу. Остальные пусть делают другие ))


Спасибо ;)

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


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

3.Написать программу, которая заменяет все буквы «о» в строке на буквы «а»
использываетца int getch(); функцыя

все нужно на си спомощу стандартных функцый

atomOK
25.01.2010, 16:23
Помогите плиз переводчице сделать еще 5 лаб по с++

воть http://narod.ru/disk/17246678000/laba.doc.html

С 6ой уже помогли.

Если надо с меня качественный рерайт, перевод. :D

lokli
25.01.2010, 16:59
2 atomOK
Первая задача. Написана с минимальными переделками из примера.
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main()
{
float g,f;
int n;
printf("f= ");
scanf("%f",&f);
if (f>=1) {g=cos((f*f)+f-1); n=1;}
else if (f<=-1) {g=f*pow(log(fabs(f)),2); n=3;}
else {g=sin(f/(exp(f)+1)); n=2;}
printf("f= %6.3f g=%8.5f.\n № %d",f,g,n);
scanf("%f",&f);
}

Mortal
25.01.2010, 17:16
Так нельзя


хоть бы копирайт поставил..
ато там спрашиваешь, тут отвечаешь))

1) пропал end;
2) цикл с i и внутри него тоже тоже цикл с i. Так нельзя



const
n=20;{maks dlina slova}
var
kolvo:array[1..n] of integer;
slovo, stroka:string;
i,j:integer;
f:textfile;
begin
for i:=1 to n do kolvo[i]:=0;
assign(f,'c:\in.txt');
reset(f);

while not eof(f) do
begin
readln(f,stroka);
slovo:='';
for j:=1 to length (stroka) do
begin
if stroka[j] in ['',''] then {v kvdratnih skobkah
cherez zapyatuyu perechislit' vse razdeliteli slov.kazhdiy razdelitel' v kavichkah razdelitel'}
begin
if length(slovo) > 0 then kolvo[length(slovo)]:=kolvo[length(slovo)]+1;
slovo:='';
end
else
slovo:=slovo+stroka[j];
end;
if length(slovo)>0 then kolvo[length(slovo)]:=kolvo[length(slovo)]+1;
end;

closefile(f);
assign(f,'c:\out.txt');
rewrite(f);
for i:=1 to n do
writeln(f,'slov iz',i,'bukv:',kolvo[i]);
close(f);
readln;
end;

_http://forum.antichat.ru/showpost.php?p=1853795&postcount=2284

помогите исправить ошибки плиз
_http://grabberz.com/showthread.php?p=268859

нужно уважать чужой труд.

ЗЫ: прастите за мультиквот.

atomOK
25.01.2010, 17:40
2 atomOK
Первая задача. Написана с минимальными переделками из примера.
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main()
{
float g,f;
int n;
printf("f= ");
scanf("%f",&f);
if (f>=1) {g=cos((f*f)+f-1); n=1;}
else if (f<=-1) {g=f*pow(log(fabs(f)),2); n=3;}
else {g=sin(f/(exp(f)+1)); n=2;}
printf("f= %6.3f g=%8.5f.\n № %d",f,g,n);
scanf("%f",&f);
}
Спасибо! :p

BuBeN
25.01.2010, 19:51
помогите плиз написать программу для расчета силы тока, проходящего через обмотку индуктивного преобразователя на делфи
http://depositfiles.com/files/y84x8j2e0
тут формула

cupper
25.01.2010, 20:10
Помогите плиз переводчице сделать еще 5 лаб по с++

воть http://narod.ru/disk/17246678000/laba.doc.html

С 6ой уже помогли.

Если надо с меня качественный рерайт, перевод. :D

5-я:

#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main()
{
int x[20];
int k=0;
clrscr();
randomize();
for(int i=0;i<18;i++)
{
x[i]=(random(100) - random(100));
printf("x[%2d]=%2d\n",i,x[i]);
}
printf("-------");
for(i=0;i<18;i++){
if (x[i] < 0){
printf("x[%2d] = %2d \n", i, x[i]);
break;
}
}
scanf("%d",&k);
}


4-я: (также с минимальными изменениями)

#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
long factor(int k)
{long res;
if((k==1)||(k==0)) res=1;
else res=factor(k-1)*k;
return res;
}
float chlen(int m,float h)
{ float res;
//res=(m+2)*cos(m)/(factor(2*m+1)+pow(log(m*pow(h,2)),3));
res=pow(-1,m+1) * sqrt(m*pow(h,m)) / factor(m+1);
return res;
}
void main()
{clrscr();
float x=0.8,s=0,y=1,toch=1e-5;
int i=1;
while(fabs(y)>=toch)
{y=chlen(i,x);s+=y;
printf("%4d %10.8f %10.8f\n",i,y,s);
i++;}
printf("%f",s);
scanf("%f",&x);
}

AmadeoRache
28.01.2010, 17:11
Помогите пожалуйста с практической работой .
Написать нужно на Pascal графическую программу .
Травка , Дерево , Облака , солнышко.
Гусеницу которая заползает на дерево .
Гусеница должна быть вот такой http://dump.ru/viewer/preview/biggest/4232073.jpg

KrabKN
28.01.2010, 21:05
Напесать программу на СИ очень срочно нужно

Написать программу, реализует две функции с одинаковыми именами, но разными входными параметрами (перегрузка).
Функция Kol, которая находит количество положительных чисел с n введенных и количество символов в слове.

a1ertso
28.01.2010, 21:24
Здравствуйте.
Задачка на делфи. Помогите пожалуйста.
В массиве B(n,n) элементы строки, содержащей наибольший элемент, заменить на A:
http://content.foto.mail.ru/mail/gosha_men/_answers/i-1.jpg

a1ertso
28.01.2010, 22:23
program MAX_zamen;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
n=3;
var
b:array[1..n,1..n] of real;
I,j:interger;
a:array [1..n] of real;
begin
writeln(‘введите значения элементов матрицы по строкам’);
writeln(‘в конце каждой строки нажимайте Enter’);
for i:=1 to n do
begin
for j:=1 to n do read(b[i,j]);
writeln;
end;
for i:=1 to n do
begin
a[i]:=b[i,1];
for j:=2 to n do
if a[i]<b[i,j] then a[i]:=b[i,j];
end;
writeln (‘Наибольшие значения строк матрицы S’);
writeln (‘Номер строки Наибольшее значение’);
for i:=1 to n do
writeln (i:6,’ ’:20,a[i]);
readln;
end.
Нашел наибольший, а вот как заменить? У меня все не как не получится, то что-то не хватает, то лишнее выполняю. Помогите дописать пожалуйста. Хотя вроде все правильно...

a1ertso
29.01.2010, 00:21
Спасибо.
Написал, но теперь появились ошибки, а исправить не получается. Помогите пожалуйста. Кто поможет киньте в пм свой WMR. Немного отблагодарю.
Вот код:
program MAX_ZAMEN;
{$APPTYPE CONSOLE}
uses
SysUtils;

const n=3;
var
b:array[1..n,1..n] of real;
I,j:integer;
max,mm,a,pr:integer;
label prog1,prog2,prog3;

// OPISANIE PROGRAM 2

const
n2=10;
type
ar=array[1..n2] of real;

var
c2:array [1..10] of real ;
a2,b2:array [1..5] of real;

i2:integer;


//---- end ---

BEGIN
Writeln('Press 1 to run program 1, Press 2 to run program 2. Press 3 for exit');
read(pr);
if pr=1 then goto prog1;
if pr=2 then goto prog2;
if pr=3 then goto prog3 ;


prog1:
begin
writeln('введите значения элементов матрицы по строкам');
writeln('в конце каждой строки нажимайте Enter');
for i:=1 to n do
begin
for j:=1 to n do read(b[i,j]);
readln;
end;

write('Значение A -> ');
readln(a);

mm:=1;
for i:=1 to n do
begin
max:=1;
for j:=2 to n do
if b[i,max] < b[i,j] then max:=j;
writeln(i,'-я строка = ',max[i,max]:0:4);
if mm<max then mm:=i;
end;
for j:=1 to n do b[mm,j]:=a;

writeln('Преобразованная матрица');
for i:=1 to n do
begin
for j:=1 to n do write(b[i,j]:0:4,' ');
writeln;
end;
readln;
end;


prog2:





Begin
Writeln('vvedite',n2,'veschestvenyu elementov');
for i2:=1 to 5 do begin
readln(A2[i2]);
readln(B2[i2]);
end;
for i2:=1 to 10 do
if (i2 mod 2=0) then
c2[i2]:=B2[i2];
for i2:=1 to 10 do
writeln(C2[i2]);
READLN;
readln;
prog3:

end;

end.

KrabKN
29.01.2010, 01:02
http://content.foto.mail.ru/mail/0262610/_animated/i-2.gif

очень срочн нужно создать програму на си

lokli
29.01.2010, 01:29
Насколько я понял "где Р(к)=а+к" относиться ко второму рядку. И так как о к тоже ничего не сказано я посчитал, что к тоже натуральное число. Так что KrabKN держи :) #include <stdio.h>
#include <math.h>
void main()
{
int a,k,p;
printf("enter a: ");
scanf("%d", &a);
printf("enter k: ");
scanf("%d", &k);
if(k>a)
p=pow((k+a),2);
else
p=k+1;
printf("p=%d",p);
}

a1ertso
29.01.2010, 01:41
Ну что, никто немного заработать не хочет? Там всего лишь одна - две ошибки. На массив ругается... Срочно нужно просто... Сдать утром.

GenaD
29.01.2010, 05:59
Ai,j = √i + j/2
Bi,j = √i - j/2
Поменять местами значения масива А с максимальным и минимальным значением и перемножить матрицы А і В
Очень нужно срочно решение этой задачи!!

XimiK69
29.01.2010, 14:27
Умножение матриц) На динамические массивы и функции наверно сам сможешь сделать...
#include <iostream>
using namespace std;
const int n = 3, m = 2, k = 3;

int main()
{
int a[n][m], b[m][k], q[n][n];
int i = 0, j = 0;

cout << "1 massiv " << "[" << n <<"]" << "[" << m << "]" << endl;
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
cin >> a[i][j];

cout << "2 massiv " << "[" << m <<"]" << "[" << k << "]" << endl;
for(i = 0; i < m; i++)
for(j = 0; j < k; j++)
cin >> b[i][j];

///Умножение 1 массива на 2 массив
for( i = 0; i < n; i++)
{
for(j = 0; j < k; j++)
{
q[i][j] = 0;
for(int s = 0; s < m; s++)
{
q[i][j] += a[i][s] * b[s][j];
}
}

}
cout << "Resultat\n";
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
cout << q[i][j] <<" ";
cout << endl;
}
return 0;
}

MsXaK
30.01.2010, 00:51
Всем привет нужна помощь по бейсику ..) кто может помочь прошу написать в личку или аську 66 999 77 скину условие

warkk
31.01.2010, 01:21
Кидай тут условие.

MsXaK
31.01.2010, 02:34
7. Задания олимпиады

1. Создать творческий командный проект в среде Visual Basic на тему: «Портрет идеального учителя глазами современных школьников», посвященный году Учителя (2010г.).
2. Технология выполнения заданий олимпиады - Visual Basic не выше версии 6.
3. Создание проекта предполагает использование следующих технических возможностей среды Visual Basic:
• объекты визуализации;
• функциональная возможность использования нескольких форм в проекте;
• простые и сложные алгоритмические конструкции;
• и др.
4. Ограничение по размеру (объему) всех файлов проекта - 4 Мб.


Приложение 1

Примерный перечень вопросов для составления портрета современного учителя

1. Какие качества должны, на Ваш взгляд, преобладать у современного учителя:
a) профессиональные (педагогическое мастерство др.)
b) личностные (характер, самооценка и др.)
c) интеллектуальные и академические (ум, эрудиция, способность к развитию и др.)
d) коммуникативные (общение с коллегами, учащимися, родителями и др.)
2. Каких качеств не хватает современному учителю?
3. Что Вы цените больше всего в современном учителе?
4. Что влияет, по Вашему мнению, на формирование имиджа современного учителя?
a) сам учитель
b) государство
c) гражданское общество
d) педагогическое общество
e) средства массовой информации
5. Перечислите нравственные черты характера, которыми должен обладать современный учитель.
6. Перечислите права и обязанности, которыми должен обладать современный педагог.
7. Опишите современного учителя по следующим параметрам:
a) пол
b) возраст
c) голос
d) рост
e) цвет глаз


Эргономические требования к олимпиадным проектам

Оформление:
Стиль • соблюдайте единый стиль оформления;
• избегайте стилей, которые будут отвлекать от контентного наполнения проекта;
• вспомогательная информация (управляющие кнопки) не должны преобладать над основной информацией (текстом, иллюстрациями).
Фон Для фона предпочтительны холодные тона.
Использование цвета • на одной форме рекомендуется использовать не более трех цветов: один для фона, один для заголовка, один для текста;
• для фона и текста используйте контрастные цвета.

Представление информации:
Содержание информации • используйте короткие слова и предложения;
• минимизируйте количество предлогов, наречий, прилагательных;
• заголовки должны привлекать внимание аудитории.
Расположение информации на странице • предпочтительно горизонтальное расположение информации;
• наиболее важная информация должна располагаться в центре экрана;
• если на форме располагается картинка, надпись должна располагаться под ней.
Шрифты • шрифты без засечек легче читать с большого расстояния;
• нельзя смешивать разные типы шрифтов в одном проекте;
• для выделения информации следует использовать жирный шрифт, курсив или подчеркивание;
• нельзя злоупотреблять прописными буквами (они читаются хуже строчных).
Способы выделения информации Следует использовать:
 рамки; границы, заливку;
 штриховку, стрелки;
 рисунки, диаграммы, схемы для иллюстрации наиболее важных фактов.
Объем информации • не стоит заполнять одну форму слишком большим объемом информации: люди могут единовременно запомнить не более трех фактов, выводов, определений;
• наибольшая эффективность достигается тогда, когда ключевые пункты отображаются по одному на каждом отдельном слайде.

Hunter123
31.01.2010, 19:23
я вот ни могу никак розобратса в паскале я почти ноль помогити мне записать вираз

http://s005.radikal.ru/i209/1001/32/a5e9dc84bc2e.jpg (http://www.radikal.ru)

первий y:= sqr(p) + sqr(t)*sqr(t);
второй p:= sqr(x)-sqrt(abs(x)); поправте если не так
третий не понимаю как записать ?

TRX.new
31.01.2010, 19:47
я вот ни могу никак розобратса в паскале я почти ноль помогити мне записать вираз

http://s005.radikal.ru/i209/1001/32/a5e9dc84bc2e.jpg (http://www.radikal.ru)

первий y:= sqr(p) + sqr(t)*sqr(t);
второй p:= sqr(x)-sqr(abs(x)); поправте если не так
третий не понимаю как записать ?

t:=exp(1/3*ln(x+sqr(a)))

это из условия x^y = e^(y* ln x)

Hunter123
31.01.2010, 19:49
t:=exp(1/3*ln(x+sqr(a)))

это из условия x^y = e^(y* ln x)


cпасибо.

KrabKN
31.01.2010, 20:19
подскажыте где здесь начинаетса подсчет отрецательных елементов

#include <stdio.h>

#define SIZE_N 2
#define SIZE_M 2

int main()
{
int matrix[ SIZE_N ][ SIZE_M ];
int sum;
int i, j;

printf( "\nEnter a matrix with %d rows and %d columns.\n", SIZE_N, SIZE_M );

for ( i = 0; i < SIZE_N; i++ )
{
printf( "\nEnter %d values for the row d: ", SIZE_M, i + 1 );
for ( j = 0; j < SIZE_M; j++ ) scanf( "%d", &matrix[ i ][ j ] );
}

sum = 0;
for ( i = 0; i < SIZE_N; i++ )
for ( j = 0; j < SIZE_M; j++ )
sum += matrix[ i ][ j ];

printf( "\nThe sum = %d\n", sum );

return 0;
}

Colkru
31.01.2010, 20:47
В каком смысле отрицательных элементов?)

Все элементы подсчитываются тут:


sum = 0;
for ( i = 0; i < SIZE_N; i++ )
for ( j = 0; j < SIZE_M; j++ )
sum += matrix[ i ][ j ]; //Суммирует все элементы и отриц-ые и неотриц-ые)

KrabKN
31.01.2010, 21:00
спс
а #define SIZE_N 2
ето функцыя SIZE_?

TRX.new
31.01.2010, 21:03
спс
а #define SIZE_N 2
ето функцыя SIZE_?

Нет, Size_N - кол-во строк, Size_M - кол-во столбцов.
В программе они определены, матрица 2x2

KrabKN
31.01.2010, 21:05
ана используетца только в матрица или в других компонентах?

Colkru
31.01.2010, 21:05
спс
а #define SIZE_N 2
ето функцыя SIZE_?
#define SIZE_N 2 - означает то, что далее компилятор будет SIZE_N заменять на 2.
SIZE_N и SIZE_M - это не функции.

a1ertso
31.01.2010, 21:34
Нужно сделать задачу, даю 100 WMR.
На делфи, консольная.
В массиве V(n,n) элементы строки, содержащей наибольший элемент, заменить на s:
http://s004.radikal.ru/i207/1001/0c/685b75a7f02b.jpg



Вот немного набросал:
program MAX_ZAMEN;
{$APPTYPE CONSOLE}
uses
SysUtils;



const
n2=10;
type
ar=array[1..n2] of real;


i2:integer;

Begin
Writeln('vvedite ',n2,' veschestvenyu elementov');
for i2:=1 to 5 do begin
readln(A2[i2]);
readln(B2[i2]);
end;
for i2:=1 to 10 do
if (i2 mod 2=0) then
c2[i2]:=B2[i2];
for i2:=1 to 10 do
writeln(C2[i2]:0:4);
READLN;
readln;

end.

n1ghtstalker
31.01.2010, 22:18
Нужно сделать задачу, даю 100 WMR.
На делфи, консольная.
В массиве V(n,n) элементы строки, содержащей наибольший элемент, заменить на s:
http://s004.radikal.ru/i207/1001/0c/685b75a7f02b.jpg



Вот немного набросал:
program MAX_ZAMEN;
{$APPTYPE CONSOLE}
uses
SysUtils;



const
n2=10;
type
ar=array[1..n2] of real;


i2:integer;

Begin
Writeln('vvedite ',n2,' veschestvenyu elementov');
for i2:=1 to 5 do begin
readln(A2[i2]);
readln(B2[i2]);
end;
for i2:=1 to 10 do
if (i2 mod 2=0) then
c2[i2]:=B2[i2];
for i2:=1 to 10 do
writeln(C2[i2]:0:4);
READLN;
readln;

end.



omg - наибольший элемент проблемма найти?
x:=a[1];
for i:=2 to n do
begin
if x<a[2] then x:=a[i];
end;
for i:=1 to n do
begin
if x=a[i] then a[i]:=s;
end;

собственно и всё

a1ertso
01.02.2010, 00:34
А можно полный код пожалуйста?

DimkO
01.02.2010, 01:34
А можно полный код пожалуйста?

извиняй,может как то и попроще можно было,но башка болит,поэтому сделал так:
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;
const s=1;
var i,j,l1,l2,t:byte;
a:array[1..3,1..3] of real;
k:real;
begin
t:=0;
for i:=1 to 3 do
for j:=1 to 3 do
begin
writeln('a',i,j);
readln(a[i,j]);
end;
for i:=1 to 3 do
begin
k:=a[i,1];
t:=0;
for j:=1 to 3 do
if k<a[i,j] then
begin
k:=a[i,j];
l1:=i;
l2:=j;
end
else
begin
inc(t);
end;
if t=3 then a[i,1]:=s else a[l1,l2]:=s;
end;
for i:=1 to 3 do
begin
for j:=1 to 3 do
write(a[i,j]:2:2,' ');
writeln;
end;
readln;
end.

PS. не лезь в делфи пока основ программирования не выучишь!ИМХО

TPAXTOP
02.02.2010, 00:03
Ребята, вот меня озадачили...помогите, пожалуйста...

Сложить схему алгоритма и проект программы алгоритмическим языком Паскаль в среде Delphi вычисления функции y = f (x) в соответствии с вариантами, отмеченными в таблице. Первое из значений, приведенных в таблице, задать как константу, второе - ввести с помощью компонента Edit.
Вариант 7, вот сама функция


http://upload.com.ua/get/901356404/

TPAXTOP
02.02.2010, 16:50
heeeelp

superboy4
02.02.2010, 20:43
Люди! Мне срочно нужно написать программу которая шифрует текст методом перестановки символов с использованием ключа (password) на Делфи 7 (не выше!). Расшифровка тоже обязательна.

TPAXTOP
03.02.2010, 01:02
есть кто живой???

DimkO
03.02.2010, 09:30
Ребята, вот меня озадачили...помогите, пожалуйста...

Сложить схему алгоритма и проект программы алгоритмическим языком Паскаль в среде Delphi вычисления функции y = f (x) в соответствии с вариантами, отмеченными в таблице. Первое из значений, приведенных в таблице, задать как константу, второе - ввести с помощью компонента Edit.
Вариант 7, вот сама функция


http://upload.com.ua/get/901356404/
как я понял изменяется только значение переменной b:
добавь на форму компоненты Tlistbox,TEdit,TButton,ну и такую процедуру:

procedure TForm1.Button1Click(Sender: TObject);
const x=-11;
var b,a,c,y:real;
begin
listbox1.Clear;
b:=strtofloat(edit1.text);
if b<0 then
begin
MessageDlg('Значение b должно быть >=0',mtError,[mbOK],0);
exit;
end;
a:=sqrt(abs(x))+exp(sqrt(b));
c:=sqr(a)+sqr(b);
y:=sqr(c)*c/cos(c);
listbox1.Items.Add(floattostrf(y,ffgeneral,5,5));
end;

TPAXTOP
03.02.2010, 20:08
как я понял изменяется только значение переменной b:
добавь на форму компоненты Tlistbox,TEdit,TButton,ну и такую процедуру:

procedure TForm1.Button1Click(Sender: TObject);
const x=-11;
var b,a,c,y:real;
begin
listbox1.Clear;
b:=strtofloat(edit1.text);
if b<0 then
begin
MessageDlg('Значение b должно быть >=0',mtError,[mbOK],0);
exit;
end;
a:=sqrt(abs(x))+exp(sqrt(b));
c:=sqr(a)+sqr(b);
y:=sqr(c)*c/cos(c);
listbox1.Items.Add(floattostrf(y,ffgeneral,5,5));
end;



хуух....СПАСИБИЩЕ, ты спас мою грешную душу...=))

Spider545
04.02.2010, 23:06
Привет всем!!! :)
В общем такое задание вот есть , нужно сделать в MATLAB:
Написать формулы методов прогонки и пристрелки для решения краевой задачи:
u"(x) - p(x)u'(x) + q(x)u(x) = f(x),
α0u(a) + α1u'(a) = A,
β0u(b) + β1u'(b) = B.

Диф. Ур-е : y"(x) - lgx y(x)=2x

Начальное условие: y(1)=1, y(3)=3

[a,b] : [1,3]

N: 30
Кто знает MATLAB помогите плиииз!!!! :confused:

VadimTrofimov
05.02.2010, 23:27
:eek: :eek: :eek: Помогите написать программу:
- Составить программу, в которой функция определяет сумму модулей елементов.расположенных после первого отрицательного елемента в одномерном массиве, состоящем из n целых элементов. (язык C++)

becensed
06.02.2010, 00:11
:eek: :eek: :eek: Помогите написать программу:
- Составить программу, в которой функция определяет сумму модулей елементов.расположенных после первого отрицательного елемента в одномерном массиве, состоящем из n целых элементов. (язык C++)
с++ не люблю. Вот тебе на Си (алгоритм простой, перепишешь, если что)

#include <stdio.h>
#include <math.h>

#define n 10

int summ(int a[])
{
int result = 0;

for (int i=0; i<=n; i++)
{
if(a[i] < 0)
{
result = abs(a[i+1]) + abs(a[i+2]);
break;
}
}

return result;
}

void main()
{
int a[n] = {1,5,11,-5,2,-1,3,2,9,-2};
printf("Summa = %d", summ(a));
}

//EOF


примерно так.

VadimTrofimov
06.02.2010, 00:14
Спасибо огромное.

KaE
06.02.2010, 00:16
Тоже плюсы не люблю, но покороче получилось:

#include <iostream.h>

int main()
{
int a[] = {1,2,3,4,5,-6,7,8,9,-10};
int i;
int s;
for(i = 0;a[i] > 0;i++);
i++;
s = 0;
for(;&a[i] <= &a[(sizeof(a)/sizeof(int)) - 1]; i++)
s+=abs(a[i]);
cout << "sum=" << s <<endl;
return 0;
}

becensed
06.02.2010, 02:27
он просил функцию.

KaE
06.02.2010, 02:39
он просил функцию.

ну да, проглядел(.

XimiK69
06.02.2010, 03:09
с++ не люблю. Вот тебе на Си (алгоритм простой, перепишешь, если что)

#include <stdio.h>
#include <math.h>

#define n 10

int summ(int a[])
{
int result = 0;

for (int i=0; i<=n; i++)
{
if(a[i] < 0)
{
result = abs(a[i+1]) + abs(a[i+2]);
break;
}
}

return result;
}

void main()
{
int a[n] = {1,5,11,-5,2,-1,3,2,9,-2};
printf("Summa = %d", summ(a));
}

//EOF


примерно так.
Не понял твой код, а если отрицательное число стоит в конце массива? То ты своим условием abs(a[i+1]) + abs(a[i+2]); выйдешь за границы массива. Попробуй на этом контр примере запустить программу int a[n] = {1,5,11,5,2,1,3,2,9,-2}; И зачем определять n, если можно так int n = sizeof(a)/sizeof(int);

becensed
06.02.2010, 03:25
я нигде не писал, что мой код - это истина в последней инстанции. Выражение "примерно так." это подтверждает.

сделать #define проще и экономичнее.

KaE
06.02.2010, 03:30
Код, который привел becensed выдает
Summa = 3

По моей проге я получаю

sum = 34

Или я не прав?

XimiK69
06.02.2010, 03:46
KaE, больше похоже на правду)

becensed
06.02.2010, 04:09
так стоп. Я понял из-за чего вы на меня все набросились.
Автор изменил условие. Когда я его читал, было примерно так: определить сумму двух последующих элементов, после отрицательного.

KrabKN
06.02.2010, 17:25
нужно только чтоб подсчитывало отрецатилиные числа
а ета програма подсчинует все числа
на СИ написана

#include <stdio.h>
#define SIZE_N 2
#define SIZE_M 2
int main()
{
int matrix[ SIZE_N ][ SIZE_M ];
int sum;
int i, j;
printf( "\n Enter a matrix with %d rows and %d columns.\n", SIZE_N, SIZE_M );
for ( i = 0; i < SIZE_N; i++ )
{
printf( "\nEnter %d values for the row d: ", SIZE_M, i + 1 );
for ( j = 0; j < SIZE_M; j++ ) scanf( "%d", &matrix[ i ][ j ] );
}
sum = 0;
for ( i = 0; i < SIZE_N; i++ )
for ( j = 0; j < SIZE_M; j++ )
sum += matrix[ i ][ j ];
printf( "\nThe sum = %d\n", sum );
return 0;
}

KrabKN
06.02.2010, 19:44
а в етой програме мождно допесать чтоб считывала только отрецательные числа?

#include <stdio.h>
#define SIZE_N 2
#define SIZE_M 2
int main()
{
int matrix[ SIZE_N ][ SIZE_M ];
int sum;
int i, j;
printf( "\n Enter a matrix with %d rows and %d columns.\n", SIZE_N, SIZE_M );
for ( i = 0; i < SIZE_N; i++ )
{
printf( "\nEnter %d values for the row d: ", SIZE_M, i + 1 );
for ( j = 0; j < SIZE_M; j++ ) scanf( "%d", &matrix[ i ][ j ] );
}
sum = 0;
for ( i = 0; i < SIZE_N; i++ )
for ( j = 0; j < SIZE_M; j++ )
sum += matrix[ i ][ j ];
printf( "\nThe sum = %d\n", sum );
return 0;
}

KrabKN
07.02.2010, 22:58
Написать программу, реализует две функции с одинаковыми именами, но разными входными параметрами (перегрузка).
Функция Kol, которая находит количество положительных чисел с п введенных и количество символов в слове.
на с++

sledopit2
08.02.2010, 03:05
привет ув. программисты=)опять нужна ваша помощь с лабой.
язык С.
Написать программу, реализует две функции с одинаковыми именами, но разными входными параметрами (перегрузка).
Функция max, которая находит максимальное значение из двух целых чисел i поиск подстроки в строке.

Если можно сделать на подобии этой лабороторной:

#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;
}
}

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

SHARA
08.02.2010, 14:10
привет ув. программисты=)опять нужна ваша помощь с лабой.
язык С.
Написать программу, реализует две функции с одинаковыми именами, но разными входными параметрами (перегрузка).
Функция max, которая находит максимальное значение из двух целых чисел i поиск подстроки в строке.

Если можно сделать на подобии этой лабороторной:

#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;
}
}

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

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

/*Написать программу, реализует две функции с одинаковыми именами, но разными
входными параметрами (перегрузка).
Функция max, которая находит максимальное значение из двух целых чисел i
поиск подстроки в строке.*/
#include<iostream>
#include<cstdlib>
using namespace std;
int max(char *sub, char *str);
void max();
int main()
{
// Вхождение подстроки в строке(индекс вхождения)
int index;
setlocale(LC_ALL, "Russian");
index=max("три","один два три чатыре");
cout<<"Индекс вхождения подстроки в строке "<<index<<endl;
//нахождения максимального числа и ну минимального для примера
cout<<"Нахождение максимального и минимального числа: "<<endl;
max();
return 0;
}
int max(char *sub, char *str)
{
int t;
char *p;
char *p2;
for(t=0; str[t]; t++)
{
p=&str[t];
p2=sub;
while(*p2 && *p2==*p){
p++;
p2++;
}
if(!*p2) return t;
}
return -1;
}
void max()
{
setlocale(LC_ALL, "Russian");
int list[4];
int min_value;
int max_value;
int i;
for(i=0; i<4; i++) list[i]=rand();//положим случайные значения
//поиск максимльного значения
max_value=list[0];
for(i=0;i<4; i++)
if(max_value<list[i]) max_value=list[i];
cout<<"Максимальное значение равно: "<<max_value<<endl;
min_value=list[0];
for(i=0;i<4; i++)
if(min_value>list[i]) min_value=list[i];
cout<<"Минимальное значение равно: "<<min_value<<endl;
}


или

находит максимальное значение из двух целых чисел
int i,j;
cin>>i>>j;
if(i>j) cout<<"iбольше j";

sledopit2
08.02.2010, 20:57
Shara спасибо,попробую.

_GOMER_
09.02.2010, 01:13
написать программу вычесляющу площадь S:

Площадь S http://s15.radikal.ru/i188/1002/55/0b3dfadf75e9.jpg (http://www.radikal.ru) под кривой http://i081.radikal.ru/1002/a4/059f740bdde1.jpg (http://www.radikal.ru) над отрезком [B, D], где z1,z2,z3 ― решение системы уравнений http://s005.radikal.ru/i210/1002/a2/8b82e4f76839.jpg (http://www.radikal.ru) , В ― точка локального минимума функции φ(x) = http://s48.radikal.ru/i120/1002/8a/7e81fe53e4e3.jpg (http://www.radikal.ru) ,
D ― точка ее локального максимума.
контрольный ответ S = 6,71 при С=5

Dosia
09.02.2010, 16:40
где z1,z2,z3 ― решение системы уравнений http://s003.radikal.ru/i201/1002/d5/485d088cd9be.jpg (http://www.radikal.ru)

Это по - вашему система уравнений?

DJGRIFON
09.02.2010, 22:46
Люди выручайте нужно написать 2 защиты.

(Функции роботы з рядкамы).
1.Найти слова длинной в 3 символа во веденной строке и вывести их в столбик.

(Масивы. Матрицы)
1. 5 1 3 2 4 6
Отсортировать по возростанию 123456
Отсортировать по убыванию 654321



[QUOTE][U]

SHARA
09.02.2010, 22:58
привет ув. программисты=)опять нужна ваша помощь с лабой.
язык С.
Написать программу, реализует две функции с одинаковыми именами, но разными входными параметрами (перегрузка).
Функция max, которая находит максимальное значение из двух целых чисел i поиск подстроки в строке.

Если можно сделать на подобии этой лабороторной:

#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;
}
}

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


Лови функцию которая находит подстроку в строке:
void f_s(char *sub, char *str)
{
int i;
char *p;
char *p2;
for(i=0; str[i]; i++) {
p=&str[i];
p2=sub;
while(*p2 && *p2==*p)
{
p++;
p2++;
}


}
cout<<p2;
}

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

SHARA
10.02.2010, 02:47
Написать программу, реализует две функции с одинаковыми именами, но разными входными параметрами (перегрузка).
Функция Kol, которая находит количество положительных чисел с п введенных и количество символов в слове.
на с++

Лови

/*Написать программу, реализует две функции с одинаковыми именами, но разными входными параметрами (перегрузка).
Функция Kol, которая находит количество положительных чисел с п введенных и количество символов в слове.
на с++*/
#include<iostream>
#include<cstring>
using namespace std;
int kol(int n, int m);
void kol();
int main()
{
setlocale(LC_ALL, "Russian");
//Первая часть программа находит количество положительных чисел
int i;
int g;
int r;
cout<<"Программа находит количество введенных положительных чисел"<<endl;
cout<<"Введите числа: ";
cin>>g>>r;
i=kol(g,r);
cout<<"Количество введенных положительных чисел: "<<i<<endl;
//Вторая часть программа подсчитывает количество символов в слове
cout<<"Программа подсчитает количество символов в слове"<<endl;
kol();
return 0;
}
int kol(int n, int m)
{
for(; n<m; n++) {
if (n>=0) cout<<n<<" "<<endl; // здесь нуль я отнес к положительным числам,)))
}
return n;
}
void kol()
{
char str[80];
cout<<"Введите слово: ";
cin>>str;
cout<<"Количество символов в слове"<<strlen(str);
}

Согласно условию у меня подсчитывается количество символов в слове, ну если надо я могу переписать чтобы во всей строке происходил подсчет :)

krewger
10.02.2010, 20:08
Выявить все пары целых чисел из интервала -n до n являющиеся решением уравнения 2*y-x^2=4;

Помогите пожалуйста

Dosia
10.02.2010, 20:33
program mda;

var
intA,intB,n:integer;

begin
writeln('Vvedite n');
readln(n);

for intA:=-n to n do
for intB:=-n to n do begin
if 2*intA-intB*intB-4=0 then writeln('y = ',intA,' x = ',intB);
end;

readln;
end.



Vvedite n
5
y = 2 x = 0
y = 4 x = -2
y = 4 x = 2

Vvedite n
10
y = 2 x = 0
y = 4 x = -2
y = 4 x = 2
y = 10 x = -4
y = 10 x = 4


С++


#include <iostream>

using namespace std;

void main(void)
{
int n;
setlocale(0,"");
cout << "Enter n"<<endl;
cin >>n;

int x,y =n;

for (y=-n;y<=n;++y)
{
for (x=-n;x<=n;++x)
{
if (2*y-x*x-4==0) { cout<<"y = "<<y<<" x = "<<x<<endl;}
}
}

system("pause");
}

krewger
10.02.2010, 21:05
Спасибо большое только мне на си надо, ну я сам переведу

worlock13viper
10.02.2010, 21:23
помогите народ задачка такая :
Разработать приложение в Delphi,которое при вводе числа выводит на экран его текстовую интерпритацию:.. Вот такая задачка. если она "пойдет" то рублей 20 на R кашель кину)) |Тестовая интерпретация - это как
102 - Сто два
1031 - Одна тысяча тридцать один|, мне сказали от 1 до 1миллиона(1...1 000 000)

KrabKN
10.02.2010, 22:07
Лови

Согласно условию у меня подсчитывается количество символов в слове, ну если надо я могу переписать чтобы во всей строке происходил подсчет :)


Можеш написать на СИ!!!

SHARA
10.02.2010, 22:32
Можеш написать на СИ!!!
В условии же на с++ было, синтаксисы языков( с и с++) похожи.
Алгоритм известен . Подумай сам :)
Изменения минимальны :)

Syntaxys
10.02.2010, 23:34
Задача:

1) Используя подпрограммы создать массив y, элементы которого заданы формулой: ym=random(m), fy(m)
и массив g: gn=Fg(m)=n^2/2
m=1,2,...7
n= 1,2...9
Используя процедурный тип, определить в каждом массиве количество элементов >четырёх.

Как решал:


Программа(тут пока просто проверил работают модули или нет):

Program Nakol;
uses
mas1,mas2;
Begin
for m:=1 to 7 do
write(mas1[m],' ');
writeln;
writeln;
for n:=1 to 9 do
write(mas2[n],' ');
writeln;
writeln;
end.



Далее модули:


МОДУЛЬ 1

unit mas1;
interface
Var mas1:array[1..7] of byte;
m:byte;
implementation
begin
for m:=1 to 7 do
mas1[m]:=random(m);
end.







МОДУЛЬ 2

unit mas2;
interface
Var mas2:array[1..9] of real;
n:byte;
implementation
begin
for n:=1 to 9 do
mas2[n]:=(n*n)/2;
end.



Собственно, подпрограммами (они же модули?) задать массивы удалось, но я не могу понять как реализовать через процедурный тип подсчет, а именно какова структура будет.


На ум приходит одно:

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

Вобщем, подскажите пожалуйста, не напутал ли я что?

Ins3t
11.02.2010, 00:08
Можеш написать на СИ!!!

Держи:


#include <stdio.h>
#include <string>
int kol(int n, int m);
void kol();
int main()
{
int i;
int g;
int r;
printf("The program finds the current number of positive numbers\n");
printf("Enter the number of: ");
scanf("%d,%d", &g, &r);
i=kol(g,r);
printf("Number of positive numbers entered:%d\n", i);
printf("The program will calculate the number of characters in the word\n");
kol();
return 0;
}
int kol(int n, int m)
{
for(; n<m; n++) {
if (n>=0) printf("%d ", n);
}
return n;
}
void kol()
{
char str[80];
printf("Enter word: ");
scanf("%64s", str);
printf("Number of characters in the word %d", strlen(str));
}

SHARA
11.02.2010, 00:23
KrabKN
Лучше бы сам бы додумал, изменения минимальны были :) :) :)

GroodeR
11.02.2010, 14:40
#include <iostream.h>
using namespace std;
int main ()
{
int a[3][3];
int fly;
int i,j,min,mini,k,s;
for (i=0;i<3;i++)
for (j=0;j<3;j++)

{
cout<<endl<<"vvedite zna4enie"<<"=";
cin>>a[i][j];
}
fly==0;
for (i=0;i<3;i++){
s=0;
for (j=0;j<3;j++)
s+=a[i][j];
if (min>s){
min=s;
mini=i+1;
}}
cout<<endl<<"Min zna4enie "<<min<<" v "<<mini<<" stroke";
cin>>k;
}

Помогите пожалуйста, эту программу нужно переделать так..

Найти минимум элементов >0 в строке в которой хотя бы один элемент равен нулю.

Спасибо заранее.

Dosia
11.02.2010, 20:22
помогите народ задачка такая :
Разработать приложение в Delphi,которое при вводе числа выводит на экран его текстовую интерпритацию:.. Вот такая задачка. если она "пойдет" то рублей 20 на R кашель кину)) |Тестовая интерпретация - это как
102 - Сто два
1031 - Одна тысяча тридцать один|, мне сказали от 1 до 1миллиона(1...1 000 000)


Type
T = record
StrRepr:string;
End;

Type
TT = record
One:array[0..9] of T;
End;

const
ts=' тысяч';

var
frmMain: TfrmMain;
Mass:array[1..7] of TT;
MassEx:array[10..19] of string;
implementation

{$R *.dfm}

procedure SpecialRange(Str:string;var intA,intB:integer);
begin
if (9 < strtoint(str)) and (strtoint(str)<20) then begin
if (intB <> 3) then frmMain.lblOut.Caption := MassEx[strtoint(str)]+' '+frmMain.lblOut.Caption
else
frmMain.lblOut.Caption:=MassEx[strtoint(str)]+ts+' '+frmMain.lblOut.Caption;

intA:=intA-2;
intB:=intB+2;
end;
end;

procedure TfrmMain.Button1Click(Sender: TObject);
var
intA,intB:integer;
begin
//Фильтр на ввод символов в поле ставить не стал(исходники могут скачать не все,
//а вдруг кому то потребуется), поэтому
try
if (strtoint(edtIn.text)-1)<0 then begin
showmessage('Введите число в диапазоне от 1(одного) до 1000000(миллиона)');
exit;
end;
except
showmessage('Введите число в диапазоне от 1(одного) до 1000000(миллиона)');
exit;
end;

//Не больше миллиона!
if strtoint(edtIn.text) > 1000000 then begin
showmessage('Не больше миллиона!');
edtIn.Text := '1000000';
edtIn.SetFocus;
exit;
end;

lblOut.Caption := '';
//intA счетчик
//В intB текущий разряд
intB:=1;
intA:=length(edtIn.Text);

//Последние 2 цифры в переделе от 9 - 19?
SpecialRange(copy(edtIn.Text,length(edtIn.Text)-1,2),intA,intB);

while intA > 0 do begin
//Если строка не пустая
if (Mass[intB].One[strtoint(copy(edtIn.Text,intA,1))].StrRepr <> '') then lblOut.Caption := Mass[intB].One[strtoint(copy(edtIn.Text,intA,1))].StrRepr+' '+lblOut.Caption;
if (intA = 1) and (intB= 6) and (pos(ts,lblOut.Caption)=0) then lblOut.Caption:=lblOut.Caption+ts;

// 9< Десятки тысяч и тысячи < 19
if (length(edtIn.text) > 4) and (intB=3) then SpecialRange(copy(edtIn.Text,length(edtIn.Text)-4,2),intA,intB);

inc(intB);
dec(intA);
end;

//Только одна буква большая
if not(chkUp.Checked) then lblOut.Caption:=copy(lblOut.Caption,1,1)+ AnsiLowerCase(copy(lblOut.Caption,2,length(lblOut. Caption)-1));
edtIn.SetFocus;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
//Единицы
Mass[1].One[0].StrRepr := '';
Mass[1].One[1].StrRepr := 'Один';
Mass[1].One[2].StrRepr := 'Два';
Mass[1].One[3].StrRepr := 'Три';
Mass[1].One[4].StrRepr := 'Четыре';
Mass[1].One[5].StrRepr := 'Пять';
Mass[1].One[6].StrRepr := 'Шесть';
Mass[1].One[7].StrRepr := 'Семь';
Mass[1].One[8].StrRepr := 'Восемь';
Mass[1].One[9].StrRepr := 'Девять';
//10-19 Специальные
MassEx[10]:='Десять';
MassEx[11]:='Одиннадцать';
MassEx[12]:='Двенадцать';
MassEx[13]:='Тринадцать';
MassEx[14]:='Четырнадцать';
MassEx[15]:='Пятнадцать';
MassEx[16]:='Шестнадцать';
MassEx[17]:='Семнадцать';
MassEx[18]:='Восемнадцать';
MassEx[19]:='Девятнадцать';
//Десятки
Mass[2].One[0].StrRepr := '';
Mass[2].One[2].StrRepr := 'Двадцать';
Mass[2].One[3].StrRepr := 'Тридцать';
Mass[2].One[4].StrRepr := 'Сорок';
Mass[2].One[5].StrRepr := 'Пятьдесят';
Mass[2].One[6].StrRepr := 'Шестьдесят';
Mass[2].One[7].StrRepr := 'Семьдесят';
Mass[2].One[8].StrRepr := 'Восемьдесят';
Mass[2].One[9].StrRepr := 'Девяносто';
//Сотни
Mass[3].One[0].StrRepr := '';
Mass[3].One[1].StrRepr := 'Сто';
Mass[3].One[2].StrRepr := 'Двести';
Mass[3].One[3].StrRepr := 'Триста';
Mass[3].One[4].StrRepr := 'Четыреста';
Mass[3].One[5].StrRepr := 'Пятьсот';
Mass[3].One[6].StrRepr := 'Шестьсот';
Mass[3].One[7].StrRepr := 'Семьсот';
Mass[3].One[8].StrRepr := 'Восемьсот';
Mass[3].One[9].StrRepr := 'Девятьсот';
//Тысячи
Mass[4].One[0].StrRepr := '';
Mass[4].One[1].StrRepr := 'Одна тысяча';
Mass[4].One[2].StrRepr := 'Две тысячи';
Mass[4].One[3].StrRepr := 'Три тысячи';
Mass[4].One[4].StrRepr := 'Четыре тысячи';
Mass[4].One[5].StrRepr := 'Пять тысяч';
Mass[4].One[6].StrRepr := 'Шесть тысяч';
Mass[4].One[7].StrRepr := 'Семь тысяч';
Mass[4].One[8].StrRepr := 'Восемь тысяч';
Mass[4].One[9].StrRepr := 'Девять тысяч';
//Десятки тысяч
Mass[5].One[0].StrRepr := '';
Mass[5].One[2].StrRepr := 'Двадцать';
Mass[5].One[3].StrRepr := 'Тридцать';
Mass[5].One[4].StrRepr := 'Сорок';
Mass[5].One[5].StrRepr := 'Пятьдесят';
Mass[5].One[6].StrRepr := 'Шестьдесят';
Mass[5].One[7].StrRepr := 'Семьдесят';
Mass[5].One[8].StrRepr := 'Восемьдесят';
Mass[5].One[9].StrRepr := 'Девяносто';
//Сотни тысяч
Mass[6].One[0].StrRepr := '';
Mass[6].One[1].StrRepr := 'Сто';
Mass[6].One[2].StrRepr := 'Двести';
Mass[6].One[3].StrRepr := 'Триста';
Mass[6].One[4].StrRepr := 'Четыреста';
Mass[6].One[5].StrRepr := 'Пятьсот';
Mass[6].One[6].StrRepr := 'Шестьсот';
Mass[6].One[7].StrRepr := 'Семьсот';
Mass[6].One[8].StrRepr := 'Восемьсот';
Mass[6].One[9].StrRepr := 'Девятьсот';
//Миллион ;D
Mass[7].One[1].StrRepr := 'Один Миллион';
end;


Исходники и скомпилированный .exe (http://dump.ru/file/4317471)
pass: antichat.ru

DimkO
11.02.2010, 23:39
to Dosia: с десятитысячными не пашет

Dosia
12.02.2010, 01:37
Дробями? Еще бы программа работала с дробями, если учесть, что на основании примеров просящего я такой возможности не предусмотрел, только целые числа (1- 1 000 000)

UPD: Время 12.02.2010, 00:37
Глаза уже подводят, показалось что десятичными, бывает.

Пофиксил прогу теперь все нормально со всеми числами (1- 1 000 000), целыми естественно.

DimkO
12.02.2010, 06:12
не тупи,есть еще такое понятие как разряд,и я имел ввиду разряд десятитысячных,как видишь,он входит в условие программы....все работает только при вводе чисел <10 000

oldsys
12.02.2010, 23:18
За ранее прошу извинение если не по теме !
Возможно ли сделать на языке batch\.bat ?
1. Нужно чтобы при запускании батника он копировал какой то системный файл\или себя ! До тех пор пока не закончится память на Жестком диске !
2. Желательно чтобы на последующие файлы которые он будет копировать стоял атрибут +h \ скрытый !
3. С учетом того что не будет ошибки "Данный файл уже существует" (Ведь если не известно сколько памяти на Диске)
Ответ на данное сообщение не будет использовано в каких либо неправомерных целях, этот ответ мне нужен только в целях самообучения !

n1ghtstalker
13.02.2010, 10:29
За ранее прошу извинение если не по теме !
Возможно ли сделать на языке batch\.bat ?
1. Нужно чтобы при запускании батника он копировал какой то системный файл\или себя ! До тех пор пока не закончится память на Жестком диске !
2. Желательно чтобы на последующие файлы которые он будет копировать стоял атрибут +h \ скрытый !
3. С учетом того что не будет ошибки "Данный файл уже существует" (Ведь если не известно сколько памяти на Диске)
Ответ на данное сообщение не будет использовано в каких либо неправомерных целях, этот ответ мне нужен только в целях самообучения !

в батниках нет цикла

expee
13.02.2010, 11:32
в батниках нет цикла
есть метки и goto, с помощью которых и организуются циклы.

_GOMER_
14.02.2010, 14:58
Это по - вашему система уравнений?
извиняюсь чуть чуть перепутал
вот помогите написать программу на делфи вычесляющу площадь S:

Площадь S http://s15.radikal.ru/i188/1002/55/0b3dfadf75e9.jpg (http://www.radikal.ru) под кривой http://i081.radikal.ru/1002/a4/059f740bdde1.jpg (http://www.radikal.ru) над отрезком [B, D], где z1,z2,z3 ― решение системы уравнений http://s005.radikal.ru/i210/1002/a2/8b82e4f76839.jpg (http://www.radikal.ru) , В ― точка локального минимума функции φ(x) = http://s48.radikal.ru/i120/1002/8a/7e81fe53e4e3.jpg (http://www.radikal.ru) ,
D ― точка ее локального максимума.
контрольный ответ S = 6,71 при С=5

Chaak
14.02.2010, 15:14
Через интеграл посчитай

KrabKN
14.02.2010, 18:28
с помещу указателя на массиве получить доступ к этому элементу и уменьщыть его элемент в массиве

на СИ

SHARA
14.02.2010, 19:44
с помещу указателя на массиве получить доступ к этому элементу и уменьщыть его элемент в массиве

на СИ
то есть, если в массиве n элементов, то после обращения к массиву, их становится n-1, я правильно понял, или нет?

nec
14.02.2010, 21:20
Обработать двухмерный числовой массив. Выполнить обмен данными с процедурой через параметр-переменную, параметр-значение.При одном обращении к процедуре передать одну строку или столбец матрицы.Подсчитать количество нулевых элементов в каждой непарной строке матрицы Е(6,6). Вывести количество нулевых элементов и номера соответствующих строк.

надо на паскале это сделать....это вообще как делать то? мож подкиньте идеи

KrabKN
14.02.2010, 21:23
то есть, если в массиве n элементов, то после обращения к массиву, их становится n-1, я правильно понял, или нет?

вот смотри
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - массив из элементов
я хочу поменять элемент 4 а замисть него написать 10
и так изменять лубое элемент

KrabKN
15.02.2010, 14:05
KrabKN,

вот так можно
# include <iostream>

int main () {
int a[] = {0,1,2,3,4,5,6,7,8,9};
int *p = a, pos, new_value;
cin >> pos >> new_value;
*(p+pos) = new_value;
for (int i =0; i< 10; i++){
cout << a[i];
}
return 0;
}

можеш обяснить всю программу
а зачкм здесь new_value и что оно дает?

SHARA
15.02.2010, 15:16
KrabKN,

вот так можно
# include <iostream>

int main () {
int a[] = {0,1,2,3,4,5,6,7,8,9};
int *p = a, pos, new_value;
cin >> pos >> new_value;
*(p+pos) = new_value;
for (int i =0; i< 10; i++){
cout << a[i];
}
return 0;
}
Ты забыл про пространство имен, компилятор не поймет что такое cout и cin
так что после заголовка, который подключает подсистему ввода\вывода С++ <iostream> надо написать
using namespace std;

можеш обяснить всю программу
а зачкм здесь new_value и что оно дает?

Обьявляется массив, содержащий 10 элементов целочисленного типа:
int a[] = {0,1,2,3,4,5,6,7,8,9};
затем обявляется указатель на это массив(указателю присваиваться адресс первого элемента массива):
int *p = a;
определяются две переменные
переменная pos определяет поцизую элемента в массиве. подлежащего замене
new_value - это переменая которая заменяет значение индекса pos, Например если мы хотим обменять индексы 5 и 6 то 5 это переменная pos, а 6 это new_value
cin >> pos >> new_value;
-воодим то что хотим поменять
*(p+pos) = new_value; осуществляем замену
for (int i =0; i< 10; i++){
cout << a[i]; -осуществляем отображения измененного массива
return 0; - сообщаем вызыающему процессу(операционной системе) что программа завершается корректно, без ошибок
Вроде все :)

SHARA
15.02.2010, 15:18
пока писал, уже обьяснили :)

Dosia
15.02.2010, 15:27
Обработать двухмерный числовой массив. Выполнить обмен данными с процедурой через параметр-переменную, параметр-значение.При одном обращении к процедуре передать одну строку или столбец матрицы.Подсчитать количество нулевых элементов в каждой непарной строке матрицы Е(6,6). Вывести количество нулевых элементов и номера соответствующих строк.

надо на паскале это сделать....это вообще как делать то? мож подкиньте идеи


program Obmen_dannimi;

var
intA,intB:integer;
Mass:array[1..6,1..6] of integer;
Param_zn:array[1..6] of integer;
Para:byte;

procedure Parametr_Znachenie(Param:array of integer);
var
intC:integer;
kolichestvo_nulevih_elementov:byte;
begin
kolichestvo_nulevih_elementov:=0;
inc(Para);
if Para mod 2 = 0 then begin
for intC:= 0 to 5 do
if Param[intC]=0 then inc(kolichestvo_nulevih_elementov);
writeln('stroka nomer ',Para,' soderzhit ',kolichestvo_nulevih_elementov,' nulevih(oi) elementa(ov)');
end;
end;

procedure Parametr_Peremennaia(var Param:array of integer);
var
intC:integer;
kolichestvo_nulevih_elementov:byte;
begin
kolichestvo_nulevih_elementov:=0;
inc(Para);
if Para mod 2 = 0 then begin
for intC:= 0 to 5 do
if Param[intC]=0 then inc(kolichestvo_nulevih_elementov);
writeln('stroka nomer ',Para,' soderzhit ',kolichestvo_nulevih_elementov,' nulevih(oi) elementa(ov)');
end;
end;

begin
Para:=0;
writeln('Zapolniaiu massiv');
randomize;
for intA:=1 to 6 do begin
for intB:=1 to 6 do begin
Mass[intA,intB]:=random(2);
write(Mass[intA,intB],' ');
end;
write(#13#10);
end;
writeln;
writeln('Ispolzuiu parametr - znachenie');
for intA:=1 to 6 do begin
for intB:=1 to 6 do begin
Param_Zn[intB]:=Mass[intA,intB];
end;
Parametr_Znachenie(Param_Zn);
end;
Para:=0;
writeln;
writeln('Ispolzuiu parametr - peremennuiu');
for intA:=1 to 6 do begin
for intB:=1 to 6 do begin
Param_Zn[intB]:=Mass[intA,intB];
end;
Parametr_Peremennaia(Param_zn);
end;

readln;
end.


Результат работы:

Zapolniaiu massiv
0 0 0 1 1 0
0 0 0 1 1 1
0 0 1 1 0 0
1 1 1 0 1 1
1 1 1 0 1 1
0 0 1 0 1 1

Ispolzuiu parametr - znachenie
stroka nomer 2 soderzhit 3 nulevih(oi) elementa(ov)
stroka nomer 4 soderzhit 1 nulevih(oi) elementa(ov)
stroka nomer 6 soderzhit 3 nulevih(oi) elementa(ov)

Ispolzuiu parametr - peremennuiu
stroka nomer 2 soderzhit 3 nulevih(oi) elementa(ov)
stroka nomer 4 soderzhit 1 nulevih(oi) elementa(ov)
stroka nomer 6 soderzhit 3 nulevih(oi) elementa(ov)

SHARA
15.02.2010, 15:45
Компилятор можно настроить, чтобы не использовать явное описание пространства имен стандартной библиотеки. Так что я ничего не забыл.

http://codepad.org/YRiqFmPf
просто я не думаю, что у KrabKN настроен таким образом компилятор
поэтому я и написал про простанство имен

InterLife
15.02.2010, 17:30
1) Ученики футбольной академии перед началом каждого учебного года группами проходят обследование в медицинском кабинете, одним из результатов которого является измерение размера обуви каждого ученика в группе. Необходимо найти минимальный размер обуви ученика в группе, превосходящий удвоенное значение среднего арифметического всех размеров обуви для учеников из этой группы. Если такого нет, то вывести -1. Известно, что хотя бы у двух учеников из группы разный размер обуви.
Формат входных данных

Файл input.txt содержит k (1<=k<=25) вещественных чисел — сведения о размере обуви каждого ученика в группе, записанные через пробел (перед первым числом пробела нет).
Формат выходных данных

Выведите в файл output.txt одно число без пробелов — искомый размер обуви ученика.

2) Есть несколько (не меньше трех) акробатов одинакового телосложения, которые выстраиваются в «живую» пирамиду. Каждый следующий уровень пирамиды, состоит из меньшего на единицу количества акробатов, нежели предыдущий. Если общее количество акробатов не позволяет построить правильную пирамиду с одним акробатом в самом верхнем ряду — берется максимально возможное число из доступных акробатов, а остальные не учитываются. Ноги акробатов находятся либо на полу, либо на плечах других акробатов. Так как при этом ноги должны быть на ширине плеч, то высота от ног до макушки головы каждого акробата (включая стоящих в самом нижнем ряду) становится на 4% меньше.
Формат входных данных

В файле input.txt находятся: количество акробатов n (3<=n<=100), рост акробата h (150<=h<=200) и расстояние от его плеч до макушки s (25<=s<=40) — целые числа, подаются на вход в консоли.
Формат выходных данных

Выведите в файл output.txt одно число без пробелов — высоту получившейся пирамиды, округленную до целого вниз.

Простите, может быть я неудачливая бесхребетная скотина, но мне нужно выучить до 25 числа c++ (я знаю php, так что это еще не ездец, но сложно, как секс с аллигатором) и решить две задачи. Буду признателен тому, кто напишет решения. Необязательно подробно пояснять ход решения и комментить, разберусь. Спасибо большое.

InterLife
15.02.2010, 22:46
Спасибо, попробую разобраться

KrabKN
16.02.2010, 19:47
Функция kol которая подсчитывает количество гласных в строке , передаваемых как параметр

На СИ

sebay
17.02.2010, 11:05
построить кубический сплайн(полином 3й степени, непрерывная вместе со своей первой и второй производной)удовлетворяющ й дополнительным условиям dif(f(a))=A dif^2(f(b))=B

SHARA
17.02.2010, 16:50
Функция kol которая подсчитывает количество гласных в строке , передаваемых как параметр

На СИ
http://forum.antichat.ru/threadnav122076-226-10.html

KrabKN
17.02.2010, 17:26
http://forum.antichat.ru/threadnav122076-226-10.html

#include <iostream.h>
int main()
{
char buf[] = "bcdfghklmnpqrstvwxyz";
char *str = new char [999];
cin>>str;
int count = 0;
for(int i = 0; str[i] != '\0'; i++)
{
for(int j = 0; buf[j] != '\0'; j++)
{
if(str[i] == buf[j])
{
count++; break;
}
}
}
cout << count << endl;
}

вот а как она будет выгледеть с функцыей kol?

Ins3t
17.02.2010, 17:35
2KrabKN, вот вам функция:

#include <iostream>
using namespace std;
int kol(char * str);
int main()
{
char *str = new char [999];
cin>>str;
cout<<kol(str);
}
int kol(char * str)
{
char buf[] = "bcdfghklmnpqrstvwxyz";
int count = 0;
for(int i = 0; str[i] != '\0'; i++)
{
for(int j = 0; buf[j] != '\0'; j++)
{
if(str[i] == buf[j])
{
count++; break;
}
}
}
return count;
}


Но вот эта программа крайне не корректна, да и написана с ошибками, которые могут превести неизвестно к чему. Да и ищет она не гласные, а согласные.

Могу предложить вам другой вариант (накидал по быстрому):


#include <iostream>
#include <string>
using namespace std;
int kol(string str);
int main(int argc, char * argv[])
{
string slovo;
cout<<"Vvedite slovo>";
cin>>slovo;
cout<<kol(slovo);
return 0;
}
int kol(string str)
{
string bukv = "AEIOUY";
int found = 0;
int i = 0;
int i2;
int c = bukv.size();
while(i < str.size())
{
i2 = 0;
while(i2 < c)
{
if(str[i] == bukv[i2])
{
found++;
}
i2++;
}
i++;
}
return found;
}

mr_walker
17.02.2010, 19:01
как работает эта программа? я в С оч.слаб... что будет на экране в результате работы программы? В самом коде могут быть ошибки...

#include<iostream.h>
int * sfirst_function(void);
int *isecond_function(void);
void main()
{int *pi=sfirst_function();isecond_function();
cout << "Znachennya virne?" << *pi;}
int * sfirst_function(void)
{int ilocal_to_first=11;
return &ilocal_to_first;}
int *isecond_function(void);
{int ilocal_to_second=44;
return &ilocal_to_f_second;
}


пишет: Declaration terminated incorrectly
что не так?

Ins3t
17.02.2010, 20:52
как работает эта программа? я в С оч.слаб... что будет на экране в результате работы программы? В самом коде могут быть ошибки...


пишет: Declaration terminated incorrectly
что не так?

В программе допущены ошибки.
Рабочий вариант:


#include<iostream.h>
int * sfirst_function(void);
int *isecond_function(void);
void main()
{
int *pi=sfirst_function();
isecond_function();
cout << "Znachennya virne?" << *pi;}
int * sfirst_function(void)
{
int ilocal_to_first=11;
return &ilocal_to_first;
}
int *isecond_function(void)
{
int ilocal_to_second=44;
return &ilocal_to_second;
}


Программа выведит сообщение: "Znachennya virne?"

NetSter
17.02.2010, 21:10
как работает эта программа? я в С оч.слаб... что будет на экране в результате работы программы? В самом коде могут быть ошибки...


пишет: Declaration terminated incorrectly
что не так?

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


#include <iostream>

int *sfirst_function(void);
int *isecond_function(void);

int * sfirst_function(void)
{
int ilocal_to_first=11;
return &ilocal_to_first;}

int *isecond_function(void)
{
int ilocal_to_second=44;
return &ilocal_to_second;
}
void main()
{
int *pi=sfirst_function();
printf("First Function = %d\n",*pi);
int *si= isecond_function();
printf("Second Function = %d\n",*si);
}


На экране надпись:
First Function =11
Second Function = 44

rankor777
17.02.2010, 21:20
int *sfirst_function(void);
int *isecond_function(void);

Зафига? Это надо объявлять, если собираешься экспортировать эти функции

int ilocal_to_first=11;
return &ilocal_to_first;
Так лучше не делать - локальные переменные удаляются из стека после возврата управления функцией, и не факт, что эта ячейка памяти не будет перезаписана до того, как вы это используете. Лучше передать возвращаемую переменную по значению, а не по ссылке

Sokolik
18.02.2010, 12:52
Нужно решить задачку на Си:

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

rankor777
18.02.2010, 13:08
char *trim(char *str)
{
int len = strlen(str); // строка должна быть с завершающим нулем!
int pos = 0;
char *result = new char[len];
ZeroMemory(result, len);
for ( int i = 0; i < len - 1; i++ ){
if ( memcmp(str[i], "0") != 0 ){
result[pos] = str[i];
pos++;
}
}
return result;
}


Писал по памяти, могут некоторые аргументы у функций отличаться, но смысл, я думаю понятен

Sokolik
18.02.2010, 13:20
char *trim(char *str)
{
int len = strlen(str); // строка должна быть с завершающим нулем!
int pos = 0;
char *result = new char[len];
ZeroMemory(result, len);
for ( int i = 0; i < len - 1; i++ ){
if ( memcmp(str[i], "0") != 0 ){
result[pos] = str[i];
pos++;
}
}
return result;
}


Писал по памяти, могут некоторые аргументы у функций отличаться, но смысл, я думаю понятен

не правильная функция-memcmp, zeromemory-identifier not found

rankor777
18.02.2010, 13:27
Замените условие цикла на for ( int i = 0; i < len - 1; i++ )
И подключите файлы string.h и windows.h

DrugS
18.02.2010, 15:04
привет!
Тема работы: Динамический список динамических списков
Язык: Delphi

Подскажите, что почитать или сам алгоритм описания данной структуры.

Спасибо.

piranjia
19.02.2010, 00:29
Огромная просьба Помогите пожалуйста на Borland C++ решить следующие задачки:
Задача 1. Написать программу для вычерчивания набора из N кривых, для которых определены параметрические уравнения:
x=x0 +(b-a)cosφ+acos⁡((b-a)φ/a)
x=y0 +(b-a)sinφ-asin⁡((b-a)φ/a)
Возьмите фиксированные значения a, b, соблюдая условия b>a, 0< φ<2π, b/a=8.
Задача 2. Разработать и реализовать алгоритм для отсечения частей линий, если окно задано в форме пятиугольника. (Алгоритм Коэна-Сазерленда)

NTFF
21.02.2010, 21:03
Вот ссылка на то что должно получится http://xmages.net/upload/1496d668.jpg
http://xmages.net/upload/151f94b2.png

{Programm for y(x)=sgrs a*x+b.}
program grafic;
uses crt,graph;
var
grminx,grminy,
grmaxx,grmaxy : integer;
a, b,
stepx,
minx,miny,
maxx,maxy : real;
flag : boolean;
punkt : integer;
s : string;
ercode : integer;


function pow(x,p:real):real;
begin
pow:=exp(ln(x)*p);
end;


function log10(x:real):real;
begin
log10:=ln(x)/ln(10);
end;


function grinit:boolean;
var
grdriver,
grmode,
ercode :integer;
begin
grinit := True;
grdriver:= Detect;
initgraph(grdriver,grmode,'C:\lang\bp\BGI');
ercode:=graphresult;
if ercode<>grok then
begin
writeln('error graphic:',grapherrormsg(ercode));
writeln('programm is stopped. ');
grinit := False;
end;
end;


function getgrx(x:real):integer;
begin
getgrx:=round((grmaxx-grminx)/(maxx-minx)*(x-minx))+grminx;
end;



function getgry(y:real):integer;
begin
getgry:=round((grmaxy-grminy)/(maxy-miny)*(y-miny))+grminy;
end;


function f(a,b,x:real):real;
begin
f:=sqrt(a*x+b);
end;

procedure GetMaxMinY(var miny : real; var maxy : real);
var
x,y : real;
begin

miny := f(a,b,minx);
maxy := f(a,b,minx);
x := minx+stepx;
repeat
y:=f(a,b,x);
if y<miny then miny:=y;
if y>maxy then maxy:=y;
x:=x+stepx;
until x>maxx;
end;


procedure FindXYAxes(var x : integer; var y:integer);
begin

if ((getgrx(0)>=grminx) and (getgrx(0)<=grmaxx)) then
x := getgrx(0)
else
x := grminx;


if ((getgry(0)<=grminy) and (getgry(0)>=grmaxy)) then
y := getgry(0)
else
y := grminy;
end;


procedure DrawMesh;
var
labelsx,labelsy,
blockx,blocky,
tens : real;
grx,gry : integer;
s : string;
x,y : real;
axisx,axisy : integer;
begin

setcolor(lightgreen);
rectangle(grminx,grminy,grmaxx,grmaxy);
rectangle(grminx-1,grminy-1,grmaxx+1,grmaxy+1);

labelsx:=15;
labelsy:=15;


blockx:=(maxx-minx)/labelsx;

tens:=pow(10,round(log10(blockx)));
blockx:=int(blockx/tens+1)*tens;


blocky:=(maxy-miny)/labelsy;

tens:=pow(10,round(log10(blocky)));
blocky:=int(blocky/tens+1)*tens;


settextstyle(SmallFont,HorizDir,2);


FindXYAxes(axisx,axisy);


x:=int(minx/blockx)*blockx;

repeat

grx:=getgrx(x);

if ((grx>=grminx) and (grx<=grmaxx)) then
begin

setcolor(darkgray);
line(grx,grminy,grx,grmaxy);

setcolor(lightgreen);
line(grx,axisy-2,grx,axisy+2);

setcolor(yellow);
str(x:5:2,s);
outtextxy(grx+2,axisy+2,s);
end;
x:=x+blockx;
until x>maxx;


y:=int(miny/blocky)*blocky;




repeat
gry:=getgry(y);


if ((gry<=grminy) and (grx>=grmaxy)) then
begin

setcolor(darkgray);
line(grminx,gry,grmaxx,gry);

setcolor(lightgreen);
line(axisx-2,gry,axisx+2,gry);


setcolor(yellow);
str(y:5:2,s);
outtextxy(axisx+2,gry+2,s);
end;
y:=y+blocky;
until y>maxy;

end;

procedure DrawAxes;
var
s : string;
axisx, axisy : integer;
begin

FindXYAxes(axisx,axisy);

setfillstyle(0,0);

bar(getgrx(0)+1,getgry(0)+1,getgrx(0)+40,getgry(0) +15);
outtextxy(getgrx(0)+4,getgry(0)+2,'0');


setcolor(white);
line(getgrx(minx)-20,axisy,getgrx(maxx)+20,axisy);


moveto(getgrx(maxx)+20,axisy);
linerel(-10,2); linerel(3,-2); linerel(-3,-2); linerel(10,2);


outtextxy(getgrx(maxx)+15,axisy-10,'x');


line(axisx,getgry(miny)+20,axisx,getgry(maxy)-20);


moveto(axisx,getgry(maxy)-20);
linerel(2,10); linerel(-2,-3); linerel(-2,3); linerel(2,-10);

outtextxy(axisx-15,getgry(maxy)-10,'y');

str(a:4:2,s);
s := ' y(x)='+s+'*sin(x)) - sinusoid';
outtextxy(GetMaxX div 2 - 100 ,GetMaxY-25,s);
end;

procedure DrawGraphic;
var
first : boolean;
grx,gry : integer;
x,y : real;
begin

setcolor(LightBlue);
first:=true;
x:=minx;

repeat
y:=f(a,b,x);

grx:=getgrx(x);
gry:=getgry(y);
if first then
begin
moveto(grx,gry);
putpixel(grx,gry,getcolor);
first:=false;
end
else lineto(grx,gry);
x:=x+stepx;
until x>maxx;
end;

BEGIN
flag := false;
repeat
clrscr;
writeln(' --== MENU ==--');
writeln('1. Input parameter function');
writeln('2. Draw graph function');
writeln('3. Exit');
writeln;
writeln('Choose point menu -> ');
readln(punkt);
case punkt of

1:begin
clrscr;
repeat
repeat
writeln('Input min value x (radian) -> ');
readln(s);
val(s,minx,ercode);
if (ercode <> 0) then
writeln('Error min value x!');
until (ercode=0);
repeat
writeln('Input max value x (radian) -> ');
readln(s);
val(s,maxx,ercode);
if (ercode <> 0) then
writeln('Error max value x !');
until (ercode=0);
if (minx>=maxx) then
writeln('Min value x must be smaller max!');
until (minx<maxx);


repeat
writeln('Input value a -> ');
readln(s);
val(s,a,ercode);
if (ercode <> 0) then
writeln('Error value a!');
until (ercode=0);
flag := true;

repeat
writeln('Input value b -> ');
readln(s);
val(s,a,ercode);
if (ercode <> 0) then
writeln('Error value b!');
until (ercode=0);
flag := true;
end;


2: begin

if (flag) then
begin
if (grinit) then
begin
grminx:=48;
grmaxx:=getmaxx-48;
grminy:=getmaxy-48;
grmaxy:=24;
stepx:=(maxx-minx)/150;
GetMaxMinY(miny,maxy);
DrawMesh;
DrawAxes;
DrawGraphic;
readkey;
closegraph;
end
end
else
begin
writeln('You need at the fist choose point 1 for value function!');
readkey;
end;
end;
end;
until (punkt=3);
END.

qwert135
22.02.2010, 01:10
Народ,помогите с лабой плиз.Задание такое: дан какой-то текстовый файл в котором записано предложение; надо чтобы прога открывала этот файл,в каждом слове заменяла первую букву на последнюю и записывала преобразованое предложение в новый текстовый файл.Язык-паскаль.Заранее спасибо:)

.::BARS::.
22.02.2010, 07:43
9. Используя редактор VI, написать программу на языке СИ и запустить ее на трансляцию в фоновом режиме.
------------
cобственно покажите элементарный кусок программы на си для linux

Ins3t
22.02.2010, 09:22
#include <stdio.h>

int main( int argc,char * argv[] ) {
printf( "linux forever!" );
return 0;
}

gcc proga.c -o proga

B1t.exe
23.02.2010, 14:42
ребята, не совсем лабораторная работа, но все же из этой серии:
Вот скин, там надо понять где ошибка и какую атаку можно принимать при таком раскладе.. внизу есть варинатов ответ.
Я бы хотел, чтоб обяснили что к чему:
http://s43.radikal.ru/i102/1002/41/dec41bf8d1db.jpg

razb
23.02.2010, 14:58
C) т.к. в sql запрос передаются переменные от юзера и нечем не фильтруются.

B1t.exe
23.02.2010, 16:32
C) т.к. в sql запрос передаются переменные от юзера и нечем не фильтруются.
+3. спасибо. (на самом деле это был правильный ответом)
а можно по подробнее ?
проблема именно в этом строке ?
http://s006.radikal.ru/i215/1002/92/6286261a23d1.jpg
И там можно прописать что хочешь и запрос будет выполнятся ? тогда почему это не XSS ?

Gifts
23.02.2010, 18:50
B1t.exe Потому что в этом коде нет вывода на экран данных, которые можно было бы подменить, а есть только обход авторизации, через подмену параметров

fenixelite
23.02.2010, 21:01
qwert135,
Вот ссылка, там есть исходник, правда он не совсем рабочий, но если есть желание, то доведешь его до ума )) http://forum.sources.ru/index.php?showtopic=179743.

ZagZag
25.02.2010, 14:45
Подскажите как в турбо-паскале нарисовать линию под определенным углом.
Переход в граф. режим и все остальное уже сделал, а линия рисуется совсем не так, как это должно быть по здравой логике.
Line(200, 200, 200 + Trunc(120 * cos(45)), 200 + Trunc(120 * sin(45)));
200,200 - центр
120 - радиус
45 - угол
все верно, кроме угла

XimiK69
26.02.2010, 00:12
SHARA, а зачем вы после while(*p1);
точку с запятой поставили? вы же хвост от тела оторвали и зациклили программу)

XimiK69
26.02.2010, 00:54
SHARA, не вижу смысла удалять было сообщение, на ошибках учатся, может ваше сообщение помогло бы другим ребятам, изучающих С/С++ (((

SHARA
26.02.2010, 02:15
SHARA, а зачем вы после while(*p1);
точку с запятой поставили? вы же хвост от тела оторвали и зациклили программу)
да я понял, опечатка, я поэтому сообщение и удалил, но все равно спасибо

SHARA
26.02.2010, 02:23
Вот не догоняю, в качестве упражнения
вот код

//Рализация функции my_strcpy
#include<iostream>
#include<cstring>
using namespace std;
void my_strcpy(char *str1, char *str2);
int main()
{
setlocale(LC_ALL,"Russian");
char s1[80];
char s2[80];
char *p,*q;
p=s1;
q=s2;

strcpy(s2,"Мне нравится С++");
my_strcpy(p,q);
cout<<s1;
return 0;
}
void my_strcpy(char *str1, char *str2)
{
while(*str2)
str2++;
while(*str1){
*str1=*str2;
str1++;
str2++;
}


}

В начале кладу строку в массив s2, а потом пытаюсь скопривароть строку из s2 в s1
и отобразить в s1(s1 вроде как пустой массив) Все делается через указатели.
Программа компилируется, но строка из массива s1 не отображается.

BelAff
26.02.2010, 04:20
Блин,нужно срочно решить четыре задачки в Паскале,с блок схемами....
Помогите ребят,а я вам ещё и денежек(правда немного,но всё же)подкину.
Даны два действительных + числа.Найти среднее арифмотическое,сумму,разно сть,и произведение этих чисел.

Циклическое
Даны натуральные n,m.Получить все меньшие n натуральные числа,сумма делителей которых равна m.


Массивы
Дан целочисленный массив размера N.определить max кол-во его одинаковых элементов.


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

SHARA
26.02.2010, 10:45
Вот не догоняю, в качестве упражнения
вот код

//Рализация функции my_strcpy
#include<iostream>
#include<cstring>
using namespace std;
void my_strcpy(char *str1, char *str2);
int main()
{
setlocale(LC_ALL,"Russian");
char s1[80];
char s2[80];
char *p,*q;
p=s1;
q=s2;

strcpy(s2,"Мне нравится С++");
my_strcpy(p,q);
cout<<s1;
return 0;
}
void my_strcpy(char *str1, char *str2)
{
while(*str2)
str2++;
while(*str1){
*str1=*str2;
str1++;
str2++;
}


}

В начале кладу строку в массив s2, а потом пытаюсь скопривароть строку из s2 в s1
и отобразить в s1(s1 вроде как пустой массив) Все делается через указатели.
Программа компилируется, но строка из массива s1 не отображается.
Ошибку нашел сам .
Сообщение удалять не буду, как просил Химик69, в предыдущем посте

SHARA
26.02.2010, 11:30
Вопрос следующего характера:
вот пример:

#include<iostream>
#include<cstdio>
using namespace std;
void my_strcpy(char *str1);

char s2[80];
int main()
{
setlocale(LC_ALL,"Russian");
char s1[80];
cout<<"Введите строку: ";
gets(s1);
my_strcpy(s1);
cout<<s2;
return 0;
}
void my_strcpy(char *str1)
{

char *p;
p=s2;
while(*str1)
{
*p=*str1;
p++;
str1++;
}
}

Включаю поддержку русского языка в консоле: setlocale(LC_ALL,"Russian");
затем воожу строку на русском языке.
Устанавливаю указатель на это строку, затем содержимое одного символьного массива копирую в глобальный симольный массив, операции осуществляются через указатели
Но потом когда строка отображается в виде не понятных символов.
Если же я строку введу на английском, то все отображается корректно.
Интересуюсь исключительно ради интереса

XimiK69
26.02.2010, 20:08
Можно воспользоваться функцией OemToCharA(); подключив библиотеку #include <windows.h>
cout<<"Введите строку: ";
gets(s1);
OemToCharA(s1,s1);
my_strcpy(s1)

Травников
26.02.2010, 20:13
Но потом когда строка отображается в виде не понятных символов.
Если же я строку введу на английском, то все отображается корректно.
Интересуюсь исключительно ради интереса

Используй
setlocale(LC_ALL, "Russian.1251" );//CP-1251
//ещё можешь использовать UTF-8

Указывай кодировку,которую используешь

AntiHacker7
26.02.2010, 23:33
Друзья! Всем привет! Завтра информатика в институте, начали изучать Delphi, помогите написать уравнение в 2*x^2-12*x+3 в "console application"

Fearlesslord
27.02.2010, 00:05
Пожалуйста помогите написать прогу на С++:

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

SHARA
27.02.2010, 00:14
XimiK69 и Травников, большое спасибо

DJeFRY_RASH
27.02.2010, 12:21
Народ, помогите реализовать идею на Delphi !

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

Dosia
27.02.2010, 13:03
procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label1.Caption := inttostr(length(edit1.SelText));
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
label1.Caption := inttostr(length(edit1.SelText));
end;

DJeFRY_RASH
27.02.2010, 13:10
Dosia, респект, спасибо большое за помощь !

bl00m
28.02.2010, 12:44
Необходимо написать регулярное выражение выполняющее парсинг строки вида:
+ОБ("90-02";"43=(01-04%,!01-04-04%,!01-04-03-01%,!01-04-06-01%)";"20-01";"47=02-03%;111=!06-01%")+ОБ("90-02";"43=(01-04%,!01-04-04%,!01-04-03-01%)";"23";"47=02-03%;111=!06-01%")-ОБ("90-02";"43=(01-04%,!01-04-04%,!01-04-03-01%)";"23";"47=02-03%;111=!06-01%")
на строки:
+ОБ("90-02";"43=(01-04%,!01-04-04%,!01-04-03-01%,!01-04-06-01%)";"20-01";"47=02-03%;111=!06-01%")+ОБ("90-02";"43=(01-04%,!01-04-04%,!01-04-03-01%)";"23";"47=02-03%;111=!06-01%")
+ОБ("90-02";"43=(01-04%,!01-04-04%,!01-04-03-01%)";"23";"47=02-03%;111=!06-01%")
-ОБ("90-02";"43=(01-04%,!01-04-04%,!01-04-03-01%)";"23";"47=02-03%;111=!06-01%")
(формат формул Excel)
Платформа .NET

}{AS 99
28.02.2010, 22:16
Срочна нужна помощь,вообщем сестре в универе такое задали:

If(1)
Даны два целых числа: А,В. Проверить истинность высказывания:»Числа А и В имеют одинаковую четность,»,
If(2)
Даны три переменные вещественного типа: А,В,С. Если их значения упорядочены по возрастанию или убыванию удвоить их, в противном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных А,В,С.
С помощью программы Dev -C++.

Badanga
01.03.2010, 15:56
с++
нужно определить размер файла.
и скопировать его в буфер.
помогите плз.

BastardFromHell
01.03.2010, 16:02
ну посчитай размер буфера :)
//как-то так например
#include <cstdio>
#include <stddef.h>

int main(void)
{
ptrdiff_t diff;
int array[50];
for(int i = 0; i<50; i++)
{
array[i]=i+1;
}
printf("first: %d, last: %d, firstptr: %p lastptr: %p\n",array[0], array[49], array, &array[49] );
diff = &array[49] - &array[0];
printf("arraysize is: %d , diff: %p, sizeof(int): %d", diff, diff, sizeof(int));
return 0;
}

Badanga
01.03.2010, 16:41
ооооооооооооооо
большое спасибо

Napas
01.03.2010, 16:51
всем привет, выручите плиз
есть лаба по си:
из введеннного текста распечатать слова в порядке убывания частоты повторения.
вот накодил прогу, которая подсчитывает сколько раз они повторяются, а как дальше их вывести в порядке убывания - не могу сообразить =(

#include <stdio.h>
#include <conio.h>
#include <string.h>
main ( )
{ char s[5][20];
int i=0 ,n=1,v, s2[5];
printf (" Vvedite tekst: \n");
while ( i<5 )
{ gets (s[i]);
i++; }
i=0;
do { n=0;
v=0;
do{
if(strcmp(s[i],s[v])==0) n+=1;v++;
}
while (v<5);
s2[i]=n;
i++;}
while (i<5) ;


printf (" Sootv. usloviy\n");
for (i=0; i< 5; i++) printf ("%d\n",s2[i]);
getch();
return 0;
}

aydar
01.03.2010, 19:57
Ребят кто может помочь с удаление подстроки в строке, может у когото код завалялся.

Строка: Пальцы его мнут и мнут глину. Удалить: "и мнут"

Kaimi
01.03.2010, 20:28
Ребят кто может помочь с удаление подстроки в строке, может у когото код завалялся.

http://www.cplusplus.com/reference/clibrary/cstring/strstr/

Внизу пример

nec
01.03.2010, 23:27
Паскалька...


Задача: В символьной строке определить все слова, которые начинаются и заканчиваются одинаковым символом. Через функцию

Она через процедуру

program p20;
uses crt;
var a:string;
procedure he(b:string);
var
i:integer;
f:boolean;
a1,a2:integer;
begin
f:=false;
for i:=1 to length(a) do
begin
if (a[i]<>' ') and (not f) then
begin
f:=true;
a1:=i;
end;
if (a[i]=' ') and (f) then
begin
f:=false;
a2:=i;
if (copy(a,a1,1)=copy(a,a2-1,1)) then
writeln(copy(a,a1,a2-a1));
end;
end;
end;
begin
clrscr;
write('Vvedite stroky (Enter - gotovaya stroka):'); readln(a);
if a='' then a:='ABBA it`s then !!!best!!! pop group!';
writeln('---'); writeln(a);
writeln('---'); TextColor(15); he(a);
end.

Вторая
Если в введенном слове первый и последний символы совпадают, то переменной t присвоить значение true, иначе false. То же Функция

Нужно что бы через функцию.

4p3
02.03.2010, 00:57
всем привет, выручите плиз
есть лаба по си:
из введеннного текста распечатать слова в порядке убывания частоты повторения.
вот накодил прогу, которая подсчитывает сколько раз они повторяются, а как дальше их вывести в порядке убывания - не могу сообразить =(


Я правильно понимаю, что ты просишь на ввод 5 слов?

Очень трудно читать код. Оставь, пожалуйста, несколько комментариев.

Napas
02.03.2010, 07:33
2 4p3
необязательно 5 слов, это я для примера взял, нужно, чтобы программа в любом тексте находила повторяющиеся слова, и выводила их в порядке убывания частоты повторения. сорри за быдлокод :)

SHARA
02.03.2010, 11:38
вывести в порядке убывания - не могу сообразить =(
что именно в порядке выбывания, что-то я не догнал

fenixelite
02.03.2010, 12:23
SHARA, повторяющиеся слова.

4p3
02.03.2010, 12:46
2 4p3
необязательно 5 слов, это я для примера взял, нужно, чтобы программа в любом тексте находила повторяющиеся слова, и выводила их в порядке убывания частоты повторения. сорри за быдлокод :)
Код на С++ приемлем?

Napas
02.03.2010, 12:54
ога, буду очень благодарен =)

4p3
02.03.2010, 16:13
ога, буду очень благодарен =)
#include <QtCore/QCoreApplication> // консольное приложение под Qt
#include <iostream> // потоки I/O
#include <algorithm> // функции алгоритмов
#include <cstdlib> // system
#include <string> // строковый класс
#include <vector> // класс контейнера
#include <functional> // Нужны предикаты
#include <map>
using namespace std;

// этот класс отсортирует нам массив по частотам
class sorting_by_freq: public binary_function<string,string,bool>
{
map<string,int> &m;
public:
sorting_by_freq(map<string,int> &x) : m(x) {};
bool operator()(const string &x, const string&y) const
{
return m[x] > m[y];
}
};

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv); // вызываем консоль
vector<string> vec; // объявляем контейнер строк. Двумерный массив.

// Тестовые данные в разном порядке
vec.push_back("lol");
vec.push_back("over");
vec.push_back("lol");
vec.push_back("lol");
vec.push_back("over");
vec.push_back("hello");

// Для начала сортируем вектор
sort(vec.begin(), vec.end(), std::less<string>());

// Нужно выделить уникальные элементы, сделаем в другом векторе
vector<string> holder;
holder = vec;
// Находим уникальные, удаляем повторения
holder.erase(unique(holder.begin(), holder.end()), holder.end());
// Поглядим, что у нас в holder храниться
for (unsigned int i = 0;i < holder.size();++i)
cout << holder[i] << endl;

// Начинаем считать частоты. Определим массив типа (слово) -> (количество вхождений)
map<string, int> m;
for (unsigned int i = 0;i < holder.size();++i)
m[holder[i]] = count(vec.begin(), vec.end(), holder[i]);

// сортируем слова по частотам, третий параметр - условие сортировки
sort(vec.begin(), vec.end(), sorting_by_freq(m));
// выводим
for (unsigned i = 0;i < vec.size();++i)
cout << vec[i] << endl;
// пауза
system("pause");
return 0; // уходим
}

criptic
02.03.2010, 22:02
Ребят, сложновато для меня((

Помогите написать программу на Си для Вычисления абсолютной и относительной погрешности

Очень нужно. Спасибо заранее

criptic
02.03.2010, 22:18
Ребят, нужно срочно, помогите плиз)

}{AS 99
02.03.2010, 22:25
If(1)
# include <iostream>

int main() {
int a,b;
std::cin >> a >> b;
std:: cout << ((a+b)%2 ? "Different ":"Same ") << "parity\n";
return 0;
}

If(2)
# include <iostream>

int main() {
double a,b,c;
std :: cin >> a >> b >> c;
(a > b ^ b > c ) ? (a*=-1, b*=-1,c*=-1):(a*=2,b*=2,c*=2);
std :: cout << a << b << c;
return 0;
}


можна в скомпилированном варианте?

criptic
02.03.2010, 22:30
да

}{AS 99
02.03.2010, 22:44
зальешь на сервер ссыль кинешь в скомпилированном виде...

criptic
02.03.2010, 22:54
int main() {
double a,b,c;
std :: cin >> a >> b >> c;
(a > b ^ b > c ) ? (a*=-1, b*=-1,c*=-1):(a*=2,b*=2,c*=2);
std :: cout << a << b << c;
return 0;
}


Три числа вводятся, зачем?

NTFF
03.03.2010, 18:27
Помогите с лабораторной на списки
Разработать справочник пассажирских поездов с полями: номер поезда, станции отправления и назначения, время в дороге, категория поезду. Реализовать подпрограммы поиска: 1) по станциям отправления и назначения, 2) по категории поезду.

4p3
03.03.2010, 18:33
Помогите с лабораторной на списки
Разработать справочник пассажирских поездов с полями: номер поезда, станции отправления и назначения, время в дороге, категория поезду. Реализовать подпрограммы поиска: 1) по станциям отправления и назначения, 2) по категории поезду.

Какие именно проблемы возникли?

NTFF
03.03.2010, 20:10
не знаю как ее написать, преподаватель заболел и ниче не рассказывал по теме, а другой требует тип я ничего не знаю мне над результат. вот и прошу вас чтоб мне помогли

4p3
03.03.2010, 20:19
С указателями когда-то работал? Знание в структурах, классах есть?

NTFF
03.03.2010, 20:33
не знаю как ее написать, преподаватель заболел и ниче не рассказывал по теме, а другой требует тип я ничего не знаю мне над результат. вот и прошу вас чтоб мне помогли

NTFF
03.03.2010, 20:50
неа я ток начинающий, и то не все понимаю, я не программист, мы простые экономисты.... :mad:

4p3
03.03.2010, 23:18
неа я ток начинающий, и то не все понимаю, я не программист, мы простые экономисты.... :mad:

Раз такое дело, набыдлокодю для тебя.

NTFF
03.03.2010, 23:35
4p3


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

4p3
03.03.2010, 23:43
4p3


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

Уточни, пожалуйста, какой список должен быть: двунаправленный, однонаправленный? Кольцевой?

NTFF
03.03.2010, 23:59
я не знаю что ты имеешь ввиду, но должна она быть типа вот такой программы

program Records;
uses
crt, strings;
const
max = 100; {максимальное допустимое количество записей в массиве}
type
{Тип данных для описания книги}
TBook = record
name : string[40]; {название}
author : string[20]; {автор}
style : string[20]; {жанр}
tom : byte; {количество томов}
year : word; {год выпуска}
end;

{Тип данных "Каталог книг" - массив из 100 книг}
TBooks = array [1..max] of TBook;

{Процедура рисование окна без рамки.
Вх.данные:
(x1,y1) - координаты верхнего левого угла окна,
(x2,y2) - координаты нижнего правого угла окна,
tc - цвет текста,
c - цвет фона окна}
procedure SngWindow(x1,y1,x2,y2,tc,c : byte);
begin
window(x1,y1,x2,y2);
textbackground(c);
textcolor(tc);
clrscr;
end;

{Процедура рисование окна с рамкой шириной в 1 символ.
Вх.данные:
(x1,y1) - координаты верхнего левого угла окна,
(x2,y2) - координаты нижнего правого угла окна,
tc - цвет текста,
c1 - цвет рамки,
c2 - цвет фона окна}
procedure DblWindow(x1,y1,x2,y2,tcolor, c1, c2 : byte);
begin
window(x1,y1,x2,y2);
textbackground(c1);
clrscr;
window(x1+1,y1+1,x2-1,y2-1);
textbackground(c2);
textcolor(tcolor);
clrscr;
end;

{Функция для отображения главного меню и выбора одного из его пунктов.
Функция возвращает значение от 1 до 5.}
function Menu : byte;
var
punkt : byte; {номер выбранного пункта меню}
er : integer; {код ошибки при преобразовании строки в число}
s : string; {строка для проверки вводимого номера пункта меню}
begin
{Закрасить весь экран черным цветом}
SngWindow(1,1,80,25,WHITE,BLACK);
{Нарисовать рабочее окно}
SngWindow(1,6,80,25,WHITE,BLUE);
{цикл выполняется до тех пор, пока пользователь не введет число от 1 до 5}
repeat
{Нарисовать окно для главного меню}
DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE);
writeln;
write(' 1.Добавить 2.Удалить 3.Печать 4.Поиск 5.Выход');
readln(s); {ввод номера пункта меню}
val(s,punkt,er);
until (er=0) and (punkt>=1) and (punkt<=5);
Menu := punkt; {возврат значения функции}
end;
{Функция для отображения подменю для поиска и выбора одного из его пунктов.
Функция возвращает значение от 1 до 4.}
function SubMenu : byte;
var
punkt : byte; {номер выбранного пункта меню}
er : integer; {код ошибки при преобразовании строки в число}
s : string; {строка для проверки вводимого номера пункта меню}
begin
{Закрасить весь экран черным цветом}
SngWindow(1,1,80,25,WHITE,BLACK);
{Нарисовать рабочее окно}
SngWindow(1,6,80,25,WHITE,BLUE);
{цикл выполняется до тех пор, пока пользователь не введет число от 1 до 4}
repeat
{Нарисовать окно для главного меню}
DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE);
writeln;
write(' 1.Поиск по названию 2.Поиск по автору 3.Поиск по году 4.Выход');
readln(s); {ввод номера пункта меню}
val(s,punkt,er);
until (er=0) and (punkt>=1) and (punkt<=4);
SubMenu := punkt; {возврат значения функции}
end;

{Процедура добавления книги в каталог книги.
Книга добавляется в конец каталога.
Вх.данные:
mas - каталог книг;
n - количество книг в каталоге;
size - максимальное возможное количество книг в каталоге;
Вых.данные:
если каталог полностью еще не заполнен, то в него будет добавлена
книга и n увеличится на 1, в противном случае - книга не добавляется.
mas - каталог книг;}
procedure AddRecord(var mas : TBooks; var n : byte; size : byte);
var
s : String; {строка для ввода числовых значений}
er : integer; {код ошибки при преобразовании строки в число}
begin
{проверка: есть ли еще место для новой книги в каталоге}
if (n+1 <= size) then
begin
inc(n); {увеличение количества книг в каталоге}
{ввод названия, автора и жанра книги}
write('Название книги =>'); readln(mas[n].name);
write('Автор =>'); readln(mas[n].author);
write('Жанр =>'); readln(mas[n].style);
{ввод количества томов (>0)}
repeat
write('Количество томов =>');
readln(s);
val(s,mas[n].tom,er);
until (er=0) and (mas[n].tom>0);
{ввод года издания (в диапазоне [1900;2008])}
repeat
write('Год издания =>');
readln(s);
val(s,mas[n].year,er);
until (mas[n].year >= 1900) and (mas[n].year<=2008);
writeln('Книга добавлена в каталог!');
end
else writeln('Недостаточно места в каталоге!');
end;

{Процедура печати информации о книге под номером i в каталоге}
procedure PrintRecord(var mas : TBooks; i : integer);
begin
write(i:3);
with mas[i] do
begin
write(name:23); write(author:20);
write(style:10); write(tom:10);
write(year:12);
writeln;
end;
end;

{Процедура печати содержимого всего каталога.
Вх.данные:
mas - каталог книг,
n - количество книг в каталоге}
procedure Print(var mas : TBooks; n : integer);
var
i : integer; {номер книги в каталоге}
begin
writeln('#':3,'Название':23,'Автор':2 0,'Жанр':10,'Тома':10,'Год издания':12);
for i:=1 to n do
PrintRecord(mas,i);
end;

{Процедура удаления книг из каталога под названием bname.
Вх.данные:
mas - каталог книг,
n - количество книг в каталоге,
bname - название книг, которые необходимо удалить из каталога
Вых.данные:
если в каталоге имеются книги под название bname информация о
них будет распечатана и они будут удалены из каталога и
количество книг в каталоге n уменьшиться на количество удаленных книг;
если в каталоне нет книг под заданным названием на экран
не будет выводиться информация о книгах.}
procedure DelRecordByName(var mas : TBooks; var n : byte; bname : string);
var
i,j : integer; {номера книг в каталоге}
begin
writeln('#':3,'Название':23,'Автор':2 0,'Жанр':10,'Тома':10,'Год издания':12);
{цикл для просмотра всех книг каталога}
for i:=1 to n do
begin
with mas[i] do
{книга под номером i имеет название bname,
следовательно ее необходимо удалить из каталога}
if (name = bname) then
begin
PrintRecord(mas,i); {печать информации об удаляемой книге}
{цикл для смещения книг на одну позицию влево для
удаления книги из каталога}
for j:=i+1 to n do
mas[j-1] := mas[j];
{количество книг в каталоге уменьшилось на 1}
dec(n);
end;
end;
end;

{Процедура поиска книг по названию.
Вх.данные:
mas - каталог книг;
n - количество книг в каталоге;
bname - название книги, по которому необходимо осуществлять поиск книг;
Вых.данные: на экране монитора в табличном виде распечатается информация о
книгах с названием bname.}
procedure FindByName(var mas : TBooks; n : integer; bname : string);
var
i : integer; {номер книги}
begin
writeln('#':3,'Название':23,'Автор':2 0,'Жанр':10,'Тома':10,'Год издания':12);
{просмотр всех книг в каталоге}
for i:=1 to n do
with mas[i] do
{название книги совпадает с заданным названием bname}
if name=bname then PrintRecord(mas,i);
end;

{Процедура поиска книг по автору и жанру.
Вх.данные:
mas - каталог книг;
n - количество книг в каталоге;
ba - автор книги;
bst - жанр книги;
Вых.данные: на экране монитора в табличном виде распечатается информация о
книгах, которые написал автор ba в жанре bst.}
procedure FindByAuthor(var mas : TBooks; n : integer; ba, bst : string);
var
i : integer; {номер книги}
begin
writeln('#':3,'Название':23,'Автор':2 0,'Жанр':10,'Тома':10,'Год издания':12);
{просмотр всех книг в каталоге}
for i:=1 to n do
with mas[i] do
{автор книги и жанр совпадают с заданными автором ba и жанром bst}
if (author=ba) and (style=bst) then PrintRecord(mas,i);
end;

{Процедура поиска книг по году издания.
Вх.данные:
mas - каталог книг;
n - количество книг в каталоге;
[a,b] - период издания книг;
Вых.данные: на экране монитора в табличном виде распечатается информация о
книгах, которые были изданы в период годов от а до b.}
procedure FindByYear(var mas : TBooks; n : integer; a, b : word);
var
i : integer; {номер книги}
begin
writeln('#':3,'Название':23,'Автор':2 0,'Жанр':10,'Тома':10,'Год издания':12);
{просмотр всех книг в каталоге}
for i:=1 to n do
with mas[i] do
{год издания книги находиться в диапазоне от а до b}
if (a<=year) and (year<=b) then PrintRecord(mas,i);
end;

var
b : TBooks; {каталог книг}
n : byte; {количество книг в каталоге}
punkt : byte; {номер пункта меню}
subpunkt : byte; {номер подпункта в пункте меню Поиск}
bookname, {название книги}
a, {автор книги}
st : string; {жанр книги}
y1,y2 : word; {диапазон годов издания книг}
s : string; {строка для ввода числовых значений}
er : integer; {код ошибки при переводе строки в число}

begin
n := 0; {в каталоге нет книг}
SngWindow(1,1,80,25,WHITE,BLACK);
repeat
punkt:= Menu; {выбор пункта меню}
case (punkt) of
1:begin {пункт Добавление книги}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' ДОБАВЛЕНИЕ КНИГИ В КАТАЛОГ');
AddRecord(b,n,max); {добавление книги в каталог b}
readkey;
end;
2:begin {пункт Удаление книги}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' УДАЛЕНИЕ КНИГ ПО НАЗВАНИЮ');
{Задание значения ключа - название книги}
write('Название книги =>');
readln(bookname);
{удаление из каталога книг по названию книги}
DelRecordByName(b,n,bookname);
readkey;
end;
3:begin {печать каталога книг}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' КАТАЛОГ КНИГ');
Print(b,n); {печать в табличном виде информации о книгах в каталоге}
readkey;
end;
4:begin {пункт Поиск книг}
repeat
subpunkt := SubMenu; {выбор пункта меню по поиску книг}
case (subpunkt) of
1:begin {пункт Поиск по названию книги}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' КНИГИ ПО НАЗВАНИЮ ');
{задание ключа поиска по названию книги}
write('Название книги =>');
readln(bookname);
{поиск книг в каталоге b по названию bookname}
FindByName(b,n,bookname);
readkey;
end;
2:begin {пункт Поиск по автору и жанру}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' КНИГИ ПО АВТОРУ И ЖАНРУ');
{задание ключа поиска по автору}
write('Автор книги =>');
readln(a);
{задание ключа поиска по жанру}
write('Жанр книги =>');
readln(st);
{поиск книг в каталоге b по автору и жанру}
FindByAuthor(b,n,a,st);
readkey;
end;
3:begin {поиск по году издания}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' КНИГИ ПО ГОДУ ИЗДАНИЯ ');
{цикл задания ключа поиска по году издания}
repeat
{задание ключа поиска - минимальный год}
repeat
write('Минимальный год =>');
readln(s);
val(s,y1,er);
until (er=0) and (y1>=1900); {год издания должен быть >= 1900}
{задание ключа поиска - максимальный год}
repeat
write('Максимальный год =>');
readln(s);
val(s,y2,er);
until (er=0) and (y2<=2008); {год издания должен быть <= 2008}
until (y1<y2);
{поиск книги по году издания [y1,y2] в каталоге b}
FindByYear(b,n,y1,y2);
readkey;
end;
end;
until (subpunkt = 4); {выход из подменю поиска при выборе пункта 4}
end;
end;
until (punkt = 5); {выход из программы при выборе пункта меню 5}
SngWindow(1,1,80,25,WHITE,BLACK);
end.

4p3
04.03.2010, 00:19
А.. это еще и дельфи. Я не пишу на дельфях. Ничем помочь не могу.

NTFF
04.03.2010, 00:53
та нет это не делфи я запускал это на паскале.
преподаватель говорил что это паскаль
я тебе просто показую пример

fenixelite
04.03.2010, 07:26
Ты точнее скажи через что реализовать нужно? Ты писал что через списки, а в примере сделано через записи Оо..

WyBie
04.03.2010, 08:32
Хм может быть так ? но как тогда сделать правильный или не правильный ответ ?
можно типо так сделать
uses crt;
var
a,b:string;

begin
clrscr;
write(' куришь? -');
write(' да ');
write(' нет ');
write(' Выберите ответ: ');
read(a);
clrscr;
write(' пьёшь? - ');
write(' да ');
write(' нет ');
write(' Выберите ответ: ');
read(b);
clrscr;
if a='да' then write('Неправельно исправляйся');
if b='да' then write('Неправельно исправляйся');
if a='нет' then write('молодец');
if b='нет' then write('молодец');
end.

WyBie
04.03.2010, 08:34
Хм может быть так ? но как тогда сделать правильный или не правильный ответ ?
uses crt;
var
a,b:string;

begin
clrscr;
write(' куришь? -');
write(' да ');
write(' нет ');
write(' Выберите ответ: ');
read(a);
clrscr;
write(' пьёшь? - ');
write(' да ');
write(' нет ');
write(' Выберите ответ: ');
read(b);
clrscr;
if a='да' then write('Неправельно исправляйся');
if b='да' then write('Неправельно исправляйся');
if a='нет' then write('молодец');
if b='нет' then write('молодец');
end.

BastardFromHell
04.03.2010, 08:44
не знаю как в этом богомерзком языке, но в сях = это присвоить :)
Тут наверное также

fenixelite
04.03.2010, 08:53
Ужасная реализация )) Присвоить в дельфи это := ,

KrabKN
04.03.2010, 17:32
помогите зделать программу
Создание собственной библиотеки
создать библиотеку функций
Список группы (ФИО, возраст, средний балл по предметам)
на СИ

NTFF
04.03.2010, 20:33
Ты точнее скажи через что реализовать нужно? Ты писал что через списки, а в примере сделано через записи Оо..

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

рас уж это записи знач через записи

qwert135
06.03.2010, 17:51
Народ,плиз помогите написать прогу на с++.В файле записана матрица вещественных чисел.Размерность неизвестна. Числа в файле записаны через пробел.Надо считать матрицу из файла,сохранить ее в динамической памяти и вывести на экран.

Welemir
09.03.2010, 00:56
Приветствую ).нужна помощь в следующем:

Написать функцию типа void ,которая перемножает две целочисленные матрицы (z = x*y),используя только адресную арифметику.Объявляется три двумерных массива (int x[m][n], int y[m][n],int z[m][n]).Зачем-то задаются ещё две целочисленные константы(не пойму,для чего).Кто-нибудь может это осилить ? :( Не догоняю я эти матрицы...линейной алгебры у нас нет.

P.S.: НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ СИМВОЛЫ [].РАЗРЕШЕНА ТОЛЬКО АДРЕСНАЯ АРИФМЕТИКА И УКАЗАТЕЛИ !

fenixelite
09.03.2010, 11:38
SHARA ну я тоже так думаю, или в Дельфи можно через записи :)

4p3
09.03.2010, 15:19
Приветствую ).нужна помощь в следующем:

Написать функцию типа void ,которая перемножает две целочисленные матрицы (z = x*y),используя только адресную арифметику.Объявляется три двумерных массива (int x[m][n], int y[m][n],int z[m][n]).Зачем-то задаются ещё две целочисленные константы(не пойму,для чего).Кто-нибудь может это осилить ? :( Не догоняю я эти матрицы...линейной алгебры у нас нет.

P.S.: НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ СИМВОЛЫ [].РАЗРЕШЕНА ТОЛЬКО АДРЕСНАЯ АРИФМЕТИКА И УКАЗАТЕЛИ !

http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%BD%D0%BE%D0%B6%D 0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B0%D1%82%D1%80%D0 %B8%D1%86#.D0.9E.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0. B8.D0.B8_.D0.BD.D0.B0.D0.B4_.D0.BC.D0.B0.D1.82.D1. 80.D0.B8.D1.86.D0.B0.D0.BC.D0.B8

Вот ссылка на вики, где написан алгоритм.
Ты не можешь перемножать int x[m][n], int y[m][n]
разве что int x[m][n], int[n][m]. Так как результирующая размерность должна быть [m][m].

Вот код, как примерно обращаться к чему.

#include <QtCore/QCoreApplication>
#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
const int size = 5;
int **x = new int*[size];
for (int i = 0; i < size;++i)
x[i] = new int[size];

for (int i = 0;i < size;++i)
for (int j = 0;j < size;++j)
x[i][j] = i*j;

for (int i = 0;i < size;++i)
{
for (int j = 0;j < size;++j)
cout << x[i][j] << " ";
cout << endl;
}

cout << *(*(x+1)+1) << endl; // x[1][1]
cout << *(*(x+4)+4) << endl; // x[4][4]
for (int i = 0;i < size;++i)
delete[] x[i];
delete []x;
x = NULL;
system("pause");
return 0;
}

GroodeR
09.03.2010, 16:33
Помогите пожайлуста... Очень важно!!!!!! Даже отчислить могут ;((
Все лабораторные сделал, вот на последней застрял, некак не могу написать программу.

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

буду очень благодарен... Зарание большое спасибо.

4p3
09.03.2010, 16:41
Помогите пожайлуста... Очень важно!!!!!! Даже отчислить могут ;((
Все лабораторные сделал, вот на последней застрял, некак не могу написать программу.



буду очень благодарен... Зарание большое спасибо.

Какой язык?

GroodeR
09.03.2010, 17:01
Какой язык?

Язык реализации Си

4p3
09.03.2010, 19:58
#include <iostream>
#include <cstdlib>

using namespace std;

int min(int a, int b);
int min(char *str);

int main(int argc, char *argv[])
{
int a, b;
char *str = "I am moving on";
cin >> a >> b;
cout << min(a, b) << endl;
cout << str;
system("pause");
return 0;
}

int min(int a, int b)
{
return a < b ? a : b;
}

int min(char *str)
{
int len = 0;
// напишешь сюда логику
// Разбивай строку через strtok
// Длина строки через strlen
return len;
}

criptic
10.03.2010, 00:10
Ребят помогите найти ошибку. В синтаксисе все норм. ввожу пасс, и ошибка.


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

int mass[255];
void Massiv(int*mass)
{
int p,m,k;

mass=(int*)malloc(256*sizeof(int));
FILE*Dan;
Dan=fopen("Dannue","r+b");
fseek(Dan,p*sizeof(char),SEEK_SET);
for(k=0;k<256;k++)
{
fscanf(Dan,"%d",mass[k]);
printf("%d",mass[k]);
}
puts("enter new element:\n");
scanf("%d",&m);
fseek(Dan,0,SEEK_END);
fprintf(Dan,"%d",m);
int d;
puts("enter the number of delete element:\n");
scanf("%d",&d);
delete((int*)mass[d]);
fclose(Dan);
int c=0;
int scetchik = 0;
while (mass[k]!= '\0')
{
scetchik++;
}
for(k=1;k<256;k++)
{
c+=mass[k];
}
c = c/scetchik;
printf("\nSumma=%d",c);
int y[256];
for(k=1;k<256;k++)
{
if(mass[k]<15)
{y[k]=5*mass[k]*mass[k] + 21*mass[k];
}
if(mass[k]>=15&&mass[k]<=60)
{y[k]=mass[k]- (11/mass[k]-5);
}
else
{y[k]=1+mass[k]/(mass[k]+1);
}
printf("\n\ny%d=%0.3lf",k+1,y[k]);
}
getch();
}


void main(void)
{char login[128],strPass[128];
int i,j, symbol;
printf ("enter login:\n");
scanf("%s",&login);
printf ("password:\n");
scanf("&s",&strPass);
for(i=0;i<128;i++)
{symbol=getch();
if(symbol==13)
{break;}
strPass[i]=symbol;
printf("*");
}
FILE*Spis;
Spis=fopen("Spisok","r");
strrev(strPass);
char*Pass;
char str[256],pas[256];
int p;
for( i=0;i<256;i=i+2)
{
fscanf(Spis,"%s",str[i]);
char*strPtr=&str[i];
if(login!=strPtr)
{
puts("error!!!");
break;
}
else
{
fscanf(Spis,"%s",pas[i+1]);
char*pasPtr=&pas[i+1];
if(Pass!=pasPtr)
{
puts("error!!!");
break;
}
else
p=(i/2)+1;

Massiv(mass);
}
}
fclose(Spis);
getch();
}

SHARA
11.03.2010, 11:18
помогите зделать программу
Создание собственной библиотеки
создать библиотеку функций
Список группы (ФИО, возраст, средний балл по предметам)
на СИ
если еще нужно, случайно нашел вот статья которая тебе поможет
http://www.hostmake.ru/articles/c/257/
Там описан принцип работы со структурами
Посмотри пример про массивы структур, там практически описано решение твоего задания

sledopit2
11.03.2010, 11:37
Программисты помогите пажалуйста!надо написать прогу на языке си++ чтобы кампилирывалось в GCC,задание такое-прога должна иметь две функции с одинаковыми именами,но разными параметрами.одна функция должна сравнивать 2 числа,а вторайа функция должна реализовывать поиск подстрок в строке.
я над ней долго мучился,но вышло так ,что первайа часть проги работает ,а до второй части дело не доходит.
вот то что йа накалякал:

---делал по книге которуйу дал препод
#include <iostream.h>
#include <string.h>
void strstr(int a,int b);
char strstr( char str,const char *substr);
int main()
{int a;int b;int ptr;
cout<<"Vvedite peremennie: ";
cin>>a;cin>>b;
strstr(a,b);
cout<<ptr<<"\n";
}

void strstr(int a,int b)
{if (a>b)
cout<<"Samoe bolschoe 4islo: "<<a;
if (b>a)
cout<<"Samoe bolschoe 4islo: "<<b;
if (b==a)
cout<<"4isla ravni ";

}

char strstr( char *str,const char *substr)
{
char str1[]= "Proizvoditsja poisk elementa";
char str2[]= "poisk";
char *ptr;
*ptr=strstr(str1,str2);
return strstr(str1,str2);
}
Уточню что вторайа половина проги должна искать искомое слово в строке или поиск подстроки,но йа так понял это одно и тоже.

помогите исправить так чтобы работала,но желательно чтобы сруктура проги была такайа,а то вы можете и в 5 строк написать,но препод неповерит что это йа.
P.S. Списки на отчисления висят ужо,нехотелосьбы быть отчисленым изза одной лабы.
зарание спасибо

SHARA
11.03.2010, 12:11
https://forum.antichat.ru/threadnav122076-236-10.html
держи

SHARA
11.03.2010, 12:41
2sledopit2
Держи быдло код, работает
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void strstr(int &a, int &b);
void strstr(char *str, char *buf);
int main()
{
setlocale(LC_ALL,"Russian");
char s1[80]="Hellow word";
char s2[80]="word";
int i,j;
cout<<"Введите два числа: ";
cin>>i>>j;
strstr(i,j);//Cравнение двух чисел

//теперь рассмотрим поиск подстроки в строке
strstr(s1,s2);
return 0;
}
void strstr(int &a, int &b)
{
if(a>b) cout<<"Первое число больше второго";
else cout<<"Второе число больше первого";
cout<<endl;
}
void strstr(char *str, char *buf)
{
char *p;
char *q;
for(int i=0; str[i]; i++)
{
p=&str[i];
q=buf;
while(*q && *q==*p)
{
p++;
q++;
}
}
cout<<q;
}

sledopit2
11.03.2010, 17:12
:D SHARA спасибо бальшое.

Oven
11.03.2010, 19:57
Помогите, пожалуйста. То ли я торможу, то ли лыжи не едут.
Задание: Инициализировать массив, который содержит целые числа. Переписать парные и непарные числа в разные массивы. Оформить это действие в виде процедуры с формальными параметрами. - В делфи

Вот то что я наваяла, подскажите, пожалуйста, ошибку:

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
type Mas=array [1..10] of integer;
Mas1=array [1..10] of integer;
Mas2=array [1..10] of integer;
procedure Proc(i:integer; M:Mas; M1:Mas; M2:Mas2);
begin
for i:=1 to 10 do
if M[i] mod 2 =0 then M[i]:=M1[i]
else M[i]:=M2[i];
end;

var M:Mas; M1:Mas; M2:Mas2; i:integer;

begin
M[1]:=2;
M[2]:=6;
M[3]:=9;
M[4]:=11;
M[5]:=17;
M[6]:=10;
M[7]:=19;
M[8]:=23;
M[9]:=13;
M[10]:=1;
proc ( i, M, M1, M2);

for i:=1 to 10 do
Write (M1[i]);

for i:=1 to 10 do
Writeln(M2[i]);



readln;
end.

GroodeR
12.03.2010, 11:40
Ребята, нужна СРОЧНАЯ помощь, сижу на тесте в универе. За час нужно сделать лабораторную!!!

Задание:
Функция(ракусивная) поиска подстроки их 2х букв в строке... Срочно....

Помогите мне, а я вам тоже в чем то помогу.

Язык реализации СИ

n1ghtstalker
13.03.2010, 21:31
Помогите, пожалуйста. То ли я торможу, то ли лыжи не едут.
Задание: Инициализировать массив, который содержит целые числа. Переписать парные и непарные числа в разные массивы. Оформить это действие в виде процедуры с формальными параметрами. - В делфи

Вот то что я наваяла, подскажите, пожалуйста, ошибку:

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
type Mas=array [1..10] of integer;
Mas1=array [1..10] of integer;
Mas2=array [1..10] of integer;
procedure Proc(var M:Mas; M1:Mas; M2:Mas2);

var i:integer;
begin
for i:=1 to 10 do
if M[i] mod 2 =0 then M[i]:=M1[i]
else M[i]:=M2[i];
end;

var M:Mas; M1:Mas; M2:Mas2; i:integer;

begin
M[1]:=2;
M[2]:=6;
M[3]:=9;
M[4]:=11;
M[5]:=17;
M[6]:=10;
M[7]:=19;
M[8]:=23;
M[9]:=13;
M[10]:=1;
proc ( i, M, M1, M2);

for i:=1 to 10 do
Write (M1[i]);

for i:=1 to 10 do
Writeln(M2[i]);



readln;
end.
мда,собсно парные не парные ( хз интересное название . по видимому коду - это чётные нечётные).
мм массив уже с заданными значениями..

procedure Proc(var M:Mas; M1:Mas; M2:Mas2);
var i:integer;
begin
for i:=1 to 10 do
if M[i] mod 2 =0 then M1[i]:=M[i]
else M2[i]:=M[i];
end;

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

зы , по моему ещё массивы не правильно заданны. так как у каждого будет свой размер а не у всех трёх по 10.

Dhsus
14.03.2010, 18:09
Здраствуйте. Допоможіть будь-ласка зробити програму для обчислення заданого арифметичного виразу. Програма повинна забезпечити ввід необхідних даних з клавіатури та вивід результату на екран.

y=√((x_2^2+x_1/x_2)/(16x_2 x_1 ))

BrainDeaD
14.03.2010, 18:15
на каком языке программу, хлопче?

Dhsus
14.03.2010, 18:16
Нужна зделать в Delphi...

fenixelite
14.03.2010, 18:36
Как-то так, если условие правильно понял ))

var
x1,x2:integer;
y:real;
begin
write('x1=');
readln(x1);

write('x2=');
readln(x2);

y:=sqrt((sqr(x1)+x1/x2)(16*x2*x1);

writeln('y=',y);
end.

Ну, а если на Дельфи, то сделаешь 2 edit и кнопку. В событии кнопки напишешь

x1:=strtoint(edit1.Text);
x2:=strtoint(edit2.Text);
y:=sqrt((sqr(x1)+x1/x2)(16*x2*x1);

// и выведешь y куда нибудь

Dhsus
14.03.2010, 18:43
Спасибо большое!!!!!!!

KrabKN
14.03.2010, 19:26
Помогите срочно написать функцию заполнения массива следующим образом
1414
2323
3232
4141
на СИ очень срочно
и обяснить

BrainDeaD
14.03.2010, 19:53
это типа такого?
здесь была ошибка
что тут объяснять, даже незнаю.

KrabKN
14.03.2010, 19:55
это типа такого?
[code]
что тут объяснять, даже незнаю.

програма нечего невыводит
кампилятор GCC

KrabKN
14.03.2010, 20:14
#include<iostream.h>
void main()
{
int arr[4][4];

for(int i=0;i<4;i++)
{ int m=1;int a=4;
cout<<"\n";

if(i%2==0)
{
for(int j=0;j<4;j++)
{
arr[i][j]=m++;
cout<<arr[i][j]<<" ";
}
}

else
{
for(int j=4;j>0;j--)
{
arr[i][j]=a--;
cout<<arr[i][j]<<" ";
}
}

}
}
вот программа только неправельно выводит помогите
должно
1414
2323
3232
4141

EndLeSSDre@M
14.03.2010, 20:31
Кароче C++ не знаю, но могу подсказать алгоритм!

делаешь k=1 и n=порядку матрицы!
если столбец будет четным то его значение будет равно n, если не четный, то k
после заполнения строки, во внешнем цикле делаешь k=k+1 и n=n-1
и все! сорри если не помог мысленно))

BrainDeaD
14.03.2010, 21:18
держи!
void main()
{
int arr[4][4];

for(int j=0;j<4;j++)
{ int b=1;
if(j%2==0)
{
for(int i=0;i<4;i++)
{
arr[j][i]=b++;
}
}

else
{
for(int i=3;i>=0;i--)
{
arr[j][i]=b++;
}
}
}



for(int j=0;j<4;j++)
{
printf("\n");

for(int i=0;i<4;i++)
{
printf("%d ",arr[i][j]);
}
}

getch();
}

7on
15.03.2010, 14:01
вычислить радиус описанного круга вокруг треугольника со сторонами a b c
visual basic
кароче командную кнопку код написать нужно чтоб формулe просчитало

R=a*b*c/(4*p*(p-a)(p-b)(p-c)^0.5 при p=(a+b+c)/2 а=3 б=3 с=4
а б с у меня в лейбах...
Помогите плиз, ато я нуб(((

EndLeSSDre@M
15.03.2010, 14:09
че то в этом духе! смотря куда тебе выводить надо...

public function asdf()
dim a,b,c,p,r as integer
a=3
b=3
c=4
p=(a+b+c)/2
R=a*b*c/((4*p*(p-a)*(p-b)*(p-c))^0.5)
msgbox(Cstr(Round(R,2)))
end function


во подредактировал что б лучше смотрелось

J'Adore
15.03.2010, 22:34
Далее приведен код написанный на Borland C++ но работать не хочет, выдаёт что типа ошибка где то в LRESULT, помогите разобраться...

#include <windows.h>//Два файла с определениями, макросами #include <windowsx.h>//и прототипами функций Windows LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); /*Главная функция WinMain*/ int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hInst1, LPSTR str ,int in){ char szClassName[]="MainWindow";//Имя класса главного окна char szTitle[]="Лабораторная работа 2";//Заголовок окна MSG msg;//Структура msg для получения сообщений Windows WNDCLASS wc;//Структура wc для задания характеристик окна /*Зарегистрируем класс главного окна*/ ZeroMemory (&wc,sizeof(wc));//Обнуление всех членов wc wc.lpfnWndProc=WndProc;//Определяем оконную процедуру wc.hInstance=hInst;//Дескриптор приложения wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);//Пиктограмма wc.hCursor=LoadCursor(NULL,IDC_ARROW);//Курсор мыши wc.hbrBackground=CreateSolidBrush(RGB(255,0,255)); ;//Белый фон wc.lpszClassName=szClassName;//Имя класса окна wc.style = CS_NOCLOSE; RegisterClass(&wc);//Собственно регистрация класса окна /*Создадим главное окно и сделаем его видимым*/ HWND hwnd=CreateWindow(szClassName,//Класс окна szTitle, WS_OVERLAPPEDWINDOW|WS_EX_TOPMOST,//Заголовок, стиль окна 10,10,300,100, //Координаты, размеры HWND_DESKTOP,NULL,//Родитель, меню hInst,NULL);//Дескриптор приложения, параметры ShowWindow(hwnd,SW_SHOWNORMAL);//Покажем окно /*Организуем цикл обработки сообщений*/ while(GetMessage(&msg,NULL,0,0))//Получить сообщение, DispatchMessage(&msg);//вызвать WndProc return 0;//После выхода из цикла вернуться в Windows }//Конец функции WinMain /*Оконная функция WndProc главного окна*/ LRESULT CALLBACK WndProc(HWND hwnd,UINT msg, WPARAM wParam,LPARAM lParam){ switch(msg){//Переход по значению msg – номеру сообщения case WM_DESTROY://При закрытии приложения пользователем PostQuitMessage(0);//Завершим приложение return 0;//Возврат в Windows default://Остальные сообщения обработать по умолчанию return(DefWindowProc(hwnd,msg,wParam,lParam)); }//Конец оператора switch }//Конец функции WndProc

Copilochka
15.03.2010, 23:23
Привет. Низнаю точно сюда или нет(извеняюсь если не сюда), нужно срочно прогу на eclipse зделать(на уровне 3 курса, несложная) есть задание и есть пример как оно должно выглядеть, надо просто пример переделать под задачу и все:)
Где не прошу, никто не отзывается. Я предлогаю за wmr, яндекс-деньги, или Ваш вариант... Чем скорее тем лучше. Кто разбирается в Eclipse отпишите или тут в пм или icq: 575-482-7О4(вместо О = ноль) Скину задание, если возьметесь скину пример.
Надеюсь на помощ...

GRABBER*X
15.03.2010, 23:40
Помогите, пожалуйста, написать программу для курсового проекта по МПС на ассемблере!

y=x3+x-8

P.S. x3 - x в кубе

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

Oven
16.03.2010, 02:31
мда,собсно парные не парные ( хз интересное название . по видимому коду - это чётные нечётные).
мм массив уже с заданными значениями..
.
да, вы правы извиняюсь, просто с украинского на русский переводила в переводчике, и как-то пропустила мимо эту огрешность

procedure Proc(var M:Mas; M1:Mas; M2:Mas2);
var i:integer;
begin
for i:=1 to 10 do
if M[i] mod 2 =0 then M1[i]:=M[i]
else M2[i]:=M[i];
end;

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

зы , по моему ещё массивы не правильно заданны. так как у каждого будет свой размер а не у всех трёх по 10.
да, спасибо, я тоже задавалась тем же вопросом, да и задаваемый массив по себе тож не обязательно 10 элементов имеет, но вроде разобралась, мне код помогли написать...так что пасибки)

>>serhio<<
16.03.2010, 14:59
Пожалуйста помогите подректировать программу на С!
Задание
Массив Удалить:Все элементы с нечетными индексами; Добавить К элементов в начало массива; Сдвинуть циклически на M элементов влево
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
clrscr();
const int MAX_SIZE=100;
int mas[MAX_SIZE];
int n,i,j,k;
printf("\nVvedite stroku,MAX_SIZE\nn=");
scanf("%d",&n);
for(i=0;i<n;i++)
{
mas[i]=rand()%100-50;
printf("[%d] ",mas[i]);
}
printf("\nishodnii massiv:\n");
for(i=0;i<n;i++)
printf("[%d] ",mas[i]);

for(i=0;i<n;i++)
if(i%2==0)
for(j=i;j<n-1;j++)
mas[j]=mas[j+1];
n--;

printf("\nishodnii massiv posle udalenia nechetnih elementov:\n");
for(i=0;i<n;i++)
printf("[%d] ",mas[i]);

printf("\nVvedite kol-vo elementov,kotorii\nvi hotite vesti v nachalo massiva k=");
scanf("%d",&k);
n+=k;
for(i=n-k;i>k;i--)
mas[i]=mas[i-k];

printf("\nPreobrazovanii massiv:\n");
for(i=0;i<n;i++)
printf("[%d] ",mas[i]);


int m=0, tmp;
printf("\nVvedite kol-vo na skolko sdvigat m=");
scanf("%d",&m);
while(m!=0)
{
tmp=mas[0];
for(i=0;i<n;i++)
{
mas[i]=mas[i+1];
}
mas[n]=tmp;
m--;
}
printf("Sdvinutii massiv:\n");
for(i=0;i<n;i++)
printf("[%d] ",mas[i]);



getch();
}

DJeFRY_RASH
16.03.2010, 17:37
Ребята, помогите, срочно нужна помощь, нужно написать прогу в Delphi. Заранее спасибо !

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

Soherox
16.03.2010, 18:12
DJeFRY_RASH..уточните пожалуйста какие ограничения на длину строки? Регистрочувствительный? И как понять "Отредактированный текст помещается в надпись."?

DJeFRY_RASH
16.03.2010, 19:28
Soherox,
ограничений нет, но допустим максимум 255, нерегистрочувствительный. Готовый ответ, засовываем допустим в текстовое поле Label.

criptic
16.03.2010, 20:07
Кто возьмется за 2 лабораторные, на Си. в ПМ (Сорри за оффтоп, но так никто не помогает)

Soherox
16.03.2010, 20:40
DJeFRY_RASH...потестил, вроде работает, но как говорится вроде...если что, могу исходник кинуть

const
n = 10000;

var
Form1: TForm1;
a: string;
lin: array [1..n] of shortstring;
kol, lenn: integer;

implementation

{$R *.dfm}

function check(f: string; var kol2: integer; len: integer): boolean;
var
i: integer;
ok: boolean;
begin
ok:=false;
for i:=1 to kol do
if f = lin[i] then
begin
delete(a, kol2 - len, len);
dec(kol2, len);
dec(lenn, len);
ok:=true;
break;
end;
if not ok then
begin
inc(kol);
lin[kol]:=f;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
f: shortstring;
begin
a:=Edit1.Text;
for i:=1 to kol do
lin[i]:='';
i:=1;
kol:=0;
f:='';
a:=a+' ';

lenn:=length(a);
while i <= lenn do
begin
if a[i] in ['A'..'Z', 'a'..'z'] then f:=f + a[i]
else
if (a[i] in [',', '.', '!', ';', ':', ' ']) then
begin
check(f, i, length(f));
f:='';
if a[i] = ' ' then if a[i-1] = ' ' then
begin
delete(a, i-1, 1);
dec(i);
dec(lenn);
end;
end;
inc(i);
end;
Edit2.Text:=a;
end;

end.

DJeFRY_RASH
16.03.2010, 23:05
Soherox,
Да, спасибо большое, всё работает, добавил еще русский алфавит, респект !

superboy4
17.03.2010, 07:51
Помогите мне понять почему данная прога шифрует только текст ПРИВЕТ с ключом КЛЮЧ (методом Вижинера). Она должна шифровать любой текст как по заданию. вот код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ComCtrls, ExtCtrls, XPMan;
const Lmax=100;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
StringGrid1: TStringGrid;
Button3: TButton;
Edit2: TEdit;
Button4: TButton;
Edit3: TEdit;
Edit4: TEdit;
Label2: TLabel;
XPManifest1: TXPManifest;

procedure Button3Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

type TArr=array[1..Lmax] of integer;
Tmar=array[1..Lmax] of integer;

var
Form1: TForm1;
a: SET of 1..255;
shifr:array[1..Lmax] of char;
b: SET of 1..Lmax;
str1,str2:string;
i1,j1,k1:integer;
password:TArr;
implementation

{$R *.dfm}


procedure TForm1.Button3Click(Sender: TObject);
var str, S,t: String; lk,jjj: Integer;
begin
Button4.Enabled:=true;
str:=Edit1.Text;
S:='';
LK:=1;
i1:=1;
begin
For k1:=1 to Length(EDIT1.Text) do
BEGIN
FOR J1:=1 TO 32 DO
IF STR[I1]=StringGrid1.Cells[j1,0] THEN begin
S:=S+StringGrid1.Cells[J1,LK]; Inc(i1); LK:=lk+1; break;
END;
If lk=Length(EDIT4.Text)+1 then lk:=1;
END;
end;
Edit2.Text:=S;
end;




procedure TForm1.Edit1Change(Sender: TObject);
begin
If edit1.Text='' then Button3.Enabled:=false else
Button3.Enabled:=true;
Button4.Enabled:=false;
edit2.Text:=''; edit3.Text:='';
end;

procedure TForm1.Button4Click(Sender: TObject);
var str, S: String; lk,jjj: Integer;
begin
str:=Edit2.Text;
S:='';
LK:=1;
i1:=1;
begin
For k1:=1 to Length(EDIT1.Text) do
BEGIN
FOR J1:=1 TO 32 DO
IF STR[I1]=StringGrid1.Cells[J1,LK] THEN begin
S:=S+StringGrid1.Cells[j1,0]; Inc(i1); LK:=lk+1; break;
END;
If lk=Length(EDIT4.Text)+1 then lk:=1;
END;
end;
Edit3.Text:=S;
end;


procedure TForm1.FormActivate(Sender: TObject);
begin
J1:=1;
FOR I1:=ORD('А') TO ORD('Я') DO BEGIN
StringGrid1.Cells[J1,0]:=CHR(I1);
J1:=J1+1;
end;
Edit4Change(sender); Edit1Change(sender);
end;

procedure TForm1.Edit4Change(Sender: TObject);
var str :string;
kol:integer;
begin
For i1:=1 to length(edit4.text) do begin
StringGrid1.Cells[0,i1]:=Edit4.text[i1];
StringGrid1.RowCount:=length(edit4.text)+1;
J1:=1;
iF StringGrid1.Cells[0,I1]<>'А' THEN begin
str:=StringGrid1.Cells[0,I1];
kol:=32-(Ord('Я')-ord(str[1])+1);
For k1:=kol to 31 do begin
StringGrid1.Cells[j1,I1]:=chr(192+K1);
j1:=J1+1;
end;
For k1:=0 to KOL do begin
StringGrid1.Cells[j1,I1]:=chr(192+K1);
j1:=J1+1;
end;
END ELSE
For J1:=1 to 32 do begin
StringGrid1.Cells[j1,I1]:=chr(192+J1);
end;
end;
end;

procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['А'..'Я',#8]) then key:=#0;
end;

end.

Soherox
17.03.2010, 17:22
superboy4..покопался в твоем коде, честно, не особо понял что там написано :confused: :( написал с нуля, вот код, прокоментил все, чтобы было понятно, если что-то все равно не понятно, спрашивай

unit Enciphering;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

const
n = 1000; // длина строки
dif = 224; // разница между символами в ASCII
var
Form1: TForm1;
key, tex: string;
tqu, kqu: integer;
rez: string;
tx: set of 'а'..'я';
tnum, knum, code: array [1..n] of integer;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
tex:=Edit1.Text; // Для текста
key:=Edit2.Text; // Для ключа
rez:=''; // Наш ответ
tqu:=length(tex); // Длина текста
kqu:=length(key); // Длина ключа
for i:=1 to length(tex) do tnum[i]:=-1; // Исключение инородных сиволов
for i:=1 to length(tex) do knum[i]:=0; // Обнуление
code:=knum;
for i:=1 to tqu do
if tex[i] in tx then tnum[i]:=ord(tex[i]) - dif; // Нахождение порядкового номера в алфавите (отсчет от 0 до 30)
for i:=1 to kqu do
knum[i]:=ord(key[i]) - dif;
for i:=kqu + 1 to tqu do
knum[i]:=knum[i - kqu]; // Дополнение ключа в случае если его длина меньше длины строки
for i:=1 to tqu do
if tnum[i]<> -1 then code[i]:=(tnum[i] + knum[i]) mod 32
else code[i]:=ord(' ')-dif; // Само шифрование
for i:=1 to tqu do
rez:= rez + chr(code[i] + dif); // Получение ответа
stringgrid1.ColCount:=tqu+1;
for i:=1 to tqu do
StringGrid1.Cells[i, 0]:=tex[i];
for i:=1 to tqu do
StringGrid1.Cells[i, 1]:=rez[i]; // Вывод ответа
end;

end.