Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 75
1

обработка файлов

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

Author24 — интернет-сервис помощи студентам
товарищи подскажите что не так??? заранее благодарен!!! суть задачи следующая: "Найти максимальный из отрицательных элементов в файле целых чисел." То есть в той же папке что и программа я создаю файл допустим "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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2013, 02:02
Ответы с готовыми решениями:

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

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

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

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

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

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

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

Не по теме:

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

1
5498 / 4893 / 831
Регистрация: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2013, 07:21
Помогаю со студенческими работами здесь

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

Обработка файлов
Программа рассчитывает и показывает правильный результат через раз. Как я понял прога работает...

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru