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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2011, 16:03   #1
Millen
 
Аватар для Millen
 
Регистрация: 06.03.2011
Сообщений: 3
По умолчанию СИ чтение чисел из файла, сортировка и вывод

написать 4 функции, сортирующие массив целых чисел 4 способами:
- методом пузырька
- методом вставки
- методом выбора
- быстрая сортировка (можно воспользоваться функцией qsort).

Аргументы командной строки: сначала номер способа, потом числа.

Делал для сортировки из командной строки.

sort
Код:
#include "stdafx.h"
#include<iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "sort.h"
using namespace std;
 
int main(int argc, char* argv[])
{setlocale(0,"");
if (argc > 1)
{
int* forSorting = new int[argc - 1];
int method = atoi(argv[1]);
for (int i = 1; i < argc - 1; i++)
forSorting[i] = atoi(argv[i+1]);
bool sucsess = true;
switch (method)
{
case 1:
pyzir(forSorting, argc - 1); break;
case 2:
vstavk(forSorting, argc - 1); break;
case 3:
vibor(forSorting, argc - 1); break;
case 4:
qsort(forSorting, argc - 1, sizeof(int), compare); break;
default:
{
printf("%s", "Неверный номер метода сортировки\n");
sucsess = false;
}
}
if(sucsess)
{
printf("%s", "Сортированная строка: ");
for (int i = 1; i < argc - 1; i++)
printf("%d%s",forSorting[i], " ");
}
 
delete [] forSorting;
}
 
return 0;
}
sort.cpp
Код:
#include "stdafx.h"
#include<iostream>
#include<time.h>
 
#include <math.h>
 
#include <stdlib.h>
 
 
void pyzir(int *mas,const int prob)
{//сортировка пузырьком
        int x;
        for(int i=0;i<prob;i++)
     {            
         for(int j=prob-1;j>i;j--)
           {     
               if(mas[j-1]>mas[j])
                  {
                    x=mas[j-1];
                    mas[j-1]=mas[j];
                    mas[j]=x;
                  }
           }
     }
}
 
void vstavk(int *mas,const int prob)
{//сортировка вставками
int x,j,i;
  for (i=0; i < prob; i++) 
  {  // цикл проходов, i - номер прохода
    x = mas[i];   
        // поиск места элемента в готовой последовательности 
    for ( j=i-1; j>=0 && mas[j] > x; j--)
      mas[j+1] = mas[j];    // сдвигаем элемент направо, пока не дошли
        // место найдено, вставить элемент
    mas[j+1] = x;
  }
}
 
void vibor(int *mas,const int prob)
{//сортировка методом выбора
        for(int i=0;i<prob-1;i++)
{
int imin=i;
for(int j=i+1;j<prob;j++)
if(mas[j]<mas[imin]) imin=j;
int a=mas[i];
mas[i]=mas[imin];
mas[imin]=a;
}
}
 
 
 
int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}
sort.h
Код:
void pyzir(int *mas,const int prob);
void vstavk(int *mas,const int prob);
void vibor(int *mas,const int prob);
int compare (const void * a, const void * b);
теперь нужно, чтобы числа он брал из файла, сортировал их и записывал в этот же файл. Аргументы командной строки: сначала номер способа, потом файл, в котором записаны числа.
Подскажите, пожалуйста, а то с файлами у меня беда.
Millen вне форума Ответить с цитированием
Старый 07.03.2011, 02:26   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

FILE *fp = fopen(argv[2],"rt+"); // для чтения и записи
дальше нужно заполнить массив, тут либо делайте его статическим и тогда у вас в файле должно быть конкретное число цифр через пробел.
либо если хотите динамически - то боюсь плохо посоветовать как вам узнать число чисел. например fgets(line,80,fp); потом узнать скоко в сроке line пробелов +1 это будет число элементов =)

а cчитать элементы очень просто
for (int i=0; i<n; ++i)
fscanf(fp,"%d",&forSorting[i]);

записать аналогично но с принтф

и fclose(fp);
onewho вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение чисел из файла Zimmo Общие вопросы C/C++ 2 24.10.2010 12:53
if и чтение+вывод из файла .txt webber9989 PHP 4 24.08.2010 22:13
Чтение и вывод ini-файла JoLan Общие вопросы Delphi 5 27.07.2010 21:32
C#, чтение чисел из файла XeN0N Общие вопросы .NET 3 01.03.2009 17:08