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

Считать из файла до определенного символа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить значения элементов последовательности. http://www.cyberforum.ru/cpp-beginners/thread415457.html
У меня вот такая замудрёная задача!!!! 7. Вычислить значения элементов последовательности z/3, (z-1)/4, (z-2)/5, (z-3)/6, … . Отпечатать каждое третье значение. Вычисления закончить, когда очередной элемент будет отличаться от предыдущего на величину, не превышающую заданную величину d. Сначала написал по своему: #include <iostream >...
C++ Сортировка данных по алгоритму Задание: Написать программу сортировки данных по алгоритму прямого слияния на трех лентах; Реализовать заданный алгоритм сортировки на языке С++ в виде void-функции. Вроде более менее правильно написал, вначале правильно сортирует, но потом - бред получается, не могу понять где ошибка помогите плиз. #include<iostream> #include<fstream> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread415443.html
Перевод числа из десятичной в шестнадцатеричную систему счисления C++
Здраавствуйте, помогите найти ошибку в этом коде. Непонимаю почему при переводе таких чисел как 16,32,64,128 и тд не дописываются нули. #include <iostream> using namespace std; void main () { unsigned int tmp=0, mask = 0xF0000000; cout<<"Enter the number"<<endl;
C++ Даны площади нескольких кругов
Помогите сделать программу! Даны площади нескольких кругов. Найти радиус самого маленького из них! Заранее спасибо!
C++ Программирование цикла с переадресацией http://www.cyberforum.ru/cpp-beginners/thread415408.html
Помогите решить задачку. Программирование цикла с переадресацией, нужно найти номер максимального числа. Работали через прогу Comp Model. есть десять чисел, сравнение начинается с 40-ой ячейки. Не лезьте со своими задачами в чужие темы, создавайте новую!
C++ Библиотека потокового ввода/вывода А верно ли, что данная библиотека является вещью абсолютно бесполезной для Windows-программирования и в настояящее время используется исключительно для учебных целей? подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
23.12.2011, 21:45     Считать из файла до определенного символа
Цитата Сообщение от fasked Посмотреть сообщение
Не говоря уже о том, что new должен бросать исключение
приведу примерчик где bad_alloc не отработает, вобщем я вернусь...!Пока нет времени тут воевать за истину

Добавлено через 42 минуты
go, fasked, компилируем этот код(особенно в кодблоксе гонит) и пробуем ввести единичку и девять ноликов, потом десять и как бы понимаем что bad_alloc не так уж хорош
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
 
//Проверяет переденное в функцию число элементов m
//если m некорректно или же память выделить не уалось
//функция извещает об этом
//еси всё ок под строки arr выделяется память и в n число строк 
int ** allocMemoryForMatrix(double m, int ** arr, int &n)
{ 
    if (m < 1 || m != (int)m || INT_MAX < m)
        cout<<"Nevernaya velichina n\n";
    else
    {
        try
        {
            if(!(arr=new int *[(n = int(m))]))
                cout<<"Nevernaya velichina n\n";
            else
                n = int(m);
        }
        catch (bad_alloc &) 
        {
            arr = NULL;
        }
    }
    return arr;
}
//В зависимости от параметра bHandInput либо вводим элементы матрицы вручную bHandInput == true
//либо читаем их из файла
int ** setMatrixElements(bool bHandInput, ifstream &ifs, int ** arr, int n, bool &bCorrect)
{
    int i, j;
    for(i = 0; i < n && bCorrect; i++)
    {
        arr[i] = new int[n];
        for(j = 0; j < n && bCorrect; j++)
        {
            if(bHandInput)
            {
                cout<<"matr["<<i + 1<<"]["<<j + 1<<"] = ";
                cin>>arr[i][j];
            }
            else
            {
                if(!ifs.eof())
                    ifs>>arr[i][j];
                else
                    bCorrect = false;
            }
        }
    }
    return arr;
}
 
//Возвращает сумму элементов побочной диагонали с началом в arr[row][col]
int getSumOfDiagonal(int row, int col, int n, int ** arr)
{
    int i,j,sum = 0;
    if(col == 0)
    {
        for(i = row; i < n; i++)
            sum += arr[i][i - 1];
    }
    else
    {
        for(j = col; j < n; j++)
            sum += arr[j - 1][j];
    }
    return sum;
}
 
int main(int argc, char * argv[])
{
    int ** matr = NULL;//Указатель на массив
    int i,j,n,max_val,cur_val;
    double m;
    bool bCorrect = true;//Флаг отвечающий за корректность ввода
    ifstream ifs;//Поток для чтения
    //argv[0] всегда содержит путь к самой программе
    if(1 < argc)
    {
        //Пробуем открыть для чтения переданный путь
        ifs.open(argv[1]);
        if(!ifs)
        {
            cout<<"Oshibka otkritia : "<<argv[1]<<"\n";
            bCorrect = false;
        }
        else
        {
            cout<<"\tChtenie dannih is faila\n";ifs>>m;
            if(ifs.eof())
                cout<<"File ne soderzhit elementov matrici ili pust\n";
            else
            {
                if(matr = allocMemoryForMatrix(m, matr, n))
                    matr = setMatrixElements(false, ifs, matr, n, bCorrect);
                if(!bCorrect)
                    cout<<"File dannih soderzhit ne vse elementi matrici\n";
                else
                    cout<<"Chtenie okoncheno...\n";
            }
            ifs.close();
        }
    }
    else
    {
        cout<<"\tRychnoi vvod\n";
        while(!matr)
        {
            cout<<"Enter n : ";cin>>m;
            matr = allocMemoryForMatrix(m, matr, n);
        }
        matr = setMatrixElements(true, ifs, matr, n, bCorrect);
    }
    if(bCorrect)
    {
        cout<<"\tVvod matrici korrekten!Otobrazhenie matrici\n";
        for(i = 0; i < n; i++)
        {
            for(j = 0; j < n; j++)
                cout<<setw(3)<<matr[i][j]<<" ";
            cout<<"\n";
        }
        if(n == 1)
            max_val = matr[0][0];
        else
        if(n == 2)
            max_val = matr[0][0]*matr[1][1];
        else
        //полагаем max_val равной сумме элементов 1-й
        //побочной диагонали под главной
        max_val = getSumOfDiagonal(1, 0, n, matr);
        //Если n == 1 ни в один из циклов не зайдём
        for(i = 2; i < n - 1; i++)
        {
            if(max_val < (cur_val = getSumOfDiagonal(i, 0, n, matr)))
                max_val = cur_val;
        }
        //теперь пробираем диагонали выше главной
        for(j = 1; j < n - 1; j++)
        {
            if(max_val < (cur_val = getSumOfDiagonal(0, j, n, matr)))
                max_val = cur_val;
        }
        cout<<"Result : "<<max_val<<"\n";
    }
    system("pause");
    return 0;
}
PS:fasked, ну не доработал алгоритм выделения памяти, дело же было в алгоритме чтения и парсинга цитат, как бы я мог и константно текст вбить - сути алгоритма это не изменило бы
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(i = 0; i < length; i++)
* * * * * * * * * * * * {
* * * * * * * * * * * * * * * * if(text[i] == '"')
* * * * * * * * * * * * * * * * if(fpos == -1)
* * * * * * * * * * * * * * * * * * * * fpos = i;
* * * * * * * * * * * * * * * * else
* * * * * * * * * * * * * * * * if(lpos == -1)
* * * * * * * * * * * * * * * * * * * * lpos = i;
* * * * * * * * * * * * * * * * if(-1 < fpos && -1 < lpos)
* * * * * * * * * * * * * * * * {
* * * * * * * * * * * * * * * * * * * * for(j = fpos; j <= lpos; j++)
* * * * * * * * * * * * * * * * * * * * * * * * cout<<text[j];
* * * * * * * * * * * * * * * * * * * * cout<<endl;
* * * * * * * * * * * * * * * * * * * * fpos = -1;
* * * * * * * * * * * * * * * * * * * * lpos = -1;
* * * * * * * * * * * * * * * * }
* * * * * * * * * * * * }
К тому же я из этого исходил
Цитата Сообщение от ITZver Посмотреть сообщение
Поэтому сложности здесь ненужны.
. М.б для вас в асме написать для "простоты"???

Добавлено через 5 минут

Не по теме:

PS:Не надо меня держать за профана, указывая на детские азы. Я всегда пишу под уровень ТС. Как бы говорил уже очерчиваем проект - определяем сроки написания и потом выкладываем экзешники, мне бы хотелось на многих здесь посмотреть как они попробуют меня за пояс заткнуть - как бы обижать тут все горазды, т.к. держитесь дружной бражкой один за всех и все за одного, я же решаю всё сам и что то вроди прихвостней мне абсолютно НЕ НАДО!
Почему на форуме нет раздела - померяемся интелектом в написании проекта!Достало уже такое отношение!!!

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