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

Бинарный файл из вещественных чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Связь между приложениями http://www.cyberforum.ru/cpp-beginners/thread295251.html
Здравствуйте, уважаемые форумчане! Есть два приложения - первое на c++ захватывает посредством openCV изображение с вебки и много чего с ним делает. второе на c#. Каким образом, можно сделать так, что бы картинка из 1го приложения оказалась во 2ом приложении (все это должно происходить в реальном времени). Я пробовал сохранять изображение в файл, работает, но если попытаться открыть этот...
C++ Построение класса Обьясните что от меня требуется в этом задании. http://www.cyberforum.ru/cpp-beginners/thread295246.html
C++ Определить, является ли матрица магическим квадратом
помогите решить :sorry: 1)Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы. 2)Вычислить сумму и число положительных элементов матрицы A, находящихся над главной диагональю. Добавлено через 25 минут У меня есть решенная 2) задача на паскале, кто поможет с переводом в С++
Кардиоида C++
Добрый день! Помогите пожалуйста исправить прогу, у меня рисунок не рисует точками(незнаю как ими рисовать): #include <graphics.h> #include <conio.h> #include <math.h> #include <dos.h> int main(void) { clrscr();
C++ Вычислить площади треугольников с помощью формулы Герона http://www.cyberforum.ru/cpp-beginners/thread295209.html
два треугольника заданы координатами своих вершин A, B и C.вычислить площади треугольников с помощью формулы Герона и определить , какой треугольник имеет большую площадь ,при решений задачи используйте следующие данные для первого треугольника A(1,1) B(4,2) C(2,3,5) для второго треугольника A(1,2) B(4,1) C(3,3,5).вычислите длин сторон треугольника и его площади оформить в одной функции длина...
C++ c++ , sprintf() и Дух Плюсов Здравствуйте! Как вам известно во многих учебниках по С++ говорится, что функции printf и scanf использовать можно, но это не в стиле C++ . Мне не совсем понятно как в этом случае дело обстоит со sprintf. Не противоречит ли плюсовому стилю следующий быдлокод (мне это до ужаса не нравится, хочется сделать более изящно): int i=205 char s; std::string str; sprintf(s,"i=%d",i); ... подробнее

Показать сообщение отдельно
Lenoriya
0 / 0 / 0
Регистрация: 18.10.2010
Сообщений: 49

Бинарный файл из вещественных чисел - C++

14.05.2011, 12:09. Просмотров 2303. Ответов 9
Метки (Все метки)

Дан бинарный файл, содержащий вещественные числа (тип double). Перед каждой возрастающей последовательностью значений в файле вставить нулевое значение.

Пишу на Паскале, а Си конкретные проблемы. Вот то, что получилось

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
#include <stdio.h>  //Библиотека функций ввода и вывода
#include<locale.h> //Локализация
int main(int argc, char *argv[])
{
setlocale(LC_ALL,""); // Изменение текущей локали
 
  FILE *f = NULL;  //Объявление файловой переменной
  //Открытие файла для чтения и записи с проверкой
  if((f = fopen("1.txt","rb+")) == NULL){
    //Если файл открыть не удалось, то
    puts("Невозможно открыть файл!");//вывод сообщения
    return 0;                        //и выход
  }
  double val;  //Буфер для чтения данных
  //Чтение первого значения из файла
  if(fread(&val,sizeof(double),1,f) != 1){
    //Если файл пустой, то вывод сообщения и выход
    puts("Пустой файл!");
    return 0;
  }
  //Объявление и инициализация переменных
  double pred = val, nol=0.0; // pred - предыдущее значение
  long ind = 1;
  int fl = 0; // флаговая переменная
 
while(!feof(f)){  //Пока не конец файла
    //Чтение значения из файла
    fread(&val,sizeof(double),1,f);
 
// Если считанное значение больше предыдущего, то
    if(pred < val) {
   //  Если флаг 1, то переходим к следующему значению
    if  (fl==1) {ind++; continue;}
  // иначе записываем ноль на предыдущюю позицию
        else {
       fseek(f,(ind-1)*sizeof(double),SEEK_SET);
       fwrite(&nol,sizeof(double),1,f);
       ind++;
       fseek(f,2*sizeof(double),SEEK_CUR);
       ind++;
       fl=1; // устанавливаем флаг в 1
    }
     }
   else {ind++; fl=0;}  // устанавливаем флаг в 0   
}           
 fclose(f);  //Закрытие файла
  return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru