0 / 0 / 1
Регистрация: 19.05.2010
Сообщений: 30
1

Преобразовать string в последовательность чисел

24.06.2010, 11:53. Показов 3566. Ответов 40
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста, понять свои ошибки.. не могу правильно написать аргументы функций... и вообще наверное проблема в самих функциях... задача такая: у меня есть стринг(набор 1 и 0)= TMS_IR.. мне нужно преобразовать его в последовательность чисел..типа двоичный код..и на определенном этапе "включить" следующий сигнал - заданный символьной строкой... и затем вывести это все на экран... причем запуск программы должен быть только после ввода команды "idcode" ..
буду очень благодарна за комментарии в программе...
и еще... где правильнее поставить определение переменных и почему?
теории начиталась.. а практики 0..


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
char  comand,
      instruction[7],
      TMS_IR[]="1111101100000000",  
      IDCode[]= "01001";
int  i=0,
     n=0,    
     k=0,
     TMS,
     TDI,
       c;   
 
int  TMSf(char TMS_IR[]);
int  Instr();
                        
int TMSf(char ,int )
 
{
 
//int  c=0;
    
          for (i=0; i< 17;i++)
           {if (TMS_IR[i] == '1')
              TMS = 1;
            if (TMS_IR[i] == '0')
             TMS = 0;
           else TMS = 0;
            }
           printf("%i ", TMS);
           return TMS;
}                                  
 
 
 
 
int Instr(void)
{  
 
 
    for (i=11; i<17;i++)
             for (k=0; k< 6;k++)                     
             if (IDCode[k] == '1')
                 TDI = 1;
             else TDI = 0;
                     
             
             return TDI;
}
 
 
 
                                    
 
int main()
{
 
cout <<"vvedite instruction  " ;
cin >> instruction;                                     
 
comand = strcmp(instruction,"idcode");
//printf("%s  ",comand);
                       
 if (comand == 0)               
 
  {  TMSf(int i, char TMS_IR);
   Instr(int i, int k, char IDCode[]);
  
 }
 
 
//  {while (!TDI)}
else printf("Nevernaja komanda  "); 
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2010, 11:53
Ответы с готовыми решениями:

Преобразовать последовательность из n вещественных чисел a1, ..., an.
Ребят подкиньте идей. Дана последовательность из n вещественных чисел a1, ..., an. Преобразовать...

Преобразовать последовательность char в string
Как преобразовать последовательность char в string? т.е. IEnumerable&lt;char&gt; в string ?

Нельзя преобразовать тип Tuple<string,string,string,string> к string
Здравствуйте, у меня возникла проблема. При запуске кода, вылезает ошибка &quot;Нельзя преобразовать тип...

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

40
0 / 0 / 1
Регистрация: 19.05.2010
Сообщений: 30
01.07.2010, 10:30  [ТС] 21
Author24 — интернет-сервис помощи студентам
вот так можно сделать??

C++
1
2
3
4
5
6
 for (j=0;j<60;j++)
        mascom[1][j]= arrtck[i];
        mascom[2][j]= arr[i];
        mascom[3][j]= arrtdi[i];
 
  cout << mascom[i][j] << "\t" << endl;
только хотелось бы,чтобы выводилось 3 строками.а выводится одним столбцом.. как это исправить?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
01.07.2010, 10:54 22
C++
1
2
3
4
5
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 60; j++)
            cout << (j > 0  ? " " : "") << mascom[i][j];
        cout << endl;
    }
1
0 / 0 / 1
Регистрация: 19.05.2010
Сообщений: 30
01.07.2010, 11:42  [ТС] 23
все выводится в один столбец и в конце файла какие-то отрицательные числа..как от них избавиться и вывести это все 3мя строками?

Добавлено через 22 минуты
не могу разобраться как передать массивы в массив... вот весь вариант проги.. может в функциях что-то нет так.. раз они еще столбцами выводят, вместо строк

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
int TCKf(char tcki[], int tck)
{       
        int arrsizetck,arrtck[100];
        int i,c;
 
        for (i = 0; (c = tcki[i]) != '\0'; i++)
             //   for (k=0; k< 6;k++)
                       
        {
        /* printf("%c" "\n", c); */
        arrtck[i] = (c == '0') ? 0 : 1;
       // printf("%d" "\t", arr[i]);
        cout << arrtck[i] << "\t" << endl;
        }
 
    arrsizetck = i;
        return tck;
}
 
 
 
                                                         
int Instr(char idcode[], int TDI)
{       
        int arrsizeId,arrtdi[100];
        int i,c;
 
        for (i = 0; (c = idcode[i]) != '\0'; i++)
             //   for (k=0; k< 6;k++)
                       
        {
        /* printf("%c" "\n", c); */
        arrtdi[i] = (c == '0') ? 0 : 1;
       // printf("%d" "\t", arr[i]);
        cout << arrtdi[i] << "\t" << endl;
        }
 
    arrsizeId = i;
        return TDI;
}
 
                                                        
int TMSir(char tms_ir[], int TMS) 
{       
        
        int arrsize,arr[100];
        int i,c;
        for (i = 0; (c = tms_ir[i]) != '\0'; i++)
        {
        /* printf("%c" "\n", c); */
        arr[i] = (c == '0') ? 0 : 1;
       // printf("%d" "\t", arr[i]);
        cout << arr[i] << " " << endl;
        }
 
    arrsize = i;
 
       // 
        return TMS;
}
                                                       
 
int main()
{
        char  comand, instruction[7];
        //char TMS_IR[]="1111101100000000";
       // char idcode[]= "01001";
        int  i, n, k, TMS, TDI,TMSi,tck,TCK, c, mascom[3][55],j;  //TMSid,
        i = j = n = k = TMS = TDI = TMSi = TCK = 0;//=TMSid
        char tms_ir[] = "11111011000000011000000000000000000000000000000000111110100",
               tcki[] = "01010101010101010101010101010101010101010101010101010101010";
        char idcode[] = "00000000000100100000000000000000000000000000000000000000000";
        int arrtck[100],arr[100],arrtdi[100] ;
        
 
 
        cout <<"vvedite instruction  ";
        cin >> instruction;
        comand = strcmp(instruction,"idcode");
        if (comand == 0)
        {
            TMS = TMSir(tms_ir, TMS);
                         TDI = Instr(idcode, TDI);
             TCK = TCKf(tcki, tck);
          
                mascom[1][j]= arrtck[i];
                        mascom[2][j]= arr[i];
                    mascom[3][j]= arrtdi[i];
 
        for (i = 0; i < 3; i++) {
                       for (j = 0; j < 60; j++)
                      cout << (j > 0  ? " " : "") << mascom[i][j];
                      cout << endl;}
 
             
        }
 
        else 
                cout << "Nevernaja komanda\n"; 
        return 0;
}
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
02.07.2010, 03:26 24
C++
1
2
3
4
5
    for (j = 0; j < 60; j++) {
        mascom[1][j]= arrtck[i];
        mascom[2][j]= arr[i];
        mascom[3][j]= arrtdi[i];
    }
в редакторе должна быть опция "пробелы вместо табуляции"
табуляцию нужно переделать в четыре пробела (чтобы хорошо видно было, где какой блок, и чтобы при глубокой вложенности не было переносов кода)

отрицательные числа - это так называемый "мусор", случайные данные
так как массивы созданы, но в них ничего не записано ни разу, там находится мусор

пример преобразования
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAXINTARRAY  100
 
int TranslateBin(int [], const char *, int);
int PrintArr(const int *, int);
 
/* двоичное число в строковом виде
   переводит в целочисленный массив
   выводит содержимое массива
   после преобразования  */
int main(void) /* ANSI C89 */
{
    char number[] = "0101110101110001110";
    int arr[MAXINTARRAY];
    
    
    TranslateBin(arr, number, 7);
    
    PrintArr(arr, 7);
    
    
    TranslateBin(arr, number, strlen(number));
    
    PrintArr(arr, strlen(number));
    
    
    return EXIT_SUCCESS;
}
 
int TranslateBin(int n[], const char *s, int maxsize)
{
    int c, i;
 
    for (i = 0; (c = s[i]) != '\0' && i < maxsize; i++)
        n[i] = (c == '1') ? 1 : 0;
 
    return 0;
}
 
int PrintArr(const int *n, int size)
{
    while (size-- > 0)
        printf(" %d", *n++);
        
    putchar('\n');    
    
    return 0;
}
Код
[guest@station src]$ ./test
 0 1 0 1 1 1 0
 0 1 0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 0
[guest@station src]$
1
0 / 0 / 1
Регистрация: 19.05.2010
Сообщений: 30
06.07.2010, 15:00  [ТС] 25
а можно пример немного прокомментировать.. а то что-то ваще разобраться не могу...
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
07.07.2010, 02:50 26
TranslateBin() - преобразует символьный массив из нулей и едениц в целочисленный массив из нулей и едениц, она копирует

C
1
2
    char number[] = "0101110101110001110";
    int arr[MAXINTARRAY];
делаем символьный массив из нулей и едениц
заготавливаем целочисленный массив, ничем не заполненный (garbage)

C
1
TranslateBin(arr, number, 7);
в массив arr из массива number копируем семь цифр (0101110)

C
1
TranslateBin(arr, number, strlen(number));
в массив arr из массива number копируем все цифры (0101110101110001110)

0101110101110001110 - это все цифры
хотим, например, скопировать не сначала и не до конца
вот 01011 1010111 0001110, второй кусок
делаем такой вызов

C
1
TranslateBin(arr, number+5, 7);
после этого в arr первые семь элементов будут равны 1 0 1 0 1 1 1

то есть мы преобразовали символы '0', '1' в цифры 0, 1
сами коды символов '0', '1', 'a', 'b' и так далее равны числам, которые совсем с ними не совпадают, какая таблица символов принята в системе, через ту они и будут вычисляться

Код
[guest@station ~]$ echo $'\x32'
2
[guest@station ~]$ echo $'\x31'
1
[guest@station ~]$ echo $'\x30'
0
[guest@station ~]$ echo $'\x40'
@
[guest@station ~]$
код нуля в ASCII равен 0x30 - это 48 в десятичной системе
поэтому, если сделать int n = '0'; , в n запишется не ноль, а 48

массив символов может содержать не только нули и еденицы, поэтому функцию TranslateBin() нужно дорабатывать, чтобы встретив не ноль и не еденицу, она возвращала -1
но это не горит
1
0 / 0 / 1
Регистрация: 19.05.2010
Сообщений: 30
14.07.2010, 15:33  [ТС] 27
подскажите, пожалуйста, как строку преобразовать в набор цифр и из них выбрать только какой-то определенный интервал.. у меня получается какой-то бред..

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
int Instr(char idcode[], int TDI)
{       
    int arrsizeId,arrtdi[500],arrtdo[500], id[64];
        int i,c,k,j=0;
 
        for (i = 0; (c = idcode[i]) != '\0'; i++)
        {
            arrtdi[i] = (c == '0') ? 0 : 1;
               //arrtdo[0]= 0;
                printf("%d", arrtdi[i]);
        }
                printf("\n");
        printf("\n");
 
                      for (i = 0; (c = idcode[i]) != '\0'; i++)
              {
                  arrtdo[0]= 0;
                      arrtdo[i+1] = arrtdi[i];
                      printf("%d", arrtdo[i]);
                  }
                 printf("\n");
         printf("\n");
 
               for (k=0;k<64; k++)  
        {   for (i=(c = idcode[47]); i<(c = idcode[111]);i++);
                 
                id[k]=idcode[i];
                    printf("%d ", id[k]);
                     
                  }
        arrsizeId = i;
        return TDI;
}
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
14.07.2010, 18:23 28
Есть функция atoi. Она переводит строку в целое число, например:
C++
1
2
int a = atoi("123");
cout << a << endl;
Добавлено через 11 минут
Если каждый символ строки - отдельное число, то можно просто от кода символа отнимать 48, например так:
C++
1
2
3
4
5
6
7
8
9
const int n = 5;
int a [n];
int i;
char s [n] = {'1', '2', '3', '4', '5'};
for (i = 0; i < n; i++)
    a [i] = s [i] - 48;
for (i = 0; i < n; i++)
    cout << a [i] << " ";
cout << endl;
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
15.07.2010, 02:29 29
Цитата Сообщение от Jlu
как строку преобразовать в набор цифр и из них выбрать только какой-то определенный интервал
сначала надо преобразовать
а потом из преобразованного выбрать интервал

это две разные функции, одна здесь есть уже
C
1
int TranslateBin(int n[], const char *s, int maxsize)
а выбрать можно стандартной
копирование подмассива
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define STARTELEM  3
#define ENDELEM    5
 
 
int PrintArr(const int *, int);
 
 
int main(void) /* ANSI C89 */
{
    int n[10] = {
        1, 2, 3, 4, 5, 6, 7, 8, 9, 0
    };
    int sub[3];
    
    
    memcpy(
        sub,
        n + STARTELEM - 1,
        (ENDELEM - STARTELEM + 1) * sizeof(int)
    );
    
    
    PrintArr(n, 10);
    
    PrintArr(sub, 3);
    
    return EXIT_SUCCESS;
}
 
int PrintArr(const int *n, int size)
{
    while (size-- > 0)
        printf(" %d", *n++);
        
    putchar('\n');    
    
    return 0;
}
Код
[guest@station src]$ ./test
 1 2 3 4 5 6 7 8 9 0
 3 4 5
[guest@station src]$
1
0 / 0 / 1
Регистрация: 19.05.2010
Сообщений: 30
15.07.2010, 14:05  [ТС] 30
Accept, а можно тоже самое, только на моем примере??

Добавлено через 2 часа 55 минут
вроде разобралась, спасибо!
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
16.07.2010, 03:51 31
преобразование и копирование подмассивов

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
104
105
106
107
108
109
110
111
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAXINTARRAY  100
 
#define SUB1START  1
#define SUB1END    6
 
#define SUB2START  7
#define SUB2END    9
 
#define SUB3START  10
#define SUB3END    13
 
#define SUB4START  14
#define SUB4END    19
 
int TranslateBin(int [], const char *, int);
int CopySubarr(int [], const int [],
               size_t, size_t);
int PrintArr(const int *, int);
 
 
/* переводит строковую запись двоичного числа
   в целочисленный массив
   копирует целочисленные подмассивы
   целочисленного массива */
int main(void) /* ANSI C89 */
{
    char number[] = "0101110101110001110";
    
    int arr[MAXINTARRAY];
    size_t arrnobj;
    
    int sub1[MAXINTARRAY],
        sub2[MAXINTARRAY],
        sub3[MAXINTARRAY],
        sub4[MAXINTARRAY];
    size_t sub1nobj,
           sub2nobj,
           sub3nobj,
           sub4nobj;
    
    
    /* 010111 010 1110 001110 */
    
    TranslateBin(arr, number, strlen(number));
    arrnobj = strlen(number);
    
    CopySubarr(sub1, arr, SUB1START, SUB1END);
    sub1nobj = SUB1END - SUB1START + 1;
    
    CopySubarr(sub2, arr, SUB2START, SUB2END);
    sub2nobj = SUB2END - SUB2START + 1;
    
    CopySubarr(sub3, arr, SUB3START, SUB3END);
    sub3nobj = SUB3END - SUB3START + 1;
    
    CopySubarr(sub4, arr, SUB4START, SUB4END);
    sub4nobj = SUB4END - SUB4START + 1;
    
    printf("%15s", "Array: ");
    PrintArr(arr, arrnobj);
    
    printf("%15s", "Subarray 1: ");
    PrintArr(sub1, sub1nobj);
    printf("%15s", "Subarray 2: ");
    PrintArr(sub2, sub2nobj);
    printf("%15s", "Subarray 3: ");
    PrintArr(sub3, sub3nobj);
    printf("%15s", "Subarray 4: ");
    PrintArr(sub4, sub4nobj);
    
    return EXIT_SUCCESS;
}
 
int TranslateBin(int n[], const char *s, int maxsize)
{
    int c, i;
 
    for (i = 0; (c = s[i]) != '\0' && i < maxsize; i++)
        n[i] = (c == '1') ? 1 : 0;
 
    return 0;
}
 
int PrintArr(const int *n, int size)
{
    while (size-- > 0)
        printf(" %d", *n++);
        
    putchar('\n');    
    
    return 0;
}
 
int CopySubarr(int to[], const int from[],
               size_t start, size_t end)
{
    if (start > end)
        return -1;
    
    from += start - 1;
    
    while (start++ <= end)
        *to++ = *from++;
    
    return 0;
}
Код
[guest@station src]$ ./test
        Array:  0 1 0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 0
   Subarray 1:  0 1 0 1 1 1
   Subarray 2:  0 1 0
   Subarray 3:  1 1 1 0
   Subarray 4:  0 0 1 1 1 0
[guest@station src]$


Добавлено через 3 минуты
там можно сделать
C
1
2
3
4
struct array {
    int arr[MAXINTARRAY];
    size_t nobj;
};
но это для начала будет тяжеловато
1
0 / 0 / 1
Регистрация: 19.05.2010
Сообщений: 30
19.07.2010, 12:13  [ТС] 32
а если у меня есть 2 такие строки ..с набором 0 и 1.... и надо чтобы значения второй строки считывались(изменялись), только тогда, когда в первой строке 0..как это сделать??
например1: 010101010101010101010101010101
2 : 00000111000101

получить: 0101010101010101010101010101
2 :0 0 0 0 0 1 1 1 0 0 0 1 0 1
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
19.07.2010, 14:44 33
Цитата Сообщение от Jlu Посмотреть сообщение
только тогда, когда в первой строке 0
Когда в первой строке все нули?
Если да, то можно написать подпрограмму, например:

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
#include <iostream>
 
using namespace std;
 
bool check (char * str)
{
    char * p = str;
    while (*p != '\0')
    {
        if (*p == '1')
        {
            p = NULL;
            return false;
        }
        p++;
    }
    p = NULL;
    return true;
}
 
int main()
{
    char * str1 = "01010101";
    char * str2 = "00011100";
 
    if (check (str1))
    {
        // Что-то делаем со строкой 2
    }
    else
    {
        // Не делаем ничего
    }
 
    return 0;
}
Если только первый символ должен быть нулём, то можно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    char * str1 = "01010101";
    char * str2 = "00011100";
 
    if (str1 [0] == '0')
    {
        // Что-то делаем со строкой 2
    }
    else
    {
        // Не делаем ничего
    }
 
    return 0;
}
0
0 / 0 / 1
Регистрация: 19.05.2010
Сообщений: 30
19.07.2010, 17:25  [ТС] 34
я имею ввиду. что первая строка считываясь посимвольно....если символ 0, то можно считывать один символ второй строки..если 1, то не считываем новое значение второй строки,а оставляем старое значение
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
19.07.2010, 17:36 35
Так?

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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, ".1251");
 
    const int n = 6;
           int i;
 
    char str1 [] = "101010";
    char str2 [] = "111000";
    char c;
 
    for (i = 0; i < n; i++)
    {
        if (str1 [i] == '0')
        {
            cout << "Введите новое значение второй строки\n";
            cin >> c;
            str2 [i] = c;
        }
    }
 
    cout << str2 << endl;
    return 0;
}
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
20.07.2010, 04:12 36
выборочное копирование

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAXNUMBER    100
#define MAXINTARRAY  100
#define SELECTVALUE  0
 
int TranslateBin(int [], const char *, int);
int PrintArr(const int *, int);
int SelectByValue(int [], const int [],
                  size_t, const int);
 
/* переводит строковые записи двоичных чисел
   в целочисленные массивы;
   выборочно копирует отдельные числа
   из одного массива в другой по заданному значению */
int main(void) /* ANSI C89 */
{
    char num1[MAXNUMBER] = "010101010101010101";
    char num2[MAXNUMBER] = "000111011111110111";
    
    int arr1[MAXINTARRAY];
    size_t arr1size;
    
    int arr2[MAXINTARRAY];
    size_t arr2size;
    
    
    TranslateBin(arr1, num1, arr1size = strlen(num1));
    TranslateBin(arr2, num2, arr2size = strlen(num2));
    
    printf("Array 1: ");
    PrintArr(arr1, arr1size);
    printf("Array 2: ");
    PrintArr(arr2, arr2size);
    
    
    printf(
        "Array sizes are %s",
        (arr1size == arr2size ? "equal" : "different")
    );
    
    printf(
        ", %s" "\n",
        (arr1size == arr2size ? "continue..." : "stop.")
    );
    
    if (arr1size != arr2size)
        return EXIT_FAILURE;
        
    
    SelectByValue(arr2, arr1, arr1size, SELECTVALUE);
    
    printf("Array 1: ");
    PrintArr(arr1, arr1size);
    printf("Array 2: ");
    PrintArr(arr2, arr2size);
    
    
    return EXIT_SUCCESS;
}
 
int TranslateBin(int n[], const char *s, int maxsize)
{
    int c, i;
 
    for (i = 0; (c = s[i]) != '\0' && i < maxsize; i++)
        n[i] = (c == '1') ? 1 : 0;
 
    return 0;
}
 
int PrintArr(const int *n, int nobj)
{
    while (nobj-- > 0)
        printf(" %d", *n++);
        
    putchar('\n');    
    
    return 0;
}
 
int SelectByValue(int to[], const int from[],
                  size_t fromnobj, const int selvalue)
{
    int n;
    
    while (fromnobj-- > 0) {
        if ((n = *from) == selvalue)
            *to = n;
        from++;
        to++;
    }
    
    return 0;
}
Код
[guest@station src]$ ./test
Array 1:  0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Array 2:  0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1
Array sizes are equal, continue...
Array 1:  0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Array 2:  0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
[guest@station src]$
0
0 / 0 / 1
Регистрация: 19.05.2010
Сообщений: 30
21.07.2010, 16:04  [ТС] 37
вот еще вопросик... у меня есть 3 массива типа int как мне создать структуру..и вообще..как создаются структуры и объявляются??
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
21.07.2010, 16:43 38
Цитата Сообщение от Jlu Посмотреть сообщение
вот еще вопросик... у меня есть 3 массива типа int как мне создать структуру..и вообще..как создаются структуры и объявляются??
С помощью ключевого слова struct
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
21.07.2010, 19:04 39
Что-то типа.

C++
1
2
3
4
5
6
struct Arr
{
   int*Arr;
   int*Arr2;
   int*Arr3;
};
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
21.07.2010, 19:29 40
Цитата Сообщение от Lavroff Посмотреть сообщение
Что-то типа
C
1
2
3
4
struct arr3 {
   int * pArr[3];
   size_t sizes[3];
};
можно так сделать... а лучше
C
1
2
3
4
struct arr {
   int * pData;
   size_t nSize;
} arrays[3];
1
21.07.2010, 19:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2010, 19:29
Помогаю со студенческими работами здесь

Преобразовать последовательность целых чисел по правилу
Здравия желаю! помогите! срочняком необходимо! буду душевно признателен))) Даны целые числа...

Преобразовать последовательность целых чисел по правилу
Даны целые числа a1,...,a2...b1.....b25. Преобразовать последовательность b1,...,b25 по правилу : ...

Преобразовать последовательность целых чисел по заданному правилу
даны целые числа a1,a2...an и b1,b2...bn. Преобразовать последовательность b1,b2...bn по правилу :...

В файле А записана последовательность целых чисел. Преобразовать их в вещественные и записать в файл В по 5 в строку.
В файле А записана последовательность целых чисел. Преобразовать их в вещественные и записать в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru