Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> с++ сортировка методом вычерпывания, найти ошибки 
:(
    Опции темы
girlsbest
  Дата 23.11.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 19.10.2008

Репутация: нет
Всего: нет



Код

#include <cstring>
#include<iostream>
#include<cmath>
#include<stdio.h>
#include<time.h>

using namespace std;
void createfilestr(char*name)//создание текстового файла
{
    printf("выполняется создание файла\n");
    char*str=new char [81];
    FILE *out;
    if(!(out=fopen(name,"w")))
    {
        printf("ошибка открытия файла\n");
        return;
    }
    printf("введите данные\n");
    printf("введите Ctrl+Z для окончания\n");
    
    scanf("%s",str);
    while(!feof(stdin))
    {
        fprintf(out,"%s\n",str);
        
        scanf("%s",str);
    }
    fclose(out);
}
void readfilestr(char*name)//чтение текстового файла
{
    printf("выполняется чтение файла\n");
    char*str=new char [81];    
    FILE *in;
    if(!(in=fopen(name,"rt")))
    {
        printf("ошибка открытия файла\n");
        return;
    }
    fscanf(in,"%s",str);    
    while(!feof(in))
    {
        printf("%s\n",str);
        fscanf(in,"%s",str);
    }
    fclose(in);
}
void RecMas(char*name,char*b,int n)//запись данных в файл
{
    int i;
    FILE *out;
    if(!(out=fopen(name,"w")))
    {
        printf("ошибка открытия файла\n");
        return;
    }
    for(i=0;i<n;i++)
    {
        fprintf(out,"%d\n",b[i]);
            
    }
    fclose(out);
}
void add(char *a, int , int item)
{
    int i;
    for(i=0;a[i];i++);
        a[i]=item;
}

void small_sort(char *a, int n)
{
    int i,j;
    int temp;
    for(i=1;i<n;i++)
        for(j=0;j<n-i;j++)
        if(a[j]>a[j+1])
        {
          temp=a[j];
          a[j]=a[j+1];
          a[j+1]=temp;
        }
}

void sort(char *mas, int mas_size)
{
   const int max_item=100;    
     int m=mas_size, i ,j ,k ;
     char a[max_item][max_item];
     for(i=0;i<max_item;i++)
          for(j=0;j<m;j++)
              a[i][j]=0;
      for(i=0;i<mas_size;i++)
          add(a[(int)mas[i]], m, mas[i]);
      for(i=0;i<max_item;i++)
          small_sort(a[i],mas_size);
          i=0;
          for(j=0;j<max_item;j++)
          {
              k=0;
              while(k!=m)
              {
                  if(!a[j][k])
                  {
                      k++;
                      continue;
                  }
                  mas[i]=a[j][k];
                  i++;
                  k++;
              }
          }
}

int max_item(char *a, int n)
{
    int max=a[0];
    for(int i=1;i<n;i++)
        if(a[i]>max)
            max=a[i];
    return max;
}
void main()
{
    setlocale (LC_ALL,".1251");
    int n, i,c,count=0;
    const int nmax=200;
    char mas[nmax]; 
    
    char*name=new char[1000];

    cout<<"выберите вариант для получения входных данных:\n 1) непосредственный  ввод\n 2) генерирование с помощью датчика случайных чисели запись в текстовый файл\n 3) ввод из текстового файла\n";
    cin>>c;
    switch (c)
    {
        case 1:cout<<"вводим колличество элементов массива\n";
               cin>>n;
                cout<<"введите элементы массива"<<endl; 
                for(i=1;i<=n;i++)
                    cin>>mas[i];
                sort(mas,n);
                cout<<"отсортированный массив"<<endl;
                for(i=1;i<=n;i++)
                cout<<mas[i]<<endl;
                break;
        case 2:cout<<"вводим колличество элементов массива\n";
            cin>>n;
            cout<<"введите имя файла\n";
            cin>>name;
            srand(time(0));
                for(i=1;i<=n;i++)
                    mas[i]=rand()%100;
                cout<<"элементы сгенерированного массива"<<endl;
                for(i=1;i<=n;i++)
                    cout<<mas[i]<<endl;
                sort(mas,n);
                cout<<"отсортированный массив"<<endl;
                for(i=0;i<n;i++)
                cout<<mas[i]<<endl;
                
                RecMas(name,mas,n);//запись массива в файл
                readfilestr(name);//чтение файла
                break;
        case 3:
            cout<<"введите имя файла\n";
            cin>>name;
            int i=0,count=0;
            FILE *in;
            if((in=fopen(name,"rt"))!=NULL)
            {
             while(fgets(mas,200,in))
             {
                count++;
             }
                fclose(in);
            }
            else
                printf("файл не открывается\n");

            sort(mas,count);
            cout<<"отсортированный массив"<<endl;
            for(i=0;i<count;i++)
                cout<<mas[i]<<endl;
            cout<<"введите имя файла в который записываем результат\n";
            cin>>name;
            RecMas(name,mas,count);//запись массива в файл
            readfilestr(name);//чтение файла
            break;
    }
    
} 
 





люди проверьте плиз прогу...тут сортировка методом вычерпывания...
но ее нужно в первом случаи ввесли вручную и просто вывести отсортированный массив, во втором случаи сгенерировать массив рандомом и записать в файл, а в третьем из файла считать массив ...и его отсортировать

у меня все компилируется..во втором случае генерируем всякие значки ввиде "!*....короче билеберду...но в текстовый файл записывает нормальные числа..а в третьес случае тоже немного глючи...

Это сообщение отредактировал(а) girlsbest - 27.11.2008, 21:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0393 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.