Страница 4 из 12

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

Добавлено: Ср фев 02, 2011 19:32:57
РадиоЛоматель
Пикачу, вам еще учится и учится...
Особенно радуют строки типа:
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). Зачем с консолью вообще извращатся..

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

Добавлено: Ср фев 02, 2011 19:40:15
Pika4u
Циклы я изучил, просто не применил))Применял for, когда пароль ставил на программу))

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

Добавлено: Ср фев 02, 2011 21:04:36
А.Андрей
Не я пас)))))) я великобританию ниасилил :))

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

Добавлено: Ср фев 02, 2011 21:15:38
РадиоЛоматель
Дам подсказку: Для того, чтобы нарисовать такой флаг, нужно уметь рисовать линии и полигоны залитые. Можно обойтись просто линиями. Вот, если нарисуете произвольную линию, получите мое большое одобрение. В принципе, это просто.

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

Добавлено: Ср фев 02, 2011 21:51:23
P-cad
РадиоЛоматель писал(а):Пикачу, вам еще учится и учится...
...
Ваш калькулятор можно сократить раз в 15 по размеру исходного кода да и вообще...
Зачем столько писанины? Ссылка на умную книжку в виде надписи "RTFM" несет столько же смысла, но короче во много раз :)

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

Добавлено: Ср фев 02, 2011 22:02:27
ARV
А.Андрей писал(а):Не я пас)))))) я великобританию ниасилил :))
в том и преимущество языков высокого уровня, что их осилить проще...

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

Добавлено: Ср фев 02, 2011 22:23:47
РадиоЛоматель

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

Добавлено: Ср фев 02, 2011 23:13:02
FRIM@N
кто нибудь Visual Basic'ком обмазывается?

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

Добавлено: Чт фев 03, 2011 09:25:31
А.Андрей
ARV писал(а):в том и преимущество языков высокого уровня, что их осилить проще...
Я с вами не собирался спорить. Их осилить проще чем ассемблер, но вот тот же ассемблер необходим для понимания тех процессов которые происходят в языках высокого уровня. Да и как - то привычно программить на нем)))))

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

Добавлено: Чт фев 03, 2011 09:26:21
А.Андрей
FRIM@N писал(а):кто нибудь Visual Basic'ком обмазывается?
Изучаю паскаль и визуальный чайник.

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

Добавлено: Чт фев 03, 2011 11:53:52
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();
}
}
}

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

Добавлено: Чт фев 03, 2011 12:27:50
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 :) не жалко ли вам своего времени будет?

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

Добавлено: Чт фев 03, 2011 12:34:34
А.Андрей
Ну да)))))
Я вообще не против языков высокого уровня
и никогда не был
просто когда начал интересоваться
программированием под рукой оказалась только книга по асму :?
а про си я тогда не подумал
кстати, вот код последней проги:

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

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:

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

Добавлено: Чт фев 03, 2011 12:37:53
А.Андрей
ARV писал(а):будут рисовать уже в 3D :)
Вот здесь я ТОЧНО ниасилю :roll:
про рисование я узнал из:

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

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

© Александр Фролов, Григорий Фролов
Том 3, М.: Диалог-МИФИ, 1992, 287 стр.
а про 3д там нет :))) :))) :))) :))) :))) :)))

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

Добавлено: Чт фев 03, 2011 12:41:49
Pika4u
Учи С++ ,пока не поздно!! :))

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

Добавлено: Чт фев 03, 2011 12:43:36
ARV
вы на дату издания книги посмотрите... если учесть, что книга издается за пару лет, то сведения там еще древнее... а EGA-адаптеры, не говоря про CGA - это вообще нонсенс на современном этапе, и тратить время на его изучение лично мне просто было бы жалко... а вот про регистры какого-нибудь GeForce GX**** что-то книжки не пишут :)))

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

Добавлено: Чт фев 03, 2011 12:51:49
А.Андрей
да ясное дело))))))
но впринцпе там говорится про вга а вот оно.......
Учи С++ ,пока не поздно!!
мне турбо паскаля достаточно :)))

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

Добавлено: Чт фев 03, 2011 12:57:16
Pika4u
Я пробовал паскаль выучить, вроде че-то понял, но среда турбо паскаль своими особенностями мне мозг окончательно з@еб@ла, так что паскаль я забросил))

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

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

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

Добавлено: Чт фев 03, 2011 13:11:56
Pika4u
Про неокрепший мозг улыбнуло=))но я сейчас штутдирую работу с файлами, сортировка, итд.... Скоро, наверное, к классам перейду))