Code: #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; }
Может я, конечно, жестоко ошибаюсь, но мне кажется, что по стандарту С - все переменные должны быть обьявлены в самом начале функции - до любого прочего кода.
Borland C это далеко не стандарт Си.. ИМХО Парень выше правильно сказал. По стандарту в начале кода должны быть сначала объявлены переменные, иначе на половине сишных компиляторов работать не будет. Ещё кстати на Си в старых компилерах типы параметров, передаваемых в функцию указываются после названия функции, но перед началом блока функции: Code: void some_func(a, b) int a, int b { //кодт } http://en.wikipedia.org/wiki/C_syntax
согласен, что не стандарт. Сам не люблю когда встречаю объявление в середине кода =\ не удобно блин))
Люди помогите плиз! Я хочу стать веб программистом, а мне тут в универе дают лабы на асме =((( я в нем ваще ОЛЕНЬ вот надо посчитать такой вот пример: (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
Я конечно не гений в ассемблере, но сразу на глаз вижу вроде не правильно. У нас в универе подобные задания есть, вечером постараюсь отписаться(если раньше никто не поможет), или если что пиши в личку - помогу.
Нет возможности проверить, но думаю должно работать (все деление целочисленное): Code: ; 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 ; договорились, что остаток не нужен
Да.. блин.. есть пара недочетов у меня. Там 8-10 - это отрицательное число, поэтому нужно это учитывать Соответственно использовать imul и idiv, и знаковый разряд расширить надо будет. Думаю все понятно теперь )
Помогите плиз. c++ Code: #include <stdio.h> #include <math.h> void main() {double a=2, S, f1, x=1; while (x<=3) {f1=0; if (x>=a) {for (int n=0;n<=10;++n) f1+=pow(x-1,2*n-1)/(2*n+1)/pow(x+1,2*n+1); f1=2*f1; S=a*f1; printf("\nz=%f\t",a*log(x));} else {for(int n=0;n<=10;++n) f1+=pow(a-1,2*n-1)/(2*n+1)/pow(a+1,2*n+1); f1=2*f1; S=x*f1; printf("\nz=%f\t",x*log(a));} printf("\nS=%f\n",S); x+=0.5} } Чето вот после else все норм пашет, а до else криво, там по идее z=S быть равно. первые 3 варианта верно, а дальше мишура. Вобщем помогите плиз.
Подсобите с лабами на Си и Асемблере --------------- 1. [язык Си] Забить массив символами: латинскими большими и маленькими. Отсортировать: Большиме (заглавные) по алфавиту; Мелкие (прописные) - наоборот. 2. [Assembler] Ввести с клавиатуры строку символов длинной не менее 20 штук. Среди символов должно быть разнообразие: кирилица (Аа, Бб), латиница (Ss, Rr). Сделать листниг (LIST) --------------- Был бы очень благодарен, если были б комменты тут немного над началом 1й лабы сидел думал Code: #include <stdio.h> #include <stdlib.h> int main() { int i; int const n=20; int data[n]={a,b,C,D,E,f,g,h,E,q,q,A,Y,u,T,t,R,I,o,P,}; //Выводим исходный массив printf("Initial array: \n"); for (i=0; i<n; i++) { printf("%d ", data[i]); } printf("\n");
Ребята помогите написать лабу ВОт есть лаба - не могу разобраться нубок я кароч в С++... http://s49.radikal.ru/i123/0811/61/690b7f92a659.jpg Напишите плиз для Microsoft Visual C++ 2008 Express Edition. +++ НАСТАВЛЮ =) Плиз
ты бы хоть задание сюда написал,лично мне влом еще ссылку вбивать да и всю лабу бесплатно никто не решит,так: моментами помочь
проверь, я не уверен Code: #include <stdio.h> #include <math.h> void main() {double b, a, n, i; double S=0; printf("\n VVedite a, b, n"); scanf_s("%lf%lf%lf",&a,&b,&n); if (b>5) b=4; if (a<2) a=2; {for(i=1;i<=n;++i) S+=pow(a*b,i-1)/i*(b-i);} printf("\nS=%f\t",S);}
пример как у Dr.zomber'a, тока с использованием факториала: Code: #include <stdio.h> #include <math.h> int fact(int fct); int main(int argc, char* argv[]) { int n, i; double x; double a = 0.0, b = 0.0; scanf("%lf", &a); scanf("%lf", &b); scanf("%d", &n); if(b>5.0) b = 4.0; if(a<2.0) a =2.0; for(i=1; i < n; i++) { x = x + pow(a*b, i-1) / (fact(i) * (b-i)); } printf("%lf\n", x); return 0; } int fact(int fct) { return (fct == 1)? 1 : fct * fact(fct-1); } З.Ы. интересная весчь: если n = 7, то выводится 1.#INF00
У тебя неверная формула на картинке) там верхняя скобка должна быть в степени не 2*n-1, а 2*n+1 Тогда все сходится