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

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

Войти
Регистрация
Восстановить пароль
 
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
#1

Замена отрицательных значений в файле нулями - C++

13.01.2014, 09:56. Просмотров 389. Ответов 13
Метки нет (Все метки)

Написал код, для замены отрицательных значений в файле нулями...не могу понять где ошибки, подскажите пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <stdio.h>
#include <fstream>
 
using namespace std;
 
int main ()
{
    int  x;
FILE *f                                                        
f=fopen("dan.dat.txt","rt");
while (fread(&x,sizeof (int),1,f)!=NULL)
{
    if(x<0)x=0
    {
        else cout<< "fILE NO OPEN";
    }
}
fclose (f);
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2014, 09:56     Замена отрицательных значений в файле нулями
Посмотрите здесь:

C++ Замена отрицательных элементов в массиве
C++ Замена отрицательных эл-ов матрицы нулями...что не так?
[C++] Замена отрицательных элементов их модулями C++
C++ [C++] Замена отрицательных элементов их модулями
замена отрицательных чисел C++
Найти в файле сумму всех положительных и отрицательных значений (на си++) C++
Определить наибольшее из всех отрицательных значений, наибольшее из всех значений, количество нулевых значений C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.01.2014, 10:10     Замена отрицательных значений в файле нулями #2
Алексей123456, fread в вашем коде читает не числа, а 4-байтовые последовательности, используйте вместо нее функцию fscanf
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
13.01.2014, 10:15  [ТС]     Замена отрицательных значений в файле нулями #3
Я тут подумал, мне же новые значения записать надо, значит мне не сканф, а принтф надо так?

Добавлено через 1 минуту
Все равно не получается(
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.01.2014, 10:18     Замена отрицательных значений в файле нулями #4
C++
int res;
 
while(1)
{
  res = fscanf(f, "%d", &x);
  if(res <= 0) break;
 
  if(x < 0) x = 0;
  printf("%d\n", x);
}
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
13.01.2014, 10:28  [ТС]     Замена отрицательных значений в файле нулями #5
Cпасибо) Еще вопрос, в вайл почему только 1 написанно?

Добавлено через 2 минуты
И фпринтф и фсканф это для вайлов расширения Dat?
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.01.2014, 10:30     Замена отрицательных значений в файле нулями #6
Цитата Сообщение от Алексей123456 Посмотреть сообщение
Cпасибо) Еще вопрос, в вайл почему только 1 написанно?

Добавлено через 2 минуты
И фпринтф и фсканф это для вайлов расширения Dat?
while(1) тоже самое, что и while(true) , то есть цикл будет длиться пока значение в скобках == истина.
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
13.01.2014, 10:32  [ТС]     Замена отрицательных значений в файле нулями #7
Программа почему то просто полностью стирает мой файл, скажите это именно для dat код?
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.01.2014, 10:36     Замена отрицательных значений в файле нулями #8
Что за расширения Dat?
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
13.01.2014, 10:39  [ТС]     Замена отрицательных значений в файле нулями #9
Так, чтобы уже не было непонятностей, вот как звучала задача: В файле вещественных чисел dan.dat заменить все отрицательные элементы нулями, вот)
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
13.01.2014, 10:39     Замена отрицательных значений в файле нулями #10
Какая разница какое расширение. Данные могут быть записаны либо в двоичном виде, либо в текстовом.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.01.2014, 10:48     Замена отрицательных значений в файле нулями #11
C++
FILE *fin = fopen("dan.dat.txt", "rt"); // файл с числами для чтения
FILE *fout = fopen("dan.dat-out.txt", "wt"); // файл длч записи
 
int res;
 
while( 1 )
{
  res = fscanf (fin, "%d" , &x ) ;
  if( res <= 0 ) break ;
 
  if( x < 0 ) x = 0 ;
  fprintf( fout, "%d \n ", x ) ;
}
 
fclose(fout);
fclose(fin);
Добавлено через 3 минуты
Цитата Сообщение от Алексей123456 Посмотреть сообщение
Так, чтобы уже не было непонятностей, вот как звучала задача: В файле вещественных чисел dan.dat заменить все отрицательные элементы нулями, вот)
Значит нужно использовать временный буфер для чисел.

Добавлено через 2 минуты
и использовать вместо fscanf sscanf
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
13.01.2014, 10:52  [ТС]     Замена отрицательных значений в файле нулями #12
В общем я вам по гроб жизни должен)Спасибо огромное)
programina
13.01.2014, 11:16
  #13

Не по теме:


хотела написать готовый ответ, но опера мини зависла , если еще нужно, то могу написать вечером (на компе в 100 раз легче набирать текст)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2014, 11:22     Замена отрицательных значений в файле нулями
Еще ссылки по теме:

C++ Замена нулями
C++ Замена отрицательных элементов массива на их индексы
В заданном двоичном файле с целыми числами заменить нулями все чётные элементы C++
Найти сумму отрицательных элементов массива; элементы кратные заданному заменить нулями C++
C++ Найти произведение наименьшего и наибольшего значений массива, все отрицательные элементы заменить нулями

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

Или воспользуйтесь поиском по форуму:
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
13.01.2014, 11:22  [ТС]     Замена отрицательных значений в файле нулями #14
Цитата Сообщение от programina Посмотреть сообщение

Не по теме:


хотела написать готовый ответ, но опера мини зависла , если еще нужно, то могу написать вечером (на компе в 100 раз легче набирать текст)

Спасибо) Если что напишу)
Yandex
Объявления
13.01.2014, 11:22     Замена отрицательных значений в файле нулями
Ответ Создать тему
Опции темы

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