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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vitaxa3581
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 75
#1

обработка файлов - C++

08.03.2013, 02:02. Просмотров 576. Ответов 12
Метки нет (Все метки)

товарищи подскажите что не так??? заранее благодарен!!! суть задачи следующая: "Найти максимальный из отрицательных элементов в файле целых чисел." То есть в той же папке что и программа я создаю файл допустим "1.txt" с набором цифр: 3 5 7 2 8 -2 8 -9 11 21 -32 И когда я ввожу в программе 1.txt мне должно выдать: " Максимальный из отрицательных элементов: -32 "
Прога не работает!!! очень много косяков я в этом уверен, но не могу их найти!!!!
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
#include <iostream>
#include <fstream>
#include <conio.h>
 
using namespace std;
                           
int main(int argc, char* argv[])
  { ifstream file;
    
 
    void ReadPrintIcx(ifstream file); 
    void job(char []);             
    void uslovie();                
     int max;
     char namef;
    uslovie();
    cout <<" Введите имя файла:";
    cin>> namef; 
 
 
file.open ("namef");
   
    if (!file.is_open())
      {
                cerr << " Файл"<<namef<<"не открыт!!!";
       exit(-1);
      }
 
   
    if(max)
       cout << " Максимальный из отрицательных элиментов: "<< max <<endl;
    else
       cout <<" Нет отрицательных." << endl;
    getch();
    return 0;
}
 
void uslovie()
  {
  cout <<" Найти максимальный из отрицательных элементов в файле целых чисел." << endl;
  }
 
 
void ReadPrintIcx(ifstream file)
 {int el;
  cout <<" "<<endl;
  while  (file >> el);
    cout << " |  "<< el;
  file.close();
   getch();
}
 
ifstream file;
void job(char namef[])
 {int el;
 int max;
  file.open ("namef");
   
    if (!file.is_open())
      {
                cerr << " Файл"<<namef<<"не открыт!!!";
       exit(-1);
      }
  cout << " "<<endl;
  while 
     (file >> el);
       if (el<0 && max>el)
             max=el;
        
  file.close();
  getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2013, 02:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос обработка файлов (C++):

Обработка файлов - C++
Дан текстовый файл. Каждая строка имеет следующий формат: фамилия пол рост. Создать новый текстовый файл, включающий список мужчин из...

обработка файлов - C++
дан текстовый файл. получить строку, в которой минимальное число слов.

Обработка файлов - C++
нужна программа, в которой ты вводишь имя файла с клавы, она открывает его, ты задаешь условие, которое программа удалит везде в этом файле...

c++ обработка файлов - C++
ОЧЕНЬ нужна программа на c++. Из текстового файла А.txt вывести кол-во символов (не учитывая пробел) в файл B.txt Например в файле...

обработка файлов - C++
Помогите,пожалуйста.как извлекать из файла нужную информацию?(на си) например каждая строчка содержит дату,время,температуру и тд .И...

Обработка файлов - C++
Написать программу обрабатывающую текстовые файлы, чтобы создавался текстовый файл, в котором символы табуляции , пропуски, которые...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
hofmn
Helter Skelter
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133
08.03.2013, 02:16 #2
Откуда вы знаете, что много косяков? Что говорит компилятор?
vitaxa3581
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 75
08.03.2013, 02:42  [ТС] #3
Цитата Сообщение от hofmn Посмотреть сообщение
Откуда вы знаете, что много косяков? Что говорит компилятор?
компилятор после ввода имени файла вышел из программы даже не показал файл на экран
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
08.03.2013, 02:48 #4
Цитата Сообщение от vitaxa3581 Посмотреть сообщение
компилятор после ввода имени файла вышел из программы
как компилятор мог "выйти из программы"? Компилятор компилирует cpp шники, потом линкер строит из либ и модулей экзешник. Потом экзешник запускается.
При чём тут компилятор ещё раз спрашиваю? Если программа успешно построилась и, судя по твоим словам, запустилась!
vitaxa3581
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 75
08.03.2013, 03:04  [ТС] #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
как компилятор мог "выйти из программы"? Компилятор компилирует cpp шники, потом линкер строит из либ и модулей экзешник. Потом экзешник запускается.
При чём тут компилятор ещё раз спрашиваю? Если программа успешно построилась и, судя по твоим словам, запустилась!
она запустилась, выдало сообщение:"Введите имя файла:"
Я ввожу "1.txt" нажимаю Enter и все! .exe потух, а должно было вывести: | 3 | 5 | 7 | 2 | 8 | -2 | 8 | -9 | 11 | 21 | -32|
и строку : "максимальный из отрицательных: -32 "
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
08.03.2013, 03:12 #6
так а компилятор то тут в чём виноват? его дело скомпилировать Cpp файлы. Даже экзешник генерировать он не обязан.
Цитата Сообщение от vitaxa3581 Посмотреть сообщение
допустим "1.txt" с набором цифр: 3 5 7 2 8 -2 8 -9 11 21 -32 И когда я ввожу в программе 1.txt мне должно выдать: " Максимальный из отрицательных элементов: -32
вообще-то -2
Цитата Сообщение от vitaxa3581 Посмотреть сообщение
if(max)
* * * *cout << " Максимальный из отрицательных элиментов: "<< max <<endl;
* * else
* * * *cout <<" Нет отрицательных." << endl;
И какое значение присвоено тут max? никакое! всё! прога неверна!
vitaxa3581
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 75
08.03.2013, 03:39  [ТС] #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
И какое значение присвоено тут max? никакое! всё! прога неверна!
дело даже не в том что он мах не считает а в том что даже файл на экран не выводит.

Добавлено через 2 минуты
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
И какое значение присвоено тут max? никакое! всё! прога неверна!
C++ (Qt)
1
2
3
4
while 
     (file >> el);
       if (el<0 && max>el)
             max=el;
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
08.03.2013, 03:41 #8
Цитата Сообщение от vitaxa3581 Посмотреть сообщение
while
* * *(file >> el);
* * * *if (el<0 && max>el)
* * * * * * *max=el;
нет, не угадал. Теперь подумай.
подсказка: зачем нужны строки 58 и 16???
vitaxa3581
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 75
08.03.2013, 03:45  [ТС] #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
нет, не угадал. Теперь подумай.
подсказка: зачем нужны строки 58 и 16???
присваивают переменную????
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
08.03.2013, 03:47 #10
ведь присваивается значение max'у, как ты считаешь, объявленному в строке 16,
... или нет?
Зачем же было писать второй раз строку 58???
ну же!
vitaxa3581
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 75
08.03.2013, 03:52  [ТС] #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Зачем же было писать второй раз строку 58???
без 58 ругается!
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
08.03.2013, 04:44 #12
Цитата Сообщение от vitaxa3581 Посмотреть сообщение
без 58 ругается!
а потому что программы не надо писать, наугад вставляя заплатки от ошибок. Ведь если задуматься, ты объявил вторую совершенно другую переменную, не имеющую ничего общего с первой. А надо было, как одно из решений, объявить
и istream file;
и int max;
только один раз, но так, чтобы их было видно из всех функций.
То есть сделать их глобальными переменными!
А для того, чтоб не совершать таких ошибок, нужно было сначало прочитать про области видимости и отличия глобальных переменных от локальных!

Короче ifstream file;
и int max;
следует объявить в строке 8.
Все остальные ОБЪЯВЛЕНИЯ переменных с такими именами удаляй!

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

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
сначало
сначало это такое сначала, только через о

alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.03.2013, 07:21 #13
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
                           
void ReadPrintIcx(ifstream &file); 
int job(char[]);             
void uslovie(); 
 
int main(int argc, char* argv[])
{ 
    setlocale(0, "");
    
    ifstream file;
                   
    int max;
    char namef[20];
    
    uslovie();
    
    cout <<" Введите имя файла: ";
    cin >> namef; 
 
    file.open (namef);
    if (!file.is_open())
    {
       cerr << " Файл " << namef << " не открыт!!!\n";
       system("pause");
       exit(-1);
    }
    
    ReadPrintIcx(file);
    max = job(namef);
 
   if(max)
       cout << " Максимальный из отрицательных элементов: "<< max <<endl;
   else
       cout <<" Нет отрицательных." << endl;
    
    system("pause");
    return 0;
}
 
void uslovie()
{
  cout <<" Найти максимальный из отрицательных элементов в файле целых чисел." << endl;
}
 
 
void ReadPrintIcx(ifstream &file)
{
  int el;
  
  cout << " " << endl;
  while  (file >> el)
    cout << " |  "<< el;
  
  file.close();
}
 
int job(char namef[])
{
    int el = 0;
    int max = 0;
    ifstream file;
    
    file.open (namef);
    if (!file.is_open())
    {
       cerr << " Файл " << namef << " не открыт!!!\n";
       system("pause");
       exit(-1);
     }
     
     cout << " " << endl;
     
     while (file >> el && el >= 0);
     if (el < 0)
     { 
        max = el;
        while (file >> el) 
            if (el < 0 && el > max) max = el;
        
        file.close();
        return max;
    }
    else return 0;
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2013, 07:21
Привет! Вот еще темы с ответами:

Обработка файлов - C++
Программа рассчитывает и показывает правильный результат через раз. Как я понял прога работает всегда НЕ правильно, возможно мне везет и...

обработка файлов - C++
Записать в файл п произвольных натуральных чисел Переписать в другой файл те элементы, которые кратны К. Вывести полученный файл на печать.

Обработка файлов на диске - C++
Помогите пожалуйста. Дан файл, в отдельных строках которого прописаны комбинации цифр. Всего комбинаций 7. Строк больше, т.е. некоторые...

Обработка звуковых файлов - C++
Товарищи, с помощью каких библиотек, заголовочных файлов, структур, классов и т.д. можно обработать звуковые файлы (например WAV). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.03.2013, 07:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru