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

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

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

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

13.01.2014, 09:56. Просмотров 415. Ответов 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++
Вот код! #include&lt;iostream&gt; using namespace std; int main () { setlocale (LC_ALL,&quot;.1251&quot;); int n,m,i,j; int a; ...

Замена значений в текстовом файле с использованием fstream - C++
Всем привет! Есть некий .txt файл. Структура его проста Наименование: (число) Наименование2: (число2) и т.д. Числа могут быть...

Найти в файле сумму всех положительных и отрицательных значений (на си++) - C++
Здравствуйте уважаемые форумчане! Срочно нуждаюсь в помощи, нужно дописать программу до завтра. Суть. Задано файл действительных чисел....

Замена нулями - C++
Если все элементы какой либо строки данной матрицы равны между собой, то все элементы такой строки замените нулями. И ещё должно быть...

Найти сумму отрицательных элементов массива; элементы кратные заданному заменить нулями - C++
Прошу помощи, мозг уже сломался... Задача: Массивы (одномерные массивы). Найти сумму отрицательных элементов массива. Элементы...

В заданном двоичном файле с целыми числами заменить нулями все чётные элементы - C++
Дан двоичный файл с целыми числами. Все его четные элементы заменить нулями. Рассмотреть 2 варианта: − исходный файл содержит 13 чисел;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
programina
1914 / 599 / 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
1914 / 599 / 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
1914 / 599 / 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
1914 / 599 / 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
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
13.01.2014, 10:39 #10
Какая разница какое расширение. Данные могут быть записаны либо в двоичном виде, либо в текстовом.
programina
1914 / 599 / 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 раз легче набирать текст)

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

Не по теме:


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

Спасибо) Если что напишу)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2014, 11:22
Привет! Вот еще темы с ответами:

Определить наибольшее из всех отрицательных значений, наибольшее из всех значений, количество нулевых значений - C++
Доброго времени суток. Помоги пожалуйста,никак не получается. Использование функций в языке СИ, получающих и возвpащающих pазличное...

Найти произведение наименьшего и наибольшего значений массива, все отрицательные элементы заменить нулями - C++
Дан одномерный массив. Найти произведение наименьшего и наибольшего значений. Заменить нулями все отрицательные элементы массива.

замена отрицательных чисел - C++
Добрый вечер! Пожалуйста помогите с задачей: во входном файле лежит строка, состоящая из букв, чисел и символов. Ее нужно прочесть и там...

[C++] Замена отрицательных элементов их модулями - C++
Задание: Разработать подпрограмму, заменяющую все отрицательные элементы исходной матрицы их модулями и возвращающую кол-во измененных...


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

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

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