Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2011, 15:19   #1
Doctor.d
Новичок
Джуниор
 
Регистрация: 05.11.2011
Сообщений: 1
По умолчанию проблема с Бинарными файлами

Ребята помогите пожалуйста с задачей. Нужно было задать в отдельном файле бинарный файл содержащий трёхзначные, двузначные, однозначные цифры. И с помощью другой программы отсортировать цифры расположив сначала по порядку. И в полученном наборе найти максимальный и минимальный элементы.
Сформировать бинарный файл и отсортировать его удалось. Подскажите пожалуйста как в полученном наборе найти минимум и максимум?????

коды обоих программ ниже....

*Файл сортировки.*
Код:
#include<stdio.h>
#include<iostream>
#include <math.h>
using namespace std;
struct chislo{
  int x;
  int y;
  int z;
};     
       

int main()
{   chislo a;
     int max=0;
     int min=0;   
    FILE *k;
    FILE *l;
    k=fopen("file1", "rb");
    l=fopen("file2", "wb");
    fseek(k,0,SEEK_SET);
    while(!feof(k))
                   {fread(&a, sizeof(struct chislo), 1, k);
                    if ( a.x*100+a.y*10+a.z>=100)  {fwrite(&a, sizeof(chislo), 1, l);
               // if ((a.x*100+a.y*10+a.z<max) max = a.x*100+a.y*10+a.z)
           // cout<<"Max = "<<max<<endl;
                                          cout<<a.x<<a.y<<a.z<<endl; 
                
                   };
                    }
                    
    fseek(k,0,SEEK_SET);
    while(!feof(k))
                   {fread(&a, sizeof(struct chislo), 1, k);
                    if ( a.x*100+a.y*10+a.z>=10 && a.x*100+a.y*10+a.z<100)  {fwrite(&a, sizeof(chislo), 1, l);   
                    cout<<a.x<<a.y<<a.z<<endl;        
                   };      
                    }
                    
    fseek(k,0,SEEK_SET);
    while(!feof(k))
                   {fread(&a, sizeof(struct chislo), 1, k);
                    if ( a.x*100+a.y*10+a.z<10)  {fwrite(&a, sizeof(chislo), 1, l);
                    cout<<a.x<<a.y<<a.z<<endl;        
                   };
                    }      

fclose(k);
fclose(l);
system ("pause");
}

*Создание бинарного файла*
Код:
#include<iostream>
#include <time.h>
using namespace std;
struct chislo
{int x;
int y;
int z;
};

     int main()
{   srand ((unsigned) time (NULL));
    FILE *k;  chislo a; 
    k=fopen("file1", "wb");
    int c=1;
    int t=1;
    int w=1;
    while (c!=0) {cout<<"Zadayte chislo 3-h znachnoe esli da-1, inache 0\n";
    cin>>c;
    a.x=rand()%9 +1;
    a.y=rand()%9;
    a.z=rand()%9;
    cout<<a.x<<a.y<<a.z<<"/n";
    fwrite(&a, sizeof(chislo), 1, k);
               }
                while (t!=0) {cout<<"Zadayte chislo 2-h znachnoe esli da-1, inache 0\n";
    cin>>t;
    a.x=0;
    a.y=rand()%9+1;
    a.z=rand()%9;
    cout<<a.x<<a.y<<a.z<<"/n";
    fwrite(&a, sizeof(chislo), 1, k);
               }
                while (w!=0) {cout<<"Zadayte chislo 1-e esli da-1, inache 0\n";
    cin>>w;
    a.x=0;
    a.y=0;
    a.z=rand()%9+1;
    cout<<a.x<<a.y<<a.z<<"/n";
    fwrite(&a, sizeof(chislo), 1, k);
               }
               fclose(k);
        system("pause");       
}

Последний раз редактировалось Stilet; 06.11.2011 в 00:32.
Doctor.d вне форума Ответить с цитированием
Старый 05.11.2011, 21:08   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Нужно было задать в отдельном файле бинарный файл содержащий трёхзначные, двузначные, однозначные цифры.
А по-русски можно? Цифра - это по определению один знак.

Можно пример того, как должна, по мысли составителя задания, работать программа? Кстати, сортировки я что-то не вижу.
Abstraction вне форума Ответить с цитированием
Старый 05.11.2011, 23:35   #3
kypck
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Doctor.d Посмотреть сообщение
И с помощью другой программы отсортировать цифры расположив сначала по порядку.
Сформировать бинарный файл и отсортировать его удалось. Подскажите пожалуйста как в полученном наборе найти минимум и максимум?????
Если у вас есть отсортированный по порядку набор чисел, то разве не очевидно, что первое из них будет минимальным, а последнее максимальным?

Цитата:
Сообщение от Doctor.d Посмотреть сообщение
Нужно было задать в отдельном файле бинарный файл
Задать в отдельном файле файл? mindfuck.. требую пояснений.

Цитата:
Сообщение от Doctor.d Посмотреть сообщение
struct chislo{
int x;
int y;
int z;
};
Зачем число хранить в виде структуры? Почему бы не хранить просто число int chislo или массив их, если нужно несколько чисел? а рандомные значения для трехзначных чисел присваивать как рандом от 100 до 999, для двухзначных как рандом от 10 до 99, для однозначных как рандом от 0 до 9.

Цитата:
Сообщение от Doctor.d Посмотреть сообщение
k=fopen("file1", "rb");
l=fopen("file2", "wb");
По-хорошему нужно писать file1.bin, file2.bin
kypck вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с бинарными файлами SoTwisted Помощь студентам 0 25.04.2011 01:59
С# работа с бинарными файлами bondik Общие вопросы .NET 1 01.10.2010 12:18
работа с бинарными файлами klykovka Помощь студентам 7 28.04.2010 11:07
Работа с бинарными файлами StudentPolitech Общие вопросы C/C++ 0 19.05.2009 23:48