Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Ошибка в задаче.Язык Си


Рекомендуемые сообщения

Здравствуйте.Помогите пожалуйста.

Вот есть задача.

Создать список, содержащий информацию о пользователях водопровода (поля: фамилия, адрес, задолженность)

Проверить список на наличие клиентов, долг которых превышает некоторый минимум.Вывести их на Эркан и изъять из списка.

Нужно написать на языке Си(Не Си++, а именно Си).

Я вот ввожу например одного человека, пишу долго например 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;

}

Пожалуйста помогите, на утро сдавать, задача уровня простого, но что то не могу понять ошибку где сделал, как сдам отблагодарю чем попросите, честно выручайте.

Ссылка на комментарий
Поделиться на другие сайты

"else if(A.borg==head->data.Min.Dolg) // <==== Мне кажется что проблема где то здесь "

А почему А.borg ? Разве не А.Dolg

Ах, утром сдавать... сорри

Изменено пользователем Teddy_Bear
Ссылка на комментарий
Поделиться на другие сайты

"else if(A.borg==head->data.Min.Dolg) // <==== Мне кажется что проблема где то здесь "

А почему А.borg ? Разве не А.Dolg

Ах, утром сдавать... сорри

Мне перенесли сдачу))

Помоги пожалуйста.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...