Меню сайта
Наш опрос
Оцените мой сайт
Всего ответов: 6
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2014 » Июль » 22 » Сортировка и файлы в Си
16:00
Сортировка и файлы в Си

Вы хотите купить керамическую плитку? Тогда купить плитку Вы можете на специальном сайт еhttp//luxury-plitkaru/plitka_dlya_pola_keramika/22html в интернете.

Недавно столкнулась с очень интересным "багом" в Си, который не могу объяснить. Для двух сортировок создается текстовый файл со случайными целыми числами и затем каждый раз для получения исходного неотсортированного массива происходит считывание из него, чтобы заново упорядочить (отсортировать). Вот код программы:#include "stdio.h"#include "math.h"#include "conio.h"#include "stdlib.h"#include "limits.h"#include "time.h"FILE *f,*g;void Rand(int n,int A[]){int i;srand %d ",A[i]);   }}void Vvod(int n,int A[]) {  int i;  %d",&A[i]);}void Vivod(int A[],int n){ int %d ",A[i]);    }fprintf(g,"\n");}void Xoar(int A[],int m,int n){int ); scanf("%d",&n); if (n>10000) {printf("Error");} Rand(n,A);   out.txt","w"); Vvod(n,A);//ввод из файла Vivod(A,n);//вывод не отсортированного массива Puzirek(A,n);//алгоритм сортировки "пузырьком" Vivod(A,n);//вывод отсортированного массива Vvod(n,A);//ввод из файла Vivod(A,n);//вывод не отсортированного массива (!) Xoar(A,m,n-1);//алгоритм сортировки Хоара Vivod(A,n);//вывод отсортированного массива    return 0;}Красным цветом отметила место в программе, где выдается массив отсортированный, т.е. как будто и не считывали массив с файла. Что делать в этом случае?Путем проб и отладочных мер, проблему так и не решили. Не понятно, почему при считывании из файла, используя функцию fscanf(f, "%d", &A[i]), ничего не происходит и массив остается прежним, отсортированным.Заметили, что при создании файла опустили функцию fclose(f). Добавив ее, программа заработала верно!? Интересно, что же происходит, если мы не закрыли файл? В Паскале, если не закрыть файл, то он просто не запишет последнюю строку. И вроде бы при считывании должны быть нули в массиве - нет данных в файле. Но почему в Си массив не заменяется "нулями", остается неизменным? Как то нелогично.

Просмотров: 164 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Форма входа
Календарь
«  Июль 2014  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей