Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

08.03.2013, 02:02. Просмотров 596. Ответов 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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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++
Написать программу обрабатывающую текстовые файлы, чтобы создавался текстовый файл, в котором символы табуляции , пропуски, которые...

12
hofmn
Helter Skelter
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133
08.03.2013, 02:16 #2
Откуда вы знаете, что много косяков? Что говорит компилятор?
0
vitaxa3581
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 75
08.03.2013, 02:42  [ТС] #3
Цитата Сообщение от hofmn Посмотреть сообщение
Откуда вы знаете, что много косяков? Что говорит компилятор?
компилятор после ввода имени файла вышел из программы даже не показал файл на экран
0
Kuzia domovenok
2121 / 1951 / 193
Регистрация: 25.03.2012
Сообщений: 6,771
Записей в блоге: 1
08.03.2013, 02:48 #4
Цитата Сообщение от vitaxa3581 Посмотреть сообщение
компилятор после ввода имени файла вышел из программы
как компилятор мог "выйти из программы"? Компилятор компилирует cpp шники, потом линкер строит из либ и модулей экзешник. Потом экзешник запускается.
При чём тут компилятор ещё раз спрашиваю? Если программа успешно построилась и, судя по твоим словам, запустилась!
0
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 "
0
Kuzia domovenok
2121 / 1951 / 193
Регистрация: 25.03.2012
Сообщений: 6,771
Записей в блоге: 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? никакое! всё! прога неверна!
0
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;
0
Kuzia domovenok
2121 / 1951 / 193
Регистрация: 25.03.2012
Сообщений: 6,771
Записей в блоге: 1
08.03.2013, 03:41 #8
Цитата Сообщение от vitaxa3581 Посмотреть сообщение
while
* * *(file >> el);
* * * *if (el<0 && max>el)
* * * * * * *max=el;
нет, не угадал. Теперь подумай.
подсказка: зачем нужны строки 58 и 16???
1
vitaxa3581
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 75
08.03.2013, 03:45  [ТС] #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
нет, не угадал. Теперь подумай.
подсказка: зачем нужны строки 58 и 16???
присваивают переменную????
0
Kuzia domovenok
2121 / 1951 / 193
Регистрация: 25.03.2012
Сообщений: 6,771
Записей в блоге: 1
08.03.2013, 03:47 #10
ведь присваивается значение max'у, как ты считаешь, объявленному в строке 16,
... или нет?
Зачем же было писать второй раз строку 58???
ну же!
1
vitaxa3581
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 75
08.03.2013, 03:52  [ТС] #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Зачем же было писать второй раз строку 58???
без 58 ругается!
0
Kuzia domovenok
2121 / 1951 / 193
Регистрация: 25.03.2012
Сообщений: 6,771
Записей в блоге: 1
08.03.2013, 04:44 #12
Цитата Сообщение от vitaxa3581 Посмотреть сообщение
без 58 ругается!
а потому что программы не надо писать, наугад вставляя заплатки от ошибок. Ведь если задуматься, ты объявил вторую совершенно другую переменную, не имеющую ничего общего с первой. А надо было, как одно из решений, объявить
и istream file;
и int max;
только один раз, но так, чтобы их было видно из всех функций.
То есть сделать их глобальными переменными!
А для того, чтоб не совершать таких ошибок, нужно было сначало прочитать про области видимости и отличия глобальных переменных от локальных!

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

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

Не по теме:

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

1
alsav22
5434 / 4829 / 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;
 
}
1
08.03.2013, 07:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2013, 07:21
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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