Помогите исправить oшибку в функции Del_To_Data
Код:
#include "stdio.h"
#include "conio.h"
#include <string.h>
#include <iostream>
struct Cpisok
{
int day;//День
int month;//месяц
int year;//год
int num;//Кто звонит
int kod;// Код города кому звонят
int num2;//Кому звонят
int prodol;//Длительность разговора в минут
int sroch;//срочность
int tarif;
Cpisok *Next;
}*First=NULL, *Now, *Last;
void ADD_To_End ()
{
int Aday, Amonth, Ayear, Anum;
int Akod, Anum2, Aprodol, Asroch;
int Atarif, S=0;
printf("Введите номер кто звонит ");
scanf("%i",&Anum);
Data:
printf("Введите дату (ДД.ММ.ГГГГ) ");
scanf("%i %i %i",&Aday,&Amonth, &Ayear);
if ((Aday<=31)&&(Amonth<=12)) S++; else {printf ("Неверная дата. Введите заново\n"); goto Data;}
printf("Введите код города ");
scanf("%i",&Akod);
printf("Введите номер кому звонят ");
scanf("%i",&Anum2);
printf("Введите продолжительность разговора ");
scanf("%i",&Aprodol);
printf("Введите срочность (1 Срочный 2 Обычный) ");
scanf("%i",&Asroch);
printf("Введите стоимость (Одной минуты разговора) ");
scanf("%i",&Atarif);
printf ("\n");
Now=First;
if (First==NULL) //Добавление В начало
{
First=((struct Cpisok*)malloc(sizeof(struct Cpisok)));
First->Next=NULL;
First->day=Aday;
First->month=Amonth;
First->year=Ayear;
First->num=Anum;
First->kod=Akod;
First->num2=Anum2;
First->prodol=Aprodol;
First->sroch=Asroch;
First->tarif=Atarif;
}
else //Добавление В Конец
{
while (Now->Next!=NULL)
{
Now=Now->Next;
};
Now->Next=((struct Cpisok*)malloc(sizeof(struct Cpisok)));
Now->Next->Next=NULL;
Now->Next->day=Aday;
Now->Next->month=Amonth;
Now->Next->year=Ayear;
Now->Next->num=Anum;
Now->Next->kod=Akod;
Now->Next->num2=Anum2;
Now->Next->prodol=Aprodol;
Now->Next->sroch=Asroch;
Now->Next->tarif=Atarif;
}
};
void Poisk ()
{
int Ssroch, S=0;
printf ("Введите срочность (для поиска)");
scanf ("%i",&Ssroch);
if (First==NULL) printf ("Список пуст ");
else
{
Now=First;
while (Now!=NULL)
{
if (Now->sroch==Ssroch)
{
S++;
printf ("\n");
printf ("=============Ответ============\n");
printf ("Номер кто звонит %i\n",Now->num);
printf ("Дата %i ",Now->day);
printf ("Месяц %i ",Now->month);
printf ("Год %i \n",Now->year);
printf ("Код города %i\n",Now->kod);
printf ("Номер кому звонят %i\n",Now->num2);
printf ("Продолжительность разговора %i\n",Now->prodol);
printf ("Срочность %i\n",Now->sroch);
printf ("Стоимость (Одной минуты разговора) %i",Now->tarif);
}
Now=Now->Next;
}
if (S==0) printf ("Нет звонков удовлетворяюшей данной срочностью");
else S=0;
}
}
void Del_To_Data ()
{
int Dday, Dyear, Dmonth;
struct Cpisok *Key;
printf ("Введите дату (ДД.ММ.ГГГГ)");
scanf ("%i %i %i",&Dday, &Dmonth, &Dyear);
if (First==NULL) printf ("Список пуст");
else
{
Now=First;
Last=NULL;
while (Now!=NULL)
{
if ((Now->day==Dday)&&(Now->month==Dmonth)&&(Now->year==Dyear))
{
if (Now==First)
{
Last=First->Next;
free(Now);
First=Last;
Now=NULL;
}
else
{
Key=Now;
Last=Now->Next;
free(Key);
Key=NULL;
}
}
else
{
Last=Now;
Now=Now->Next;
}
}
}
}
void Printf ()
{
if (First==NULL) printf ("Список пуст");
else
{
Now=First;
while (Now!=NULL)
{
printf ("\n");
printf ("=============Ответ============\n");
printf ("Номер кто звонит %i\n",Now->num);
printf ("Дата %i ",Now->day);
printf ("Месяц %i ",Now->month);
printf ("Год %i \n",Now->year);
printf ("Код города %i\n",Now->kod);
printf ("Номер кому звонят %i\n",Now->num2);
printf ("Продолжительность разговора %i\n",Now->prodol);
printf ("Срочность %i\n",Now->sroch);
printf ("Стоимость (Одной минуты разговора) %i",Now->tarif);
Now=Now->Next;
}
}
}
void main ()
{
int Com;
setlocale( LC_ALL,"Russian" );
Zanovo:
printf ("Добовать <1> Поиск <2> Удалить по Дате <3> Вывод <4> ");
scanf ("%i",&Com);
switch (Com)
{
case 1: ADD_To_End (); Com=0;break;
case 2: Poisk (); Com=0 ;break;
case 3: Del_To_Data ();Com=0 ;break;
case 4: Printf (); Com=0 ;break;
defaunt: printf ("Ты ДЕБИЛ!!!! НАУЧИСЬ ЧИТАТЬ!!!");
}
goto Zanovo;
getch ();
}