Форум программистов, компьютерный форум CyberForum.ru

Борьба за ресурсы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ "Аномалия" в сортировке массивов http://www.cyberforum.ru/cpp-beginners/thread409382.html
Есть массив чисел int. В котором присутствуют как отрицательные, так и положительные числа. Есть два цикла for - один из которых записывает все отрицательный числа в конец массива, другой в начало, на вид они одинаковы, почему по разному работают? Вот код первого (отрицательный числа в конец) int num = { -1,-2,3,4,-1,6,-7,8, -1, -1 }; for(int y=0; y<10-1; y++){ for(int f=0;...
C++ Строки библиотека string.h Дана строка символов, состоящая из букв и цифр. Найти количество букв в данной строке. Использовать функции библиотеки string.h http://www.cyberforum.ru/cpp-beginners/thread409376.html
C++ Вывести табличные функции
Всем доброй ночи. Выручайте, задали по программированию задачу. Очень плохо понимаю предмет, но сдать надо, так как сессия на носу! --------------------------------------------------------------------------------------------- Условие: Вывести табличные функции f(x,y)= (x cos x + y cos y)/x-y При x=0 (п/8) п; y=0 (п/16) п Сделать две разных программы. C операторами: 1.задействовать...
2 мерный массив. C++
Дана целочисленная прямоугольная матрица. определить: 1) Количество отрицательных элементов в тех строках которые содержат хотябы один нулевой элемент. 2) номера строк и столбцов всех седловых точек матрицы. Примечание. Матрица А имеет седловую точку Aj, если Aj является минимальным элементом в i-й строке и максимальным в j-v столбце. помогите пожалуйста)
C++ Сохранение вектора в текстовый файл http://www.cyberforum.ru/cpp-beginners/thread409360.html
Есть класс в котором содержится только указатель на строку символов. Далее есть vector<OurClass> v. Как сохранить в текстовый файл наш вектор более грамотно и экономично Чтение из файла назад в вектор производиться не будет :D Добавлено через 56 минут Поднимаю
C++ не могу разобратся, что-то не так с сохранением в файл(VS 2010) помогите пожалуйста, вроде все работает кроме бинарного сохранения в файлTPop*data,*tmp; FILE*Txt; int fh=0; int deln=0; CString S; if(savegood==-1){MessageBox(_T("Оберіть режим збереження."),_T("Інформація"),MB_OK|MB_ICONINFORMATION);return;} F=_tfopen(Sfilename,_T("wb")); if(!F){MessageBox(_T("Файл не відкритий!"),_T("Помилка!"),MB_OK|MB_ICONSTOP);return;} if(savegood){... подробнее

Показать сообщение отдельно
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
17.12.2011, 03:17     Борьба за ресурсы
а написать программу проверить? вроде же форум не для обсуждения футбольных новостей. Подход был следующим. Скомпилировал 2
программы
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <errno.h>
 
void* a(void* argv)
{
    char *t = argv;
    while( *t ){
        printf ( "h1=%s \n", t );
        ++t;
    }
}
void* b(void* argv)
{
    char *t = argv;
    while( *t ){
        printf ( "h2=%s \n", t );
        ++t;
    }
}
 
int main(void)
{
    char *str = "this is a string";
    pthread_t h1, h2;
 
    if ( pthread_create ( &h1, NULL, a, str ) ){
        printf ( "%s", strerror ( errno ) );
        exit ( EXIT_FAILURE );
    }
    if ( pthread_create ( &h2, NULL, a, str ) ){
        printf ( "%s", strerror ( errno ) );
        exit ( EXIT_FAILURE );
    }
 
    if ( pthread_join ( h1, NULL ) ){
        printf ( "%s", strerror ( errno ) );
        exit ( EXIT_FAILURE );
    }
    if ( pthread_join ( h2, NULL ) ){
        printf ( "%s", strerror ( errno ) );
        exit ( EXIT_FAILURE );
    }
 
    exit ( EXIT_SUCCESS );
}
в разных вариантах со всеми оптимизациями. Менял только имена функции в pthread_create(). Далее скрипт с использованием gnu binary utilites для обоих бинарников с перенаправлением stdout. наспех написанный
test.c
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <errno.h>
 
/*
void* a(void* argv)
{
    char *t = argv;
    while( *t ){
        printf ( "h1=%s \n", t );
        ++t;
    }
}
void* b(void* argv)
{
    char *t = argv;
    while( *t ){
        printf ( "h2=%s \n", t );
        ++t;
    }
}*/
 
int main(void)
{
    /*char *str = "this is a string";
    pthread_t h1, h2;
 
    if ( pthread_create ( &h1, NULL, a, str ) ){
        printf ( "%s", strerror ( errno ) );
        exit ( EXIT_FAILURE );
    }
    if ( pthread_create ( &h2, NULL, a, str ) ){
        printf ( "%s", strerror ( errno ) );
        exit ( EXIT_FAILURE );
    }
 
    if ( pthread_join ( h1, NULL ) ){
        printf ( "%s", strerror ( errno ) );
        exit ( EXIT_FAILURE );
    }
    if ( pthread_join ( h2, NULL ) ){
        printf ( "%s", strerror ( errno ) );
        exit ( EXIT_FAILURE );
    }*/
 
    size_t const size = 200;
    int n = size / sizeof(int);
    int null_array[ n ];
    unsigned char buf_from_aa[ size ];
    unsigned char buf_from_ab[ size ];
    unsigned char buf[ size + 1 ];
    char *str1 = "/home/deadman/file1.txt";
    char *str2 = "/home/deadman/file2.txt";
    int i = 0;
    FILE *f_ab, *f_aa;
    buf[ size ] = 0;
 
    while ( i < n ){
        null_array[ i ] = 0;
        ++i;
    }
 
    if ( ( f_ab = fopen ( str1, "r" ) ) == NULL ) {
        printf ( "%s", strerror ( errno ) );
        exit ( -1 );
    }
 
    if ( ( f_aa = fopen ( str2, "r" ) ) == NULL ) {
        printf ( "%s", strerror ( errno ) );
        exit ( -2 );
    }
 
    while ( !feof( f_aa ) )
    {
        memcpy( buf_from_aa, null_array, size );
        memcpy( buf_from_ab, null_array, size );
        memcpy( buf, null_array, size );
 
        if ( ( fgets( buf_from_aa, size, f_aa ) != NULL ) && (fgets( buf_from_ab, size, f_ab )) != NULL )
        {
            i = 0;
            while ( i < size )
            {
                if ( buf_from_aa [ i ] != buf_from_ab[ i ] ){
                    printf ( "\nбуфер а + а" );
                    memcpy ( buf, buf_from_aa, size );
                    printf ( "%s\n", buf );
                    printf ( "буфер а + b" );
                    memcpy ( buf, buf_from_ab, size );
                    printf ( "%s", buf );
                }
                ++i;
            }
        }
    }
 
    fclose( f_aa );
    fclose( f_ab );
 
    exit ( EXIT_SUCCESS );
}
, вывод
консоли
буфер а + а 8048630: c7 44 24 08 5a 87 04 movl $0x804875a,0x8(%esp)

буфер а + b 8048630: c7 44 24 08 25 87 04 movl $0x8048725,0x8(%esp)

буфер а + а 8048630: c7 44 24 08 5a 87 04 movl $0x804875a,0x8(%esp)

буфер а + b 8048630: c7 44 24 08 25 87 04 movl $0x8048725,0x8(%esp)

буфер а + а 8048630: c7 44 24 08 5a 87 04 movl $0x804875a,0x8(%esp)

буфер а + b 8048630: c7 44 24 08 25 87 04 movl $0x8048725,0x8(%esp)

буфер а + а 8048630: c7 44 24 08 5a 87 04 movl $0x804875a,0x8(%esp)

буфер а + b 8048630: c7 44 24 08 25 87 04 movl $0x8048725,0x8(%esp)

Process returned 0 (0x0) execution time : 0.004 s

. Дальнейшие импровизации и анализ оставляю вам. Просьба не судить исходник . Сложность задачи не требует труЪ подхода.

Добавлено через 4 минуты
Добавлю еще что файлы с дампом одинакового размера.
 
Текущее время: 23:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru