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

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

Восстановить пароль Регистрация
 
Алексей123456
3 / 3 / 0
Регистрация: 11.05.2013
Сообщений: 56
13.01.2014, 09:56     Замена отрицательных значений в файле нулями #1
Написал код, для замены отрицательных значений в файле нулями...не могу понять где ошибки, подскажите пожалуйста
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 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++ Замена нулями

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

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

Не по теме:


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

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

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