HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #721  
Старый 10.11.2008, 20:07
velvetdust
Новичок
Регистрация: 08.11.2008
Сообщений: 9
Провел на форуме:
28743

Репутация: -5
По умолчанию

Надо перевести кусок кода из C++ в C! спс заранее!

long step(int i)
{
int g = 1;
for(int j = 1; j<i; j++)g*=10;
return g;
}

int main(int argc, char* argv[])
{
int k;
cin >> k;

int l = k, g=1;

while(l / 10 > 0)
{
l/=10;
++g;
}

int s1, s2;

s1 = k/step(g) + (k/step(g-1) % 10);
s2 = k %10 + (k/step(2))%10;
 

  #722  
Старый 11.11.2008, 10:27
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Код:
#include <stdio.h>

long step (int i) {
  int g = 1, j;
  for (j = 1; j < i; g *= 10, j++);
  return g;
}

int main (int argc, char* argv[]) {
  int k;
  printf ("Enter your number: ");
  scanf ("%d", &k);

  int l = k, g = 1;

  while (l / 10 > 0) {
    l /= 10;
    ++g;
  }

  int s1, s2;

  s1 = k / step (g) + (k / step (g - 1) % 10);
  s2 = k % 10 + (k / step (2)) % 10;
  return 0;
}
 

  #723  
Старый 11.11.2008, 10:43
Namelles One
Познающий
Регистрация: 08.07.2005
Сообщений: 47
Провел на форуме:
149096

Репутация: 65
Отправить сообщение для Namelles One с помощью ICQ
По умолчанию

Может я, конечно, жестоко ошибаюсь, но мне кажется, что по стандарту С - все переменные должны быть обьявлены в самом начале функции - до любого прочего кода.
 

  #724  
Старый 11.11.2008, 12:35
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

Репутация: 119
По умолчанию

Цитата:
все переменные должны быть обьявлены в самом начале функции
можно еще в циклах обяъвлять
 

  #725  
Старый 11.11.2008, 12:53
groupby
Познающий
Регистрация: 21.09.2008
Сообщений: 42
Провел на форуме:
127017

Репутация: 61
По умолчанию

Цитата:
Сообщение от criz  
можно еще в циклах обяъвлять
Borland C это далеко не стандарт Си.. ИМХО

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

Ещё кстати на Си в старых компилерах типы параметров, передаваемых в функцию указываются после названия функции, но перед началом блока функции:

Код:
void some_func(a, b)
int a,
int b
{ //кодт
}
http://en.wikipedia.org/wiki/C_syntax
 

  #726  
Старый 11.11.2008, 13:19
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

Репутация: 119
По умолчанию

Цитата:
Borland C это далеко не стандарт Си.. ИМХО
согласен, что не стандарт. Сам не люблю когда встречаю объявление в середине кода =\
не удобно блин))
 

  #727  
Старый 11.11.2008, 16:00
velvetdust
Новичок
Регистрация: 08.11.2008
Сообщений: 9
Провел на форуме:
28743

Репутация: -5
По умолчанию

ага, спасибо, ребят!)
 

  #728  
Старый 12.11.2008, 13:11
advokat.holy
Новичок
Регистрация: 05.03.2008
Сообщений: 11
Провел на форуме:
46977

Репутация: 1
По умолчанию

Люди помогите плиз!
Я хочу стать веб программистом, а мне тут в универе дают лабы на асме =((( я в нем ваще ОЛЕНЬ

вот надо посчитать такой вот пример: (8-10)*(5/2+4)/(9-3*2)
я вот тут чето пытался но не получается =(

;(8-10)*(5/2+4)/(9-3*2)
.8086
.model small
.stack 200h
.data
a db 8
b db 10
c db 5
d db 2
e db 4
f db 9
g db 3
result dw ?
zal dw ?
.code
.startup
mov al,a ;al=8
sub al,b ;ax=8-10
mov bx,ax ;bx=ax
mov ax,0 ;ax=0
mov al,c ;al=5
div d ;ax=5/2
mov cx,ax ;cx=ax
mov ax,0
mov al,e
add cx,ax ;cx=cx+ax=5/2+4
mov ax,0
mov ax,bx
div cx
.exit 0
end @startup
 

  #729  
Старый 12.11.2008, 13:30
F&D
Участник форума
Регистрация: 06.11.2008
Сообщений: 208
Провел на форуме:
261838

Репутация: 9
По умолчанию

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

  #730  
Старый 12.11.2008, 13:37
groupby
Познающий
Регистрация: 21.09.2008
Сообщений: 42
Провел на форуме:
127017

Репутация: 61
По умолчанию

Цитата:
Сообщение от advokat.holy  
!
Нет возможности проверить, но думаю должно работать (все деление целочисленное):

Код:
; 8 - 10
mov al, 8
sub al, 10
push al

; 5/2 + 4
mov ax, word ptr 5
mov bl, 2
div bl
add al, 4
xor ah, ah ; деление без остатка

; умножение скобок
mov bl, al
pop al
mul bl ; нам достаточно байта, чтобы не лезло в ax:dx
push ax

mov al, 3
mov bl, 2
mul bl

mov bx, word ptr 9
sub bx, ax

pop ax

div bx

; результат в al, остаток в ah
xor ah, ah ; договорились, что остаток не нужен
 
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости. Обсуждения. 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ