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

Исправить косяк в программе - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему не заносит в массив? http://www.cyberforum.ru/cpp-beginners/thread892865.html
for(int i=0;i<N;++i) { for(int j=0;j<N;++j) { if (k=rand() % 4 == 1) map==WALL; else map==-1; printf("%i\n",map); }
C++ Оформить в виде функции Помогите пожалуйста, вот задание: Оформить каждый пункт задания в виде функции. Все необходимые данные для функции должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается. Пункты: 1)поиск совпадающих строки и столбца 2)поиск сумм строк с хотя бы одним отрицательным элементом #include <iostream> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread892864.html
C++ Алгоритм и код программы (микрофотографии)
Помогите определить размер частиц, посчитать количество частиц, определить размер. (микрофотографии) Заранее спасибо!
C++ Очистка памяти delete[];
Есть функция ввида: void loltest(int md3) { char* randChars; int cCount; if(md3 <= 0) cCount = 13; else
C++ Получить из исходного массив положительных чисел и отсортировать его по возрастанию методом пузырька http://www.cyberforum.ru/cpp-beginners/thread892825.html
2. Дан массив N целых чисел. Получить из него массив положительных чисел и отсортировать его по возрастанию методом пузырька
C++ Перегрузка () Здарвствуйте, помогите с задачей: Имеется класс, создающий двумерный массив, в этом классе нужно реальзовать метод перегружающий () для того, что бы можно было доставать элемент из массива по его индексу #ifndef _MATRIX_H_ #define _MATRIX_H_ #include <iostream> #include<Windows.h> #include<time.h> using namespace std; подробнее

Показать сообщение отдельно
Jeev@s
2 / 2 / 0
Регистрация: 13.11.2012
Сообщений: 21

Исправить косяк в программе - C++

06.06.2013, 02:28. Просмотров 502. Ответов 19
Метки (Все метки)

Ребят, есть программа, работающая с текстовым файлом (потоковый ввод-вывод). Если в файле имеется один символ (корректный-цифра), программа выводит сообщение, что файл пуст, однако, если добавить в конец пробел, выдает, что символ один. Как это исправить? Чтобы выводилось правильное определение количества элементов. Можно это сделать средствами работы с потоками?

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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <conio.h>
#include <cctype>
#include <Windows.h>
using namespace std;
 
int main()
{
        setlocale(LC_CTYPE, "RUS");
        system ("cls");
        ifstream f;
        char name[255];
     
           for( ; ; )
        {       cout<<"Введите имя файла с расширением: ";
              cin.getline (name,255); 
                f.open(name, ios_base::in);
                if(!f.is_open()) {
                        cout<<"Ошибка открытия файла: ' "<<name<<" ' "<<"\n"
                            <<"Нажмите любую клавишу для продолжения..."<<"\n";
                        _getch();}
                else break;
                           }
        int n = 0;
        int buff = 0;
        while (!f.eof())
        {
                f>>buff;
                char ch = f.peek();
                if (!f.eof() && (f.fail() || !(ch == ' ' || ch == '\n')))
                {
                        cout<<"Ошибка чтения!"<<"\n" 
                            <<"Найден недопустимый символ в элементе с порядковым номером: "<< n+1<<"\n"
                            <<"Дальнейшее выполнение программы прервано. Исправьте файл."<<"\n"
                            <<"Нажмите любую клавишу для выхода...";
                        _getch();
                        return -1;
                }
        }
            if (n==0)
        {
                cout<<"Файл пуст! Дальнейшее выполнение программы невозможно! Заполните массив!"<< "\n"
                    << "Нажмите любую клавишу для выхода...";
                _getch();
                return -1;
        }
       if(n==1)
        {
                cout<<"Файл содержит один элемент!" <<"\n"
                    <<"Нажмите любую клавишу для выхода...";
                _getch();
                return -1;
        }
        f.close();
        cout<<n;
        int *p = new int[n]; // char *p=new(nothrow) // int *p; p= new int;  // *p=new int (1) // delete [] p; delete p
        if (p == NULL)
        {
                cout<<"\n"<<"В системе недостаточное количество памяти для создания массива."
                    <<"\n"<<"Дальнейшее выполнение программы прервано." << "\n"
                    <<"Нажмите любую клавишу для выхода...";
                _getch();
                return -1;
        }
        else
        {
            int sum=0;
                f.open(name, ios :: in);
                for(int i = 0; i < n; i++)
                {
                    f>>p[i];
                }
                cout << "\n" << " Исходный массив: " << "\n";
                cout << setw(10) << "Номера: ";
                for (int i = 1; i <= n; i++)
                {
                    cout << setw(3) << i << ' ';
                }
                cout << "\n";
                cout << setw(10)<<"Элементы: ";
                for (int i = 0; i < n; i++)
                {
                    cout << setw(3) << *(p+i) << ' ';
                }
                cout << "\n";
                    for(int i = 0; i < n; i++)
                        if(p[i]<3)
                        sum++;
                delete [] p;
                cout<<"\n"<<"Cумма элементов массива, меньших трех: "<<sum<<"\n";
                cout<<"\n Для выхода нажмите любую клавишу...";
                cout << "\n";
                f.close();
                                
                }
        _getch();
        return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru