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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Qsort не сортирует, Qsort не сортирует 
V
    Опции темы
SnoVVmaN
Дата 22.2.2014, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Так как пока ещё только начинаю разбираться в азах программирования столкнулся с такой вот проблемой: задача была поставлена так - "Напишите  программу,  которая  сортирует  целые
числа,  хранящиеся  в  файле.  Каждое  число  занимает  одну
строку  и  состоит  из  символов  '0',…'9'.  Перед
отрицательными  числами  стоит  знак  '-'.  Подсказка: 
используйте функцию atoi(), которая преобразует строки в
числа."
Код

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BSIZE 200
int cmp(const void *a,const void *b)
{
    int f1,f2;
    f1=*(int *)a;
    f2=*(int *)b;
    if(f1>f2) return -1;
    else if(f1==f2) return 0;
        else return 1;
}

int main(int argc, char *argv[])
{
FILE *f1;
char buf[BSIZE];
char *strgs[100];
int i,nofl,x[100];
if(argc<2){
    printf("To few perametrs");

    }
else{
f1=fopen(argv[1],"r+b");
if(f1==NULL){
    printf("File not found %s",argv[1]);
    return 0;
    }}
i=0;
while(fgets(buf,BSIZE-1,f1)!=NULL){
    strgs[i]=malloc(strlen(buf)+1);
    strcpy(strgs[i],buf);
    i++;
    }
nofl=i;
fclose(f1);
for(i=0;i<nofl;i++)
{
    x[i]=atoi(strgs[i]);
}
qsort(x,nofl,sizeof(int),cmp);
f1=fopen(argv[1],"w");
for(i=0;i<nofl;i++)
    fputc(x[i],f1);
fclose(f1);
return 0;
}


я написал программу используя функцию qsort но она у меня не сортирует, потому вопрос - где я промахнулся?

Добавлено через 1 минуту и 34 секунды
забыл прикрепить файл, вот

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Моя_головная_боль.c 0,84 Kb
PM MAIL   Вверх
feodorv
Дата 22.2.2014, 16:08 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(SnoVVmaN @  22.2.2014,  09:16 Найти цитируемый пост)
она у меня не сортирует

Вы судите по выводу в файл? Так он не правильный:
Цитата(SnoVVmaN @  22.2.2014,  09:16 Найти цитируемый пост)
for(i=0;i<nofl;i++)
    fputc(x[i],f1);

Используйте fprintf и формат %d.

Добавлено через 2 минуты и 13 секунд
Цитата(SnoVVmaN @  22.2.2014,  09:16 Найти цитируемый пост)
    strgs[i]=malloc(strlen(buf)+1);

Вот это совершенно лишнее. Почему сразу не написать:
Код

    x[i]=atoi(buf);



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
SnoVVmaN
Дата 23.2.2014, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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

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

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


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

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


 




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


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

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