Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Нарушение прав доступа


Автор: Negent 18.7.2014, 20:34
Доброго времени суток, уважаемые программисты!
Вкратце: шефом была поставлена задача выяснить остатки витой пары на складе... Однако простое суммирование - это не наш метод, поэтому я написал программу, которая считывает длины из файла и потом суммирует эти длины, далее, сортирует в порядке возрастания и в будущем (надо написать часть) записывает массив в файл.
Однако я получил сумму и сбой "Необработанное исключение. Нарушение прав доступа".
Прошу помочь, подсказать, где ошибка в цикле, использующем "while". Компилятор (MS Visual C++ 2010) спотыкается именно там.
Код

#include "stdafx.h"
#include <fstream>
#include <iostream>


using namespace std;

void main ()
{

    ifstream FromFile;
    FromFile.open ("spisok.txt");
    if (!FromFile.is_open())
    {
        cout<<"File not found!";
        exit(EXIT_FAILURE);
    }
    //Инициализация массива и счётчика
        int const size = 100;
        double arr[size];
        int i = 0;
        double sum = 0;
        double TempValue = 0;
    //Считывание элементов массива 
    while (FromFile.good ()) 
    {
        FromFile>>TempValue;
        arr[i] = TempValue;
        cout<<TempValue<<" ";
        sum +=TempValue;
        cout<<"Sum: "<<sum<<endl;
        i++;
    }
        if (FromFile.eof()) cout<<"End of file!"<<endl;
        else if (FromFile.fail ()) cout<<"Type mismatch!"<<endl;
        else if (sum == 0) cout<<"No data!"<<endl;
        else cout<<"Unknown error!"<<endl;
    //Сортировка элементов массива
    for (i=0; i<size-1; i++)
    {
        if (arr[i]>arr[i+1])
        {
            TempValue = arr[i+1];
            arr[i+1] = arr[i];
            arr[i] = TempValue;
        }
    }
    i=0;
    while (i<size-1)
    {
        cout<<"arr["<<i+1<<"] = "<<arr[i]<<"  ";
        i++;
    }
    system ("pause");
}


Файл, простой текстовый со следующими данными:
Цитата
140 108 50 21 20 15 11 32 14 14 9 7 10 4.5 8 6 4 16 6 3 7 5.2 5 4 5 8 6 9.5 7 4.2 4.5 8 5 5 5 7 13 13 7 4 9 5 7 8 4 13 13 6 8 5 5 5 18 9 10 6 8 10 19 13 9 10 13 23 13 14 14 10 27 12 21 9 22 31 10 10 89 7 4 4 4 5 3.9 35 5 8 6 4.2 4 15 5 5 7.5 9 11 4 4 3 14 11 2 11 2.5 13 10 5 5 13 0

Автор: baldina 18.7.2014, 22:44
джедай... скопипастить в ексель уже не круто?

...
походу файл гуд более чем 100 раз. std::vector<double> поможет

Добавлено через 2 минуты и 29 секунд
зы. для сортировки есть std::sort(), а для обмена значениями std::swap()

Добавлено через 4 минуты и 43 секунды
кстати, в приведенном примере файла 109 значений

Автор: baldina 18.7.2014, 22:59
когда получится, загляни http://ideone.com/qw8sln
только не подглядывать!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)