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

Парсинг чисел из текстовика - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ c++ массивы http://www.cyberforum.ru/cpp-beginners/thread329494.html
Дан массив размером N.Подсчитать максимальное количество подряд идущих элементов, каждый из которых больше предыдущего.
C++ Функции и файлы! Для продвинутых, я не могу разобраться. Есть ли тут профи, которые смогут мне помочь, плз? Квадратная матрица действительных чисел хранится в файле. Оформить в виде функции запись матрицы в файл, вывод матрицы из файла на экран, перестановку главной и побочной диагонали в матрице. Добавлено через 22 часа 47 минут Так-то я всё сделал, кроме функций, нужно только функции включить и всё. #include<iostream> #include<stdio.h>... http://www.cyberforum.ru/cpp-beginners/thread329487.html
C++ Перевернуть строку
Написал программу которая переворачивает строку #include<iostream> #include<cstring> using namespace std; void reversit(char ); int main () {setlocale(LC_ALL,"Rus"); cout<<"Введите вашу строку -->";
Подскажите кто-нибудь, как записать квадратную динамическую матрицу в файл??? C++
Подскажите кто-нибудь, как записать квадратную динамическую матрицу в файл??? Вот я её заполнил: #include<iostream> #include<stdio.h> int**matr; int n,i,j; matr=new int*; for(i=0;i<n;i++) matr=new int; for(i=0;i<n;i++)
C++ Отсортировать по возрастанию и по убыванию введенные числа http://www.cyberforum.ru/cpp-beginners/thread329466.html
Здраствуйте. Пользователь вводит 10 чисел, отсортировать ихпо возростанию и по убыванию
C++ Вывести факториал числа Здраствуйте. Пользователь вводит любое число, а программа должна вывести факториал этого числа. Я думал сделать єто с помощью if но не получилось :wall: Помогите плз подробнее

Показать сообщение отдельно
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
04.07.2011, 21:49     Парсинг чисел из текстовика
Вот на С как вариант. Не целые в файле должны быть с точкой = 3.14, массив растёт динамически при переполнение границы массива индексом он престраивает массив с новым размером....
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
// аллокатор - управление динамической памятью
void  allocate(double** arr, int  size, int* alloc) {
    if(!(*arr))
        (*arr) = (double*) malloc(sizeof(double) * (*alloc));
    else {
        if(size + 1 >= (*alloc)) {
            *alloc = size + (*alloc);
            (*arr)    = (double*) realloc((*arr), sizeof(double) * (*alloc));
        }
    }
}
 
 
// сортировка  по-asc
double*  sort(double* arr, int size) {
    int inx = 0, i;
    double  tmp;
    while(1) {
        inx   = 0;
        for(i = 0; i < size - 1; i++) {
            if( *((arr) + i) > *((arr) + i + 1) ) {
               tmp    = *((arr) + i + 1);
               *((arr) + i + 1) = *((arr) + i);
               *((arr) + i)       = tmp;
               inx    = 1;
            }
        }
       if(! inx)
           break;
    }
    return arr;
}
 
 
// простой тест
int is_test(const char* src) {
    int len = 0;
    while( *src ) {
          if(isdigit(*src++))
             len++;
    }
    return (! len) ? 0 : 1;
}
 
 
// сам процесс парсинга чисел
 
int parse(const char* src, double** arr, int size, int* alloc) {
   char  snum[32];
   char* iter = snum, ch;
   do {
         if( isdigit(*src) || *src == '-' && ! isdigit(ch) || *src == '.' && isdigit(ch)){
            *iter = *src;
            ++iter;
         } else {
             *iter = '\0';
             if(is_test(snum)) {
                allocate(arr, size, alloc);
                *(((*arr)) + size) = atof(snum);
                size++;
             }
             snum[0] = '\0';
             iter    = snum;
         }
         ch = *src;
   } while( *src++ != '\0' );
   return size;
}
 
 
int main(void)
{
   int        size  = 0, alloc = 32, i;
   double* arr   = NULL;
   char     snum[1024];
   char*   iter;
 
   FILE*  fp   = fopen("double.txt", "r");  
   if(! fp)
       exit(1);
 
   while(! feof(fp)) {
        snum[0] = '\0';
        fgets(snum, sizeof(snum), fp);
        size = parse(snum, &arr, size, &alloc);
   }
   fclose(fp);
 
   arr = sort(arr, size);  // сортируем
 
   fp  = fopen("sort.txt", "w");
 
   for(i = 0; i < size; i++)  {
       fprintf(fp, "%.2f\n", *((arr) + i));
       fprintf(stdout, "%.2f\n", *((arr) + i));
   }
   fflush(fp);
   fclose(fp);
 
   free(arr);
   arr = NULL;
 
   system("pause");
   return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru