Riki_Tiki_Tavi Опубликовано 25 мая, 2011 Жалоба Поделиться Опубликовано 25 мая, 2011 Здравствуйте.Помогите пожалуйста. Вот есть задача. Создать список, содержащий информацию о пользователях водопровода (поля: фамилия, адрес, задолженность) Проверить список на наличие клиентов, долг которых превышает некоторый минимум.Вывести их на Эркан и изъять из списка. Нужно написать на языке Си(Не Си++, а именно Си). Я вот ввожу например одного человека, пишу долго например 300, а минимальны долг пишу 100, то оно выводит его, так как в задании сказано что нужно вывести у кого долг больше минимального. Но суть проблемы в том: 1.Когда я ввожу двоих или больше человек, то оно постоянно спрашивает минимальный долг(а надо чтобы только раз спросило, и относилось ко всем) 2.Выводит только одного человека(когда ввожу 2 и более то выводит с долгом 1 человека, а их там например 2 таких) #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> typedef struct inform //структура { char Familiya[20]; char adres; int Dolg; int Min.Dolg; }Dani; void AddStruct (Dani * z) { printf("Введите Фамилию\n"); scanf("%s", z->Familiya); printf("Введите Адрес\n"); scanf("%s",&z->adres); printf("Введите Долг\n"); scanf ("%d",&z->Dolg); printf ("Введите минимальный долг\n"); scanf("%d",&z->Min.Dolg); } void DrukStruct(Dani * z) { printf("%s \n",z->Familiya); printf("%s \n",z->adres); printf("%d \n",&z->Dolg); printf("%d \n",&z->Min.Dolg); } typedef struct St { Dani data; struct St *next; }element; typedef element*ptr; ptr AddElem(ptr head, Dani elem) { ptr x; x=(element*)malloc(sizeof(element)); x->data=elem; x->next=head; // head=x; return head; } void Druk(ptr head) { ptr x; x=head; while(x!=NULL) { DrukStruct(&x->data); x=x->next; } } ptr Del(ptr head) { ptr(x); while(head!=NULL) { x=head; head=head->next; free(x); } return head; } int main() { Dani A; FILE*f; int l=0; char filename[10]; puts("Введите имя файла"); gets(filename); f=fopen(filename,"w+"); if(f==NULL) { puts("Файла нету"); exit(1); } printf("Введите данные, конец ввода # \n"); AddStruct(&A); while(strcmp(A.Prizv,"#")!=0) { fwrite(&A,sizeof(Dani),1,f); AddStruct(&A); } fclose(f); f=fopen(filename,"r+"); fread(&A,sizeof(Dani),1,f); while(!feof(f)) { DrukStruct(&A); fread(&A,sizeof(Dani),1,f); } fclose(f); puts("Поиск задолженности"); f=fopen(filename,"r+"); fread(&A,sizeof(Dani),1,f); ptr head; head=NULL; while(!feof(f)) { if(head==NULL) head=AddElem(head,A); else if(A.borg==head->data.Min.Dolg) // <==== Мне кажется что проблема где то здесь head=AddElem(head,A); else if(A.borg>head->data.Min.Dolg) // <==== и здесь { head=Del(head); head=AddElem(head,A); } fread(&A,sizeof(Dani),1,f); } fclose(f); printf("Вывод списка\n"); Druk(head); getchar(); return 0; } Пожалуйста помогите, на утро сдавать, задача уровня простого, но что то не могу понять ошибку где сделал, как сдам отблагодарю чем попросите, честно выручайте. Ссылка на комментарий Поделиться на другие сайты Поделиться
Teddy_Bear Опубликовано 26 мая, 2011 Жалоба Поделиться Опубликовано 26 мая, 2011 (изменено) "else if(A.borg==head->data.Min.Dolg) // <==== Мне кажется что проблема где то здесь " А почему А.borg ? Разве не А.Dolg Ах, утром сдавать... сорри Изменено 26 мая, 2011 пользователем Teddy_Bear Ссылка на комментарий Поделиться на другие сайты Поделиться
Riki_Tiki_Tavi Опубликовано 26 мая, 2011 Автор Жалоба Поделиться Опубликовано 26 мая, 2011 "else if(A.borg==head->data.Min.Dolg) // <==== Мне кажется что проблема где то здесь " А почему А.borg ? Разве не А.Dolg Ах, утром сдавать... сорри Мне перенесли сдачу)) Помоги пожалуйста. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти