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

Обработка массива, считанного из файла; найти ошибку - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалить все цифры из заданного слова и подсчитать количество изъятий http://www.cyberforum.ru/cpp-beginners/thread1211536.html
Удалить все цифры из заданного слова и подсчитать количество изъятий. будто простое, но вообще не разбираюсь в символах, может кто-то поможет)
C++ Какая разница между аргументами и параметрами? #include <iostream> using namespace std; //объявление функции int mystrlen(char *str); //В скобочках это параметр функции ? int main() { cout << "Длина строки ПРИВЕТ ВСЕМ равна: "; http://www.cyberforum.ru/cpp-beginners/thread1211530.html
виртуальные функции C++
Составить программу с одним родительским классом и двумя потомками. Все поля должны быть закрытыми. Потомки должны содержать виртуальные функции. Для родительского класса создать статическую функцию выдачи результатов расчета виртуальной функции на экран монитора. Составить тестирующую программу. В ней нужно реализовать вывод параметров объектов на экран монитора. (Вариант 1) составить...
Std::thread постоянное выполнение функции с выводом в QtGUI C++
Необходимо, чтобы обеспечивалось постоянное передвижение картинок в qGraphicsView. При этом одна из них управляемая пользователем, а другая двигается либо по указанной траектории(траектория может меняться в зависимости от действий пользователя). Иными словами игрушка, в которой монстр преследует героя,если герой близко. Вопрос в том, как сделать, чтобы монстр двигался постоянно (используя...
C++ Существует N городов для каждой пары городов (і, j) можно построить путь http://www.cyberforum.ru/cpp-beginners/thread1211519.html
Существует N городов для каждой пары городов (і, j) можно построить путь который соединит их, но не заходит в другие города. Стоимость строительства такого пути составляет а (і, j) Определить самый быстрый способ строительства дорог который позволил бы потратить из каждого города в любой другой
C++ Массивы. Найти среднее арифметическое отрицательных элементов Найти среднее арифметическое отрицательное элементов. у меня все работает, только скажите как мне находить количество отрицательных элементов чтобы посчитать среднее #include <iostream> #include <conio.h> #include <iomanip> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main() { const int n=2,m=2; подробнее

Показать сообщение отдельно
Монтгомери
0 / 0 / 0
Регистрация: 10.09.2013
Сообщений: 112
18.06.2014, 17:50     Обработка массива, считанного из файла; найти ошибку
Есть задание: программа считывает из файла массив целых чисел.
Найти максимум (max) и минимум (min) среди них, после чего найти среднее арифметическое отрицательных чисел, расположенных между max и min.

Написал такую программу:
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 <iostream>
#include <fstream>
using namespace std;
void main(void)
{int max,min,maxind=0,minind=0,i=0,n,m,dim,counter=0;
double s=0;
char *filename[64];
gets(filename);
ifstream input_file(filename);
ofstream output_file("C:\\temp\\result.txt");
char temp[11];
while(!input_file.eof())
{input_file>>temp;
++i;}
dim=i;
cout<<dim<<"\n";
if(dim==1){cout<<"Only one number in the file!";output_file<<"Result: 0";goto end;}
if(dim==2){cout<<"Only two numbers in the file!";output_file<<"Result: 0";goto end;}
int *num=new int[dim];
input_file.close();cout<<"Closed\n";
input_file.open(filename);cout<<"Opened\n";
input_file>>temp; 
num[0]=atoi(temp);cout<<num[0];
max=num[0];
min=num[0];
i=1;
while(!input_file.eof())
{input_file>>temp; 
num[i]=atoi(temp);cout<<num[i]<<"\n";
++i;}
for(i=0;i<dim;i++)
{if(num[i]>=max){max=num[i];maxind=i;}
if(num[i]<=min){min=num[i];minind=i;};}
cout<<"max="<<max<<"\nmin="<<min;
if(maxind>minind){m=maxind;n=minind+1;}
if(maxind<minind){n=maxind+1;m=minind;}
for(i=n;i<m;i++)
{if(num[i]<0)s=s+num[i];++counter;}
s=s/counter;
cout<<s;
output_file<<"Result: "<<s;
end: system("pause");}
Но появилось несколько проблем:

1. Программа выдаёт ошибку, когда доходит до gets

2. После замены
C++
1
2
char *filename[64];
gets(filename);
на
C++
1
char*filename="C:\\file.txt"
Показывает пустое чёрное окно с курсором и ни на что не реагирует.


1. Я думаю, что это из-за того, что часть массива filename осталось незаполненным. Но какой тогда способ использовать для ввода полного имени файла с клавиатуры?

2. Не представляю даже, что там не так. Но я наставил кучу cout для того, чтобы видеть, на каком этапе программа прервётся. Ни один cout не вывел ничего на экран, значит ошибка где-то ещё до них.

3. Ещё вопрос. Это:
C++
1
2
input_file>>temp; 
num[i]=atoi(temp)
можно ли заменить этим:
C++
1
input_file>>num[i];
Будет работать?

Заранее спасибо

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