Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Работа с записями ANSI C
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
vani2 vani2 вне форума
Member
 
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.12.2010
По умолчанию Работа с записями ANSI C - 05.12.2010, 23:32

Необходимо реализовать программу на языке С(ANSI), которая фильтрует записи некоторого
файла, передаваемого как параметр программы. Результат фильтрации исходного файла
записываются в файл с именем - res.txt.
Записи результата должны быть отсортированы с использованием наперед заданного
алгоритма сортировки. Используемый в задании алгоритм сортировки определяется
вариантом задания.
Исходный файл с данными формально представляет собой матрицу размера m×n , где
m - строки матрицы (число записей файла), n - число столбцов матрицы (поля записи,
разделенные символом форматирования).m,n наперед неизвестны.
Поля записи разделены ";",строки "\n".
Значение элементов матрицы может быть трех типов:
1. Целое.
2. Вещественное.
3. Строка символов(могут быть пробелы).
Фильтрация осуществляется по одному столбцу по условию <,> или =.
Например:FIELD:1 > 0(по первому полю)

Основные операции должны быть разнесены по отдельным функциям.
Так же должно быть реализовано динамическое распределение памяти.
В оперативной памяти исходный файл должен храниться в виде структуры.

Вот текст моей программы, она еще не полная, в ней полно ошибок и недостающих функций.
Основной мой вопрос: как считать из файла информацию в структуру, чтобы было пригодно затем фильтровать, сортировать данные. Сделал структуру из 3х типов с адресом последующей. Но не приложу ума, как после этого в нормальном порядке, а не с конца, анализировать файл и фильтровать его.Или стоит использовать лругую структуру?
Сохранение и сортировку представляю как делать.
Компилирую на gcc.
Жду любых предложений,вопросов по заданию. Надеюсь вы мне поможете. Заранее спасибо.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct itabl{
int cl;
char sim[20];
double dr;}

struct tablic { struct itabl tabl;
struct tablic *inf; }

int read(char name[20],int,char,char kr[20]);
int krit(char);
void write(void);

int main(int argc, char **argv)
{
int t;
krit(argv[1]);
write(void);
}

int krit(char fname[20]) {
int f,v;
char z,k[50];
if (q==0) exit(2);
printf(“ Enter the filter\n FIELD: ”);
scanf(“%d [<>=]%s”,f,z,k);
read(fname,f,z,k);
return 0;
}

int read(char fn[20],ff,zz,kk) {
FILE *d,*r;
int tt,flag,k,m,n,ff;
char c;s[20],zz,kk[20];
struct tabl tb;
if ((d=fopen(fn,”r”))&&(r=fopen(“res.txt”,”w”))==NULL ) {
printf(“Open error\n”);
tt=0;
exit(1); }
else {
printf(“Reading…\n”);
tt=1; }
tmp1=tmp2=NULL
while ((c=fgetc(d))!=EOF) {
flag=0;
if (!(tmp1=(struct tablic*)malloc(sizeof(struct tablic)))) {
printf("No memory\n");
exit(3); }
if ((c!='\n') {
if ((c!=';') {
s[i]=c;
i++; }
k=0;
m=0;
n=0;
if (isdigit(s[1])) {
for (j=0;j<i;j++) {
if (s[j]=='.') {
tmp1->tabl.dr=atof(s);
tmp1->inf=tmp2;
tmp2=tmp1
k++;
flag=1; } }
if (flag==0) {
tmp1->tabl.cl=atoi(s);
tmp1->inf=tmp2;
tmp2=tmp1
m++;
flag=1; }
if (flag==0) {
strcpy(tabl.sim,s);
tmp1->inf=tmp2;
tmp2=tmp1
n++; }
for(j=0;i<j;j++) free(s[j]);}
else // проверяем фильтр, затем сохраняем
}
return tt;
}

void write(void) {
/*Описание переменных*/
if (fclose(r)) {
printf(“Save error\n”);
exit(2); }
else
printf(“Saving…\n”);
fclose(d);
}
Ответить с цитированием
  (#2 (permalink)) Старый
vani2 vani2 вне форума
Member
 
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.12.2010
По умолчанию 07.12.2010, 23:27

При таком объявлении выдаёт ошибку в последней строчке:two types specified in one empty declaration.Почему?
struct itabl {
int cl;
char sim[20];
double dr; }

struct tablic { struct itabl tabl;
struct tablic *next; };

И ещё: какое значение будет у переменных,входящих в структуру,если я их объявил, а значение им не присваивал?
Ответить с цитированием
  (#3 (permalink)) Старый
Rocky Rocky вне форума
Member
 
Сообщений: 1,405
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.10.2004
По умолчанию 11.12.2010, 03:11

>>>>> При таком объявлении выдаёт ошибку в последней строчке:two types specified in one empty declaration.Почему?
Ну.... наверное потому что точки с запятой нет после закрывающей структуру itabl скобки...

>>>>> И ещё: какое значение будет у переменных,входящих в структуру,если я их объявил, а значение им не присваивал?
мусор.. лучше присвой что-нибудь.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с учетными записями ar-tur Windows 7 7 16.01.2011 14:47
Работа с записями Vetal07 Вопросы начинающих программистов 5 11.05.2009 17:15
Работа с записями на подобии базы данных Black Monarh Delphi 2 07.04.2008 12:01
Проблема с учётными записями!!!! gazovik Софт и программы 5 03.09.2007 15:58
ANSI C/C++ компиляторы Matematic С/С++ 40 07.04.2007 00:05
Разработчики ANSI C, Oracle, Москва NataliaSW Работа 1 02.08.2006 14:24
Функции для сложения ansi-строк Dругая C++ Builder 1 29.11.2005 17:24
KOI-8R -> ANSI - почему не работает telishevs Delphi 3 08.08.2005 10:19
Одномерный массив задача на множество,работа с записями iit3 Pascal 1 16.05.2005 17:47
Конвертирование char to ansi, ansi to char SadoMazaXist C++ Builder 5 22.10.2004 10:47
Стандарт ANSI/ISO C где скачать Garik С/С++ 3 02.04.2004 18:22



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов