[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

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

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

    dddimmm New Member

    Joined:
    12 Nov 2012
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    что требуется с моей стороны? физический доступ к ipad есть.
     
  2. dddimmm

    dddimmm New Member

    Joined:
    12 Nov 2012
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    руки вроде тоже не кривые
     
  3. Ruslan1993it

    Ruslan1993it Member

    Joined:
    24 Jun 2012
    Messages:
    72
    Likes Received:
    23
    Reputations:
    0
    Актуально!
     
  4. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    сокеты.гугл в помощь.
     
  5. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Подскажите, как красиво сконвертировать void* в DWORD ?
     
  6. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    C:
    Code:
    void *a;
    DWORD b;
    b = (DWORD) a;
    C++:
    Code:
    void *a;
    DWORD b;
    b = static_cast<DWORD>(a);
     
  7. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    В кратце - Как замутить функцию, которая бы устанавливала jmp с одного оффсета на другой ?

    Хочу записать оффсет для jmp при помощи WriteProcessMemory. Например, так:

    Code:
    DWORD dwWhere = 0x004EA8CD;
    DWORD dwWhat =   0x6AAF2740;
    WriteProcessMemory(GetCurrentProcess(), (LPVOID)dwWhere, &dwWhat, sizeof(DWORD), NULL);
    
    Проблема в том что байты пишутся в обратном порядке... ? Любой отладчик говорит что jmp идёт совсем на другой адресс.

    Из ollydbg 1.10:

    Code:
    004EA8CD  -E9 4027AF6A                JMP 6AFDD012                        
    
    хотя мне нужно это:

    Code:
    004EA8CD  -E9  байты                JMP 6AAF2740
    

    Собственно, как такое реализуется ? :) Заранее благодарю.
     
    #7487 DeepBlue7, 16 Nov 2012
    Last edited: 16 Nov 2012
  8. wildfires

    wildfires New Member

    Joined:
    2 Dec 2011
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте, можете подсказать, что это за сортировка (модифицированная) ? Гуглил, ничего не нашел, вот объяснение к этой сортировке.

    Просмотр массива начинается с первого элемента. Если для некоторого i a > a [i +1], то элементы a и a [i +1] меняются местами, после чего новый элемент a сравнивается и переставляется с предыдущими элементами массива. Затем просмотр массива возобновляется, начиная с элемента a [i +1] и т. д.. Массив будет упорядочена за один проход (Модифицированный обмен).

    Если можно, поделитесь функцией для этой сортировки, заранее спасибо! (нужно на с++)
     
  9. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1


    Думается мне, что это "Гномья сортировка".
    http: // ru.wikipedia.org/wiki/%D0%93%D0%BD%D0%BE%D0%BC%D1%8C%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0

    P.S. Теперь ссылки на статьи в википедии блочатся как forbidden link?
     
    #7489 Spot, 26 Nov 2012
    Last edited: 26 Nov 2012
  10. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13

    Пузырьковая сортировка это.
     
  11. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Ну это точно не бабл сорт, хоть я тоже вначале подумал, но прочитал внимательно. В бабл сорте нет возвращение назад и там множество проходов по массиву. У него же описан алгоритм, который идёт от начала и до конца одним заходом.

    Gnomesort на мой взгляд, ну или что то схожее(сейчас почему то каждый третий норовит создать "свой" алгоритм сортировки.)
     
  12. Donet++

    Donet++ New Member

    Joined:
    12 Apr 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Почему выводит DIVIDE ERROR
    Code:
    void sums(cRectangle *r1){
    	double n,m,p[100];
    	int z=0,i,j,k,h;
    	for(i=0;i<r1[0].length;i++){
    		for (j=(i+1);j<r1[0].length;j++){
    			for (k=0;k<4;k++){
    				for (h=0;h<4;h++){
    					n=((r1[j].ab[h].a.x-r1[i].ab[k].a.x)/(r1[i].ab[k].b.x-r1[i].ab[k].a.x))-((r1[j].ab[h].a.y-r1[i].ab[k].a.y)/(r1[i].ab[k].b.y-r1[i].ab[k].a.y));
    					m=((r1[j].ab[h].b.x-r1[i].ab[k].a.x)/(r1[i].ab[k].b.x-r1[i].ab[k].a.x))-((r1[j].ab[h].b.y-r1[i].ab[k].a.y)/(r1[i].ab[k].b.y-r1[i].ab[k].a.y));
    					if (n>0 || m<0 && n<0 || m>0){
    						n=((r1[i].ab[k].a.x-r1[j].ab[h].a.x)/(r1[j].ab[h].b.x-r1[j].ab[h].a.x))-((r1[i].ab[k].a.y-r1[j].ab[h].a.y)/(r1[j].ab[h].b.y-r1[j].ab[h].a.y));
    						m=((r1[i].ab[k].b.x-r1[j].ab[h].a.x)/(r1[j].ab[h].b.x-r1[j].ab[h].a.x))-((r1[i].ab[k].b.y-r1[j].ab[h].a.y)/(r1[j].ab[h].b.y-r1[j].ab[h].a.y));
    						if (n>0 || m<0 && n<0 || m>0){
    							p[z++]=r1[j].p+r1[i].p;
    							cout << i << " " << j << " "<< k << " " << h << " "<<p[z-1] << endl;
    						}
    					}
    				}
    			}
    		}
    	}
    }
    [​IMG]
    Code:
    void sums(cRectangle *r1){
    	double n,m,p[100];
    	int z=0,i,j,k,h;
    	for(i=0;i<r1[0].length;i++){
    		for (j=(i+1);j<r1[0].length;j++){
    			for (k=0;k<4;k++){
    				for (h=0;h<4;h++){
    					n=((r1[j].ab[h].a.x-r1[i].ab[k].a.x)/(r1[i].ab[k].b.x-r1[i].ab[k].a.x))-((r1[j].ab[h].a.y-r1[i].ab[k].a.y)/(r1[i].ab[k].b.y-r1[i].ab[k].a.y));
    					m=((r1[j].ab[h].b.x-r1[i].ab[k].a.x)/(r1[i].ab[k].b.x-r1[i].ab[k].a.x))-((r1[j].ab[h].b.y-r1[i].ab[k].a.y)/(r1[i].ab[k].b.y-r1[i].ab[k].a.y));
    					if (n>0 || m<0 && n<0 || m>0){
    						n=((r1[i].ab[k].a.x-r1[j].ab[h].a.x)/(r1[j].ab[h].b.x-r1[j].ab[h].a.x))-((r1[i].ab[k].a.y-r1[j].ab[h].a.y)/(r1[j].ab[h].b.y-r1[j].ab[h].a.y));
    						m=((r1[i].ab[k].b.x-r1[j].ab[h].a.x)/(r1[j].ab[h].b.x-r1[j].ab[h].a.x))-((r1[i].ab[k].b.y-r1[j].ab[h].a.y)/(r1[j].ab[h].b.y-r1[j].ab[h].a.y));
    						if (n>0 || m<0 && n<0 || m>0){
    							p[z++]=r1[j].p+r1[i].p;
    							cout << i << " " << j << " "<< k << " " << h << " "<<p[z-1] << endl;
    						}
    					}
    				}
    			}
    			system ("pause");
    		}
    	}
    }
    [​IMG]
     
    #7492 Donet++, 30 Nov 2012
    Last edited: 30 Nov 2012
  13. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    ставь Breakpoint и смотри пошагово где в твоих вычислениях возникает ошибка. Сдаётся мне, ты где то на ноль делишь.

    А вообще хардкорненько - всё аж пестрит. Такое ощущение, что ты пропустил код через обфускатор.
     
  14. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Для начала попробуй конструкт try-catch - попробуй точно отловить ошибку
    Потом когда узнаешь в каком месте ошибка - попробуй поставить на это место Breakpoint и посмотри, какие значения принимают твои переменные.
    Но в начале поправь свои условия.
    (n>0 || m<0 && n<0 || m>0) попробуй так ((n>0 || m<0) && (n<0 || m>0))
     
  15. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Могу только предположить, так как не знаю что ты там вычесляешь - если n ты высчитываешь используя r1[j].ab[h].a.x, то было бы логично предположить, что для m нужно использовать b на месте а и наолборот, а у тебя в перемешку идёт. Короче проверь формулу.
    Code:
    n=((r1[j].ab[h].a.x-r1[i].ab[k].a.x)/(r1[i].ab[k].b.x-r1[i].ab[k].a.x))-((r1[j].ab[h].a.y-r1[i].ab[k].a.y)/(r1[i].ab[k].b.y-r1[i].ab[k].a.y));
    
    m=((r1[j].ab[h].[B]b[/B].x-r1[i].ab[k].[B]a[/B].x)/(r1[i].ab[k].[B]b[/B].x-r1[i].ab[k].[B]a[/B].x))-((r1[j].ab[h].[B]b[/B].y-r1[i].ab[k].[B]a[/B].y)/(r1[i].ab[k].[B]b[/B].y-r1[i].ab[k].[B]a[/B].y));
    					
    
    m=((r1[j].ab[h].b.x-r1.ab[k].a.x)/(r1.ab[k].b.x-r1.ab[k].a.x))-((r1[j].ab[h].b.y-r1.ab[k].a.y)/(r1.ab[k].b.y-r1.ab[k].a.y));
     
  16. Donet++

    Donet++ New Member

    Joined:
    12 Apr 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0

    Code:
    Спасибо уже разобрался там просто деление на 0 было а формула ((x-x1)/(x2-x1))-((y-y1)/(y2-y1))
     
    #7496 Donet++, 30 Nov 2012
    Last edited: 30 Nov 2012
  17. alucard_fiwh

    alucard_fiwh New Member

    Joined:
    23 Nov 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    прогеры!

    тут мне курсач один чувак накатал, но объяснить ничего не пожелал, пожалуйста, объясните мне по строчкам что к чему:<
    1. #include <stdlib.h>
    2. #include <stdio.h>
    3.
    4.
    5. int main()
    6. {
    7.
    8. const int n=5;
    9.
    10. int linsize = n*n;
    11. int *matrix = (int *)malloc(linsize * sizeof(int));
    12. for (int i=0; i<linsize; i++)
    13. matrix = (rand() % 1000) - 500;
    14. for (int yy=0; yy<n; yy++)
    15. {
    16. for (int xx=0; xx<n; xx++)
    17. printf("%d\t",matrix[xx+yy*n]);
    18. printf("\n");
    19. }
    20. printf("\n");
    21.
    22. //bubble sort
    23. for (int j=0; j<n-2; j++)
    24. for (int i=0; i<n-1; i++)
    25. if (matrix[i*n+1] < matrix[(i+1)*n+1])
    26. {
    27. int tmp = matrix[i*n+1];
    28. matrix[i*n+1] = matrix[(i+1)*n+1];
    29. matrix[(i+1)*n+1] = tmp;
    30. }
    31.
    32. //vivod matrix
    33. for (int yy=0; yy<n; yy++)
    34. {
    35. for (int xx=0; xx<n; xx++)
    36. printf("%d\t",matrix[xx+yy*n]);
    37. printf("\n");
    38. }
    39. printf("\n");
    40.
    41.
    42. //mult
    43. int mult = 1;
    44.
    45. for (int i=0; i<n-1; i++)
    46. if (matrix[i*n] < 0)
    47. mult *= matrix[i*n];
    48.
    49. printf("Mult = %d\n\n",mult);
    50.
    51. //inverse
    52. int rev = n/2;
    53.
    54. for (int i=0; i<rev; i++)
    55. {
    56. int tmp = matrix[i*n+i];
    57. int rv = (n - 1) - i;
    58. matrix[i*n+i] = matrix[rv*n+rv];
    59. matrix[rv*n+rv] = tmp;
    60. }
    61.
    62. //vivod matrix
    63. for (int yy=0; yy<n; yy++)
    64. {
    65. for (int xx=0; xx<n; xx++)
    66. printf("%d\t",matrix[xx+yy*n]);
    67. printf("\n");
    68. }
    69. printf("\n");
    70.
    71. free(matrix);
    72. }
    помогите, у меня курсач горит, а я сама не понимаю:((( и киньте ссылочку на мануал какой нить для нубов...
     
  18. Diversant123

    Diversant123 New Member

    Joined:
    11 Nov 2012
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Помогите, не знаю как решить проблему.
    Визуал студио ругается, что в строке if (str[x] == " ") str[x] = ""; не совместимы типы char и const char.
    Что делать?

    #include <iostream>
    #include <string>
    using namespace std;

    int main ()
    {
    setlocale (LC_ALL, "Russian");
    string str;

    cout << "Введите строку: ";
    getline (cin, str);

    for (int x = 0; x < str.size (); x++)
    {
    if (str[x] == " ") str[x] = "";
    }

    str.replace (str.begin (), str.end (), " ", "");

    cout << "Измененная строка: " << str;

    cout << endl << endl << endl;
    system ("pause");
    return 0;
    }
     
  19. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    потому что char а не const char*.
    str[x] == ' ';
     
  20. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Мне кажется ты допустил опечатку. Совместимость не char и const char, а char и const char*. str[x] - это один байт памяти, в котором по-любому будет что-то находится, и удалить этот байт ты никак не можешь. Разве только если в std::string есть специальный метод для удаления символа по индексу. Если такого метода нету (а я точно не помню) - формируй вторую строку на основе исходной.

    UPD. Уставший, безбожно наврал в своем ответе. Подправил. Сорри за предыдущий ответ если что.
     
    #7500 herfleisch, 7 Dec 2012
    Last edited: 7 Dec 2012
Thread Status:
Not open for further replies.