Студентам с лабораторными сюда (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 20 Jun 2007.

Thread Status:
Not open for further replies.
  1. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    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;
    }
    
    :)
     
  2. Namelles One

    Namelles One Elder - Старейшина

    Joined:
    8 Jul 2005
    Messages:
    43
    Likes Received:
    14
    Reputations:
    19
    Может я, конечно, жестоко ошибаюсь, но мне кажется, что по стандарту С - все переменные должны быть обьявлены в самом начале функции - до любого прочего кода.
     
  3. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    можно еще в циклах обяъвлять :)
     
  4. groupby

    groupby Elder - Старейшина

    Joined:
    21 Sep 2008
    Messages:
    30
    Likes Received:
    13
    Reputations:
    0
    Borland C это далеко не стандарт Си.. ИМХО

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

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

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

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    согласен, что не стандарт. Сам не люблю когда встречаю объявление в середине кода =\
    не удобно блин))
     
  6. velvetdust

    velvetdust New Member

    Joined:
    8 Nov 2008
    Messages:
    7
    Likes Received:
    0
    Reputations:
    -5
    ага, спасибо, ребят!)
     
  7. advokat.holy

    advokat.holy New Member

    Joined:
    5 Mar 2008
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    Люди помогите плиз!
    Я хочу стать веб программистом, а мне тут в универе дают лабы на асме =((( я в нем ваще ОЛЕНЬ

    вот надо посчитать такой вот пример: (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
     
  8. F&D

    F&D Member

    Joined:
    6 Nov 2008
    Messages:
    341
    Likes Received:
    8
    Reputations:
    5
    Я конечно не гений в ассемблере, но сразу на глаз вижу вроде не правильно. У нас в универе подобные задания есть, вечером постараюсь отписаться(если раньше никто не поможет), или если что пиши в личку - помогу.
     
  9. groupby

    groupby Elder - Старейшина

    Joined:
    21 Sep 2008
    Messages:
    30
    Likes Received:
    13
    Reputations:
    0
    Нет возможности проверить, но думаю должно работать (все деление целочисленное):

    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 ; договорились, что остаток не нужен
    
     
  10. groupby

    groupby Elder - Старейшина

    Joined:
    21 Sep 2008
    Messages:
    30
    Likes Received:
    13
    Reputations:
    0
    Да.. блин.. есть пара недочетов у меня.
    Там 8-10 - это отрицательное число, поэтому нужно это учитывать
    Соответственно использовать imul и idiv, и знаковый разряд расширить надо будет.
    Думаю все понятно теперь )
     
  11. Dr.zomber

    Dr.zomber Member

    Joined:
    27 Aug 2008
    Messages:
    12
    Likes Received:
    11
    Reputations:
    0
    Помогите плиз. c++
    [​IMG]
    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 person likes this.
  12. Maldini89

    Maldini89 New Member

    Joined:
    19 Aug 2008
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Подсобите с лабами на Си и Асемблере :confused:
    ---------------
    1. [язык Си] Забить массив символами: латинскими большими и маленькими. Отсортировать: Большиме (заглавные) по алфавиту; Мелкие (прописные) - наоборот.

    2. [Assembler] Ввести с клавиатуры строку символов длинной не менее 20 штук. Среди символов должно быть разнообразие: кирилица (Аа, Бб), латиница (Ss, Rr).
    Сделать листниг (LIST)
    ---------------
    Был бы очень благодарен, если были б комменты :rolleyes:
    тут немного над началом 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");
     
    #732 Maldini89, 12 Nov 2008
    Last edited: 12 Nov 2008
  13. spy-profi

    spy-profi Banned

    Joined:
    12 Dec 2007
    Messages:
    230
    Likes Received:
    19
    Reputations:
    -15
    Ребята помогите написать лабу

    ВОт есть лаба - не могу разобраться нубок я кароч в С++...

    http://s49.radikal.ru/i123/0811/61/690b7f92a659.jpg

    Напишите плиз для Microsoft Visual C++ 2008 Express Edition.


    +++ НАСТАВЛЮ =) Плиз
     
  14. Sinay

    Sinay Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    356
    Likes Received:
    365
    Reputations:
    20
    ты бы хоть задание сюда написал,лично мне влом еще ссылку вбивать
    да и всю лабу бесплатно никто не решит,так: моментами помочь
     
  15. Dr.zomber

    Dr.zomber Member

    Joined:
    27 Aug 2008
    Messages:
    12
    Likes Received:
    11
    Reputations:
    0
    проверь, я не уверен
    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);}
    
     
    #735 Dr.zomber, 12 Nov 2008
    Last edited: 12 Nov 2008
  16. spy-profi

    spy-profi Banned

    Joined:
    12 Dec 2007
    Messages:
    230
    Likes Received:
    19
    Reputations:
    -15
    чтото не то + там факториал i!
     
  17. Dr.zomber

    Dr.zomber Member

    Joined:
    27 Aug 2008
    Messages:
    12
    Likes Received:
    11
    Reputations:
    0
    хз, по тому че я написал можно легко сделать то че у тя, я ток хз как :) Большую часть я сделал.
     
  18. spy-profi

    spy-profi Banned

    Joined:
    12 Dec 2007
    Messages:
    230
    Likes Received:
    19
    Reputations:
    -15
    Я б ето сделал сам. у меня трудности с факториалом
     
  19. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    пример как у 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
    :)
     
  20. groupby

    groupby Elder - Старейшина

    Joined:
    21 Sep 2008
    Messages:
    30
    Likes Received:
    13
    Reputations:
    0
    У тебя неверная формула на картинке)

    там верхняя скобка должна быть в степени не 2*n-1, а 2*n+1

    Тогда все сходится
     
    1 person likes this.
Thread Status:
Not open for further replies.