ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!

Флейм в чистом виде - все что угодно...
Но - в рамках закона :)
Ответить
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Пикачу, вам еще учится и учится...
Особенно радуют строки типа:
int n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24;
Заменяется простейшим массивом:
int n[25];
Можно задать начальные значения:
int n[25]={7,32755,9,10,-125,итд};
бращатся к каждой ячейке так:
int a=7;
int b=8;
n[a]=b;
или так:
n[3]=4;
варианты можно комбинировать как угодно. Возможно делать многомерные массивы.

И конечно же, бессмысленно спрашивать Пикачу про указатели... Ваш калькулятор можно сократить раз в 15 по размеру исходного кода да и вообще...
К тому же его можно сделать далеко не консольным, а по типу виндовсовского (Читаем про MFC). Зачем с консолью вообще извращатся..
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

Сообщение Pika4u »

Циклы я изучил, просто не применил))Применял for, когда пароль ставил на программу))
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Реклама
Друг Кота
Сообщения: 6900
Зарегистрирован: Ср май 05, 2010 13:31:29

Сообщение А.Андрей »

Не я пас)))))) я великобританию ниасилил :))
Спасибо за внимание.
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Дам подсказку: Для того, чтобы нарисовать такой флаг, нужно уметь рисовать линии и полигоны залитые. Можно обойтись просто линиями. Вот, если нарисуете произвольную линию, получите мое большое одобрение. В принципе, это просто.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 166
Зарегистрирован: Вс фев 04, 2007 20:15:56

Сообщение P-cad »

РадиоЛоматель писал(а):Пикачу, вам еще учится и учится...
...
Ваш калькулятор можно сократить раз в 15 по размеру исходного кода да и вообще...
Зачем столько писанины? Ссылка на умную книжку в виде надписи "RTFM" несет столько же смысла, но короче во много раз :)
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2409
Зарегистрирован: Ср дек 03, 2008 21:00:19

Сообщение FRIM@N »

кто нибудь Visual Basic'ком обмазывается?
(\_(\
(=' :') радиоКотЭ
(,('')('')
Друг Кота
Сообщения: 6900
Зарегистрирован: Ср май 05, 2010 13:31:29

Сообщение А.Андрей »

ARV писал(а):в том и преимущество языков высокого уровня, что их осилить проще...
Я с вами не собирался спорить. Их осилить проще чем ассемблер, но вот тот же ассемблер необходим для понимания тех процессов которые происходят в языках высокого уровня. Да и как - то привычно программить на нем)))))
Спасибо за внимание.
Друг Кота
Сообщения: 6900
Зарегистрирован: Ср май 05, 2010 13:31:29

Сообщение А.Андрей »

FRIM@N писал(а):кто нибудь Visual Basic'ком обмазывается?
Изучаю паскаль и визуальный чайник.
Спасибо за внимание.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

Сообщение Pika4u »

Подредактировал прогу, теперь она выглядит так
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
void to2(int binary)
{
int n[25];
n[0]=binary/2;
n[1]=binary%2;
n[2]=n[0]/2;
n[3]=n[0]%2;
n[4]=n[2]/2;
n[5]=n[2]%2;
n[6]=n[4]/2;
n[7]=n[4]%2;
n[8]=n[6]/2;
n[9]=n[6]%2;
n[10]=n[8]/2;
n[11]=n[8]%2;
n[12]=n[10]/2;
n[13]=n[10]%2;
n[14]=n[12]/2;
n[15]=n[12]%2;
n[16]=n[14]/2;
n[17]=n[14]%2;
n[18]=n[16]/2;
n[19]=n[16]%2;
n[20]=n[18]/2;
n[21]=n[18]%2;
n[22]=n[20]/2;
n[23]=n[20]%2;
printf("%d%d%d%d%d%d%d%d%d%d%d%d",n[23],n[21],n[19],n[17],n[15],n[13],n[11],n[9],n[7],n[5],n[3],n[1]);
}
int to10(int binary)
{
int n[21];
n[0]=binary%10;
n[1]=binary/10;
n[2]=n[1]%10;
n[3]=n[1]/10;
n[4]=n[3]%10;
n[5]=n[3]/10;
n[6]=n[5]%10;
n[7]=n[5]/10;
n[8]=n[7]%10;
n[9]=n[7]/10;
n[10]=n[9]%10;
n[11]=n[9]/10;
n[12]=n[11]%10;
n[13]=n[11]/10;
n[14]=n[13]%10;
n[15]=n[13]/10;
n[16]=n[15]%10;
n[17]=n[15]/10;
n[18]=n[17]%10;
n[19]=n[17]/10;
n[20]=n[18]*512+n[16]*256+n[14]*128+n[12]*64+n[10]*32+n[8]*16+n[6]*8+n[4]*4+n[2]*2+n[0]*1;
return n[20];
}
main()
{
int sys,binary[3],r[4],par,sq1,de,eng;
float xd,xd1,yrol[3],i[5],sq[3],g4;
printf("Программа для перевода чисел между системами счисления.v1.0.1.2\nНаписал прогу Diman56");
while(1)
{
printf("\nВыберите систему счисления(10-десятичная,2-двоичная)\nИли наберите -1 для выхода: ");
scanf("%d",&sys);
if(sys==-1)
exit(1);
else
{
printf("Введите действие\nДействия:\n1-сложение\n2-вычитание\n3-умножение\n4-деление\n5-перевод из указанной системы счисления в противоположную\n6-извлечение квадратного корня\n7-тригонометрические функции(только для десятичной системы).\nДействие: ");
scanf("%d",&de);
switch (sys)
{
case 10:
switch(de)
{
case 1:
printf("Введите чиcло 1: ");
scanf ("%f", &i[1]);
printf("Введите число 2: ");
scanf ("%f", &i[2]);
i[3]=i[1]+i[2];
printf("Сумма равна %f",i[3]);break;
case 2:
printf("Введите чиcло 1: ");
scanf ("%f", &i[1]);
printf("Введите число 2: ");
scanf ("%f", &i[2]);
i[3]=i[1]-i[2];
printf("Разность равна %f\n",i[3]);break;
case 3:
printf("Введите чиcло 1: ");
scanf ("%f", &i[1]);
printf("Введите число 2: ");
scanf ("%f", &i[2]);
i[3]=i[1]*i[2];
printf("Произведение равно %f\n",i[3]);break;
case 4:
printf("Введите чиcло 1: ");
scanf ("%f", &i[1]);
printf("Введите число 2: ");
scanf ("%f", &i[2]);
i[3]=i[1]/i[2];
printf("Частное равно %f\n",i[3]);break;
case 5:
printf("Введите число для перевода: ");
scanf("%d", &binary[0]);
printf("Число в двоичной системе счисления:");
to2(binary[0]);
break;
case 6:
printf("Введите число: ");
scanf("%f",&sq[0]);
if(sq[0]<0.0)
{
printf("Ошибка!!ВЫ ВВЕЛИ ОТРИЦАТЕЛЬНОЕ ЧИСЛО!!!\n");
}
else
{
sq[1]=sqrt(sq[0]);
printf("Квадратный корень из %f равен %f",sq[0],sq[1]);
}
break;
case 7:
printf("Введите параметр:\n1-синус\n2-косинус\n3-тангенс\n4-угол из синуса\n5-угол из косинуса\n6-угол из тангенса\nПараметр: ");
scanf("%d", &par);
switch(par)
{
case 1:
printf("Введите значение угла: ");
scanf("%f", &yrol[0]);
yrol[1]=yrol[0]*3.14/180;
xd=sin(yrol[1]);
printf("Синус угла %f равен %f",yrol[0],xd);
break;
case 2:
printf("Введите значение угла: ");
scanf("%f", &yrol[0]);
yrol[1]=yrol[0]*3.14/180;
xd=cos(yrol[1]);
printf("Косинус угла %f равен %f",yrol[0],xd);
break;
case 3:
printf("Введите значение угла: ");
scanf("%f", &yrol[0]);
yrol[1]=yrol[0]*3.1415/180;
xd=tan(yrol[1]);
printf("Тангенс угла %f равен %f",yrol[0],xd);
break;
case 4:
printf("Введите значение cинуса: ");
scanf("%f", &yrol[0]);
xd=asin(yrol[0]);
xd1=180*xd/3.14;
printf("Угол равен %f",xd1);
break;
case 5:
printf("Введите значение коcинуса: ");
scanf("%f", &yrol[0]);
xd=acos(yrol[0]);
xd1=180*xd/3.14;
printf("Угол равен %f",xd1);
break;
case 6:
printf("Введите значение тангенса: ");
scanf("%f", &yrol[0]);
xd=atan(yrol[0]);
xd1=180*xd/3.14;
printf("Угол равен %f",xd1);
break;
}
}break;
case 2:
switch (de)
{
case 1:
printf("Введите число 1: ");
scanf("%d",&binary[0]);
printf("Введите число 2: ");
scanf("%d", &binary[1]);
r[1]=to10(binary[0]);
r[2]=to10(binary[1]);
r[3]=r[1]+r[2];
printf("Сумма равна %d или в двоичной системе:",r[3]);
to2(r[3]);
break;
case 2:
printf("Введите уменьшаемое: ");
scanf("%d",&binary[0]);
printf("Введите вычитаемое: ");
scanf("%d", &binary[1]);
r[1]=to10(binary[0]);
r[2]=to10(binary[1]);
r[3]=r[1]-r[2];
printf("Разность равна %d или в двоичной системе:", r[3]);
to2(r[3]);
break;
case 3:
printf("Введите первый множитель: ");
scanf("%d",&binary[0]);
printf("Введите второй множитель: ");
scanf("%d", &binary[1]);
r[1]=to10(binary[0]);
r[2]=to10(binary[1]);
r[3]=r[1]*r[2];
printf("Произведение равно %d или в двоичной системе:",r[3]);
to2(r[3]);
break;
case 4:
printf("Введите делимое: ");
scanf("%d",&binary[0]);
printf("Введите делитель: ");
scanf("%d", &binary[1]);
r[1]=to10(binary[0]);
r[2]=to10(binary[1]);
r[3]=r[1]/r[2];
printf("Частное равно %d или в двоичной системе:",r[3]);
to2(r[3]);
break;
case 5:
printf("Введите число: ");
scanf ("%d", &binary[0]);
r[3]=to10(binary[0]);
printf("Число в десятичной системе счисления:%d",r[3]);
break;
case 6:
printf("Введите число: ");
scanf("%d", &eng);
g4=to10(eng);
if(g4<0.0)
{
printf("Ошибка!!ВЫ ВВЕЛИ ОТРИЦАТЕЛЬНОЕ ЧИСЛО!!!\n");
}
else
{
sq[0]=sqrt(g4);
printf("Квадратный корень из %d равен %f", eng,sq[0]);
}
break;
}
break;
}
getch();
}
}
}
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

А.Андрей писал(а):
ARV писал(а):в том и преимущество языков высокого уровня, что их осилить проще...
Я с вами не собирался спорить. Их осилить проще чем ассемблер, но вот тот же ассемблер необходим для понимания тех процессов которые происходят в языках высокого уровня. Да и как - то привычно программить на нем)))))
вы не совсем правы. современное ПО находится в таком состоянии, что попытка понимать его, изучая на уровне регистров и ячеек озу, повергает вас в такую прорву подробностей, что вы просто там увязнете, не добившись чего-то конкретного. наоборот, чтобы понять процессы в ОС и т.п., надо максимально абстрагироваться от конкретики процессора, регистров, портов и т.п. Вещи, требующие супер-детального понимания - это либо вирусы, либо отладка драйверов, а в остальном оно только мешает.
помните про сороконожку? пока ее не спросили, как она управляет своими 40 ногами, она бегала себе и не жужжала, а после вопроса не смогла сделать и шагу... так и здесь: когда для рисования флага вы используете что-то типа
SetFillColor(Red);
DrawBox(0,0,MaxX,MaxY/3);
SetFillColor(White);
DrawBox(0,MaxY/3,MaxX,MaxY*2/3);
SetFillColor(Blue);
DrawBox(0,MaxY*2/3,MaxX,MaxY);
- вам все понятно (и не только вам), а когда то же самое вы делаете на ассемблере, усилий для понимания приходится тратить существенно больше. а для рисования флага британии у вас на данном этапе сил вообще не хватило. я не сомневаюсь, что алгоритм брезенхама вы с успехом реализуете на ассемблере, но ваши конкуренты к тому моменту будут рисовать уже в 3D :) не жалко ли вам своего времени будет?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Сообщения: 6900
Зарегистрирован: Ср май 05, 2010 13:31:29

Сообщение А.Андрей »

Ну да)))))
Я вообще не против языков высокого уровня
и никогда не был
просто когда начал интересоваться
программированием под рукой оказалась только книга по асму :?
а про си я тогда не подумал
кстати, вот код последней проги:

Код: Выделить всё

format MZ
xor ax,ax
add al,10h
int 10h
start111:
and cx,0
and dx,0
mov bp,0h
mov al,0fh
call a1
mov bp,1h
mov al,9h
call a1
mov bp,2h
mov al,0ch
call a1
AND dx,0
call wx1
mov bp,3h
mov al, 9h
call a1
mov bp,4h
mov al, 0eh
call a1
call wx1
and dx,0
mov bp,0h
mov al,0h
call a1
mov bp,1h
mov al,0ch
call a1
mov bp,2h
mov al,0eh
call a1
call wx1
and dx,0
mov bp,0h
mov al,0fh
call a1
mov bp,1h
mov al,0ah
call a1
mov bp,2h
mov al,0ch
call a1
call wx1
and dx,0
mov bp,0h
mov al,0ch
call a1
mov bp,1h
mov al,0fh
call a1
mov bp,2h
mov al,0ch
call a1
call wx1
jmp start111
a1:
mov ah,0ch
push cx
push dx
int 10h
pop dx
pop cx
cmp cx,258h
jz a2
inc cx
jmp a1
a2:
cmp bp,4
jz aa5
jmp a3
a3:
cmp bp,3
jz aa4
jmp a4
a4:
cmp bp,2
jz aa3
jmp a5
a5:
cmp bp,1
jz aa2
jmp aa1
aa1:
xor cx,cx
cmp dx,73h
jz s4
inc dx
jmp a1
aa2:
xor cx,cx
cmp dx,0e6h
jz s4
inc dx
jmp a1
aa3:
xor cx,cx
cmp dx,159h
jz s4
inc dx
jmp a1
aa4:
xor cx,cx
cmp dx,0afh
jz s4
inc dx
jmp a1
aa5:
xor cx,cx
cmp dx,15eh
jz s4
inc dx
jmp a1
s4:
ret
wx1:
mov cx, 0ffffh
ww1:
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
loop ww1
ret
извините :)) :))) :tea:
Спасибо за внимание.
Друг Кота
Сообщения: 6900
Зарегистрирован: Ср май 05, 2010 13:31:29

Сообщение А.Андрей »

ARV писал(а):будут рисовать уже в 3D :)
Вот здесь я ТОЧНО ниасилю :roll:
про рисование я узнал из:

Код: Выделить всё

Программирование видеоадаптеров CGA, EGA и VGA

© Александр Фролов, Григорий Фролов
Том 3, М.: Диалог-МИФИ, 1992, 287 стр.
а про 3д там нет :))) :))) :))) :))) :))) :)))
Спасибо за внимание.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

Сообщение Pika4u »

Учи С++ ,пока не поздно!! :))
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

вы на дату издания книги посмотрите... если учесть, что книга издается за пару лет, то сведения там еще древнее... а EGA-адаптеры, не говоря про CGA - это вообще нонсенс на современном этапе, и тратить время на его изучение лично мне просто было бы жалко... а вот про регистры какого-нибудь GeForce GX**** что-то книжки не пишут :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Сообщения: 6900
Зарегистрирован: Ср май 05, 2010 13:31:29

Сообщение А.Андрей »

да ясное дело))))))
но впринцпе там говорится про вга а вот оно.......
Учи С++ ,пока не поздно!!
мне турбо паскаля достаточно :)))
Спасибо за внимание.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

Сообщение Pika4u »

Я пробовал паскаль выучить, вроде че-то понял, но среда турбо паскаль своими особенностями мне мозг окончательно з@еб@ла, так что паскаль я забросил))
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

турбопаскаль это тот же труп, что и CGA-EGA. Очень рекомендую Delphi - тот же паскаль, но с ООП и вполне современно. если вы не намерены стать профессиональным программистом, С++ изучать так же нет особоых причин, во всяком случае, глубоко изучать, ибо там можно мозг сломать запросто, если он неокрепший :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

Сообщение Pika4u »

Про неокрепший мозг улыбнуло=))но я сейчас штутдирую работу с файлами, сортировка, итд.... Скоро, наверное, к классам перейду))
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Ответить

Вернуться в «МЯЯЯУ!»