Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
#1

Считать строку в динамический массив - C++

07.07.2010, 18:03. Просмотров 2572. Ответов 9
Метки нет (Все метки)

помогите считать строку цифр неизвестной длины и перевести в массив целых чисел , код на си обычном
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2010, 18:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Считать строку в динамический массив (C++):

Считать матрицу в динамический массив - C++
Есть функция для статического массива, как ее переделать в динамический? в файле матрица: 4 4 4 4 4 4 4 4 4 4 4 4...

Считать файл в динамический массив - C++
Считай, ничего сложного. Все должно работать, но после первого же прогона крашится экзешник, повторно не запускается. Считываю файл,...

Считать квадратную матрицу в динамический массив. - C++
нужно просто считать квадратную матрицу в динамический массив. Вот реализация кода: int main() { int range = 3; double **matrix =...

Не могу считать матрицу из файла в динамический массив - C++
Вот проблемный кусок программы: fstream f (strConst); if (! f) { cout<<"Error_3"; return 1; } int...

Считать данные из файла в динамический массив соответствующего типа - C++
Здравствуйте. Тема динамические структуры. Считать данные из файла в динамический массив соответствующего типа. 1) В файле целых...

Считать строки файла и поместить в динамический массив строк - C++
Ребята помогите. Нужно считать с файла, в котором 1 строка - 1 слово, строки и поместить их в динамический массив строк типа char...

9
CheshireCat
Эксперт С++
2903 / 1252 / 81
Регистрация: 27.05.2008
Сообщений: 3,437
07.07.2010, 18:07 #2
Мутная какая-то формулировка.... Строка цифр, пусть даже неизвестной длины, - это всего-лишь одно число! Откуда же тут массиву взяться???

Уточни формулировку. Ну и, конечно же, чем конкретно помочь? Где твой код, какие ошибки, что не получается?
0
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
07.07.2010, 18:19  [ТС] #3
у меня есть функция которая считывает из файла последовательность чисел , эти числа надо записать в массив , в каждой ячейке по одному числу, когда я считываю у меня определен размер 1000, а нужно чтобы размер выделялся автоматически
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int file_read(char Buf[1000]){
        int len;
        
        FILE *fp;
        fp=fopen("C:\\name.txt", "r"); 
        if (fp==0)
        {
                printf("файл не найден\n");
                exit(1);
        }
        fgets(Buf, 1000, fp);
        len = strlen(Buf);
 
        printf("данная последовательность:\n");
        for(i=0; i<len; i++){
             Buf[i] -= '0';
             printf("%c", Buf[i]);
                        }
        printf(" \n");
        return Buf[i],i;
        fclose(fp);}
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
07.07.2010, 18:59 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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>
int main()
{
        int len=0;
        int num=0;
        char*Buf;
                
        FILE *fp;
        fp=fopen("D:\\name.txt", "r"); 
        if (fp==0)
        {
            printf("файл не найден\n");
            exit(1);
        }
        while(!feof(fp))
        {
            fgetc(fp);
            num++;
        }
        fclose(fp);
        fp=fopen("D:\\name.txt", "r"); 
        if (fp==0)
        {
            printf("файл не найден\n");
            exit(1);
        }
        Buf=new char[num];
        while(!feof(fp))
                fgets(Buf, num, fp);
                len = strlen(Buf);
 
                printf("Posled:\n");
                for(int i=0; i<len; i++){
                         Buf[i] -= '0';
                         printf("%d", Buf[i]);
                                                }
                printf(" \n");
                  fclose(fp);
                return 0;
}
0
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
07.07.2010, 19:38  [ТС] #5
а зачем два раза открывать файл??
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
07.07.2010, 19:49 #6
suv121, Чтобы на начало файла поставить снова. Как это делается без закрытия/открытия не помню
0
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
08.07.2010, 11:12  [ТС] #7
а как сделать чтобы в функцию file_read поступал динамический массив , а то у меня в меэйне статический
и как в ранс двухмерный массив задать динамически
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
void runs(int *B,int v){    
    int j,k=0,i;
    int m[2][20];
    
    i=0;
    while(i<=v-1){
        j=i;
        while(B[j]==B[i]){        
            j++;
            k++;}
            if(B[i]==0){m[0][k]++;}
            else{m[1][k]++;}
            k=0;
            i=j;}
    
 
 
for(i=0;i<2;i++){
    
    printf("\n последовательности из %d  :\n", i );
    for(j=1;j<11;j++)
        printf("по %d %d\n", j,m[i][j]);
}
    }
 
 
/*функция считывания из файла последовательности*/
int file_read(char *Buf){
        int len,num=0;
        
        FILE *fp;
        fp=fopen("D:\\name.txt", "r"); 
        if (fp==0)
        {
            printf("файл не найден\n");
            exit(1);
        }
                while(!feof(fp))
                {
                        fgetc(fp);
                        num++;
                }
                fclose(fp);
                fp=fopen("D:\\name.txt", "r"); 
        if (fp==0)
        {
            printf("файл не найден\n");
            exit(1);
        }
                Buf=new char[num];
                while(!feof(fp))
                fgets(Buf, num, fp);
                len = strlen(Buf);
 
                printf("Posled:\n");
                for(int i=0; i<len; i++){
                         Buf[i]-= '0';
                         printf("%d", Buf[i]);
                                                }
                printf(" \n");
        return Buf[i];
        fclose(fp);}
 
int main()
{
    setlocale(LC_CTYPE,"RUS");
        char A[1000];
        int i,k,n=0,m,v,B[160];
        file_read(A);
        printf("\n двоичное представление:\n");
        
        for(m=0;m<1000;m++){
            if(A[m]==NULL)
                break;
        else 
            for(i=3;i>=0;--i){
                    printf("%d", B[n]=(A[m]>>i)&1);
                    n++;
                    v=n;}}
        printf("\nразмер=%d",v);
 
 
        printf("\n");
        printf("\n выберете вариант анализа:\n 1.frequency test\n 2.runs test\n 3.выход\n\n");
        int q;
M1:scanf("%d", &q);
if(q==1){
    frequency(B,v);
printf(" для выхода нажмите три или ");}
if(q==2){
    runs(B,v);
printf(" для выхода нажмите три или ");}
if(q==3){
    return 0;}
else{printf("введите другое число\n");
goto M1;}
}
0
Chevit
3 / 3 / 0
Регистрация: 06.07.2010
Сообщений: 18
08.07.2010, 16:30 #8
Цитата Сообщение от Lavroff Посмотреть сообщение
suv121, Чтобы на начало файла поставить снова. Как это делается без закрытия/открытия не помню
int fseek ( FILE *stream, int offset [, int whence] ), где:
stream - указатель на открытый файл;
offset - смещение, измеряемое в байтах от начала файла;
whence - точка, от которой производится смещение:
SEEK_SET (0) - начало файла ;
SEEK_CUR (1) - позиция текущего указателя файла ;
SEEK_END (2) - конец файла (EOF) ;
1
easybudda
Модератор
Эксперт CЭксперт С++
9970 / 5893 / 997
Регистрация: 25.07.2009
Сообщений: 11,165
08.07.2010, 16:41 #9
"... Или, если хочешь, скажу проще..." (с)
#include <stdio.h>
void rewind(FILE *stream);

Функция rewind() перемещает указатель текущей позиции файла в начало заданного потока. Она также очищает связанные с потоком stream признаки конца файла и ошибок.
1
Chevit
3 / 3 / 0
Регистрация: 06.07.2010
Сообщений: 18
08.07.2010, 16:51 #10
Цитата Сообщение от suv121 Посмотреть сообщение
а как сделать чтобы в функцию file_read поступал динамический массив , а то у меня в меэйне статический
и как в ранс двухмерный массив задать динамически
Если в мэйне ты создал статический массив, то передать его как динамический ты не сможешь, единственный вариант - перед передачей массива в функцию, создать динамический массив и передавать уже его...

Объявление двумерного динамического массива:
C++
1
2
3
4
5
int**x=new int*[2];
for(int i=0;i<2;i++)
{
x[i]=new int[20];
}
вроде бы так...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2010, 16:51
Привет! Вот еще темы с ответами:

Файл: Считать все числа из файлав динамический массив - C++
&quot;Считать все числа из файла(количество чисел в файле - произвольное) в динамический массив(целые числа). В программе предусмотреть функции,...

Массив: передать динамический массив в функцию и записать в каждый элемент строку из файла - C++
задача: передать динамический массив в функцию, и записать в каждый элемент строку из файла. количество строк известно вот что у меня...

Как добавить строку в динамический массив? - C++
Уважаемые форумчане подскажите как добавить строку в двумерный динамический массив - в нижнюю его часть? Есть два кода - один: ...

считать строку чисел в массив - C++
#include &lt;sstream&gt; #include &lt;string&gt; #include &lt;iostream&gt; using std::cout; using std::string; using std::istringstream; using...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru