Тема: Робота з структурою С++
Підкажіть будь ласка що в моєму коді не так...Програма працює, але не можу виконати сортування по даті, а саме цей блок
case 5: fm=fopen("All.txt","r");
for(i=0;i<r+m+k;i++)
{
fscanf(fm,"%s ",rt[i].lastname);
fscanf(fm,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fscanf(fm,"%d ",&(rt[i].date[j]));
}
fscanf(fm,"%s ",rt[i].znak);
fscanf(fm,"%s ",rt[i].stat);
fscanf(fm,"%s ",rt[i].adresa);
}
for(i=0;i<r+m+k;i++)
{
for(j=0;j<3;j++)
{
if(rt[i].date[2]>rt[i+1].date[2])
{
rt[4]=rt[i];
rt[i]=rt[i+1];
rt[i+1]=rt[4];
}
if(rt[i].date[2]==rt[i+1].date[2])
{if(rt[i].date[1]>rt[i+1].date[1])
{
rt[4]=rt[i];
rt[i]=rt[i+1];
rt[i+1]=rt[4];
}
if(rt[i].date[1]==rt[i+1].date[1])
{
if(rt[i].date[0]>rt[i+1].date[0]){
rt[4]=rt[i];
rt[i]=rt[i+1];
rt[i+1]=rt[4];}
}
}
}
}
for(i=0;i<r+m+k;i++)
{
printf("%s ",rt[i].lastname);
printf("%s ",rt[i].firstname);
for(j=0;j<3;j++){
printf("%d ",rt[i].date[j]);
}
printf("%s ",rt[i].znak);
printf("%s ",rt[i].stat);
printf("%s\n",rt[i].adresa);
}
fclose(fm);
break;
Ось ціла програма...
#include<locale.h>
#include<stdio.h>
#include<conio.h>
#include<fstream>
#include <memory.h>
#include<iostream>
#include<string.h>
#define r 2
#define STUD struct Zodiak
#define SSTUD sizeof(struct Zodiak)
struct Zodiak
{
char lastname[10];
char firstname[10];
int date[3];
char znak[10];
char stat[8];
char adresa[30];
};
Zodiak rt[r];
void del_item(int);
int n=0,d;
int main(void){
FILE *fo, *fm, *fp;
int i,j,m,k,count,tmp,tmp1,tmp2;
char str[10];
setlocale(0,"");
for(;;)
{
printf("1 – Створити файл і добавити в нього записи\n");
printf("11 – Переглянути початкові записи\n");
printf("2 – Добавити(початок, кінець) \n");
printf("3 – Показати все\n");
printf("4 – Видалення\n");
printf("12 – Показати вмiст пiсля видалення\n");
printf("5 – Сортування по даті народження\n");
printf("6– Жінки водолії\n");
printf("7– Список знаків зодіаку стихії Земля(Telez,Diva,Kozerig)\n");
printf("8– Список адрес, де проживають чоловіки народжені у травні\n");
printf("0 – Вихiд\n");
int choose;
printf("Введiть > ");
scanf("%d",&choose);
switch(choose) {
case 1:fo=fopen("One.txt","w");
for(i=0;i<r;i++)
{
printf("Введiть прiзвище"); scanf("%s",rt[i].lastname);
printf("Ведiть iм`я");scanf("%s",rt[i].firstname);
printf("Введiть дату народження ");
for(j=0;j<3;j++){
scanf("%d",&(rt[i].date[j]));
}
printf("Знак зодіаку"); scanf("%s",rt[i].znak);
printf("Стать"); scanf("%s",rt[i].stat);
printf("Введiть адресу"); scanf("%s",rt[i].adresa);
}
for(i=0;i<r;i++){
fprintf(fo,"%s ",rt[i].lastname);
fprintf(fo,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fprintf(fo,"%d ",rt[i].date[j]);}
fprintf(fo,"%s ",rt[i].znak);
fprintf(fo,"%s ",rt[i].stat);
fprintf(fo,"%s ",rt[i].adresa);
}
fclose(fo);
break;
case 11:
fo=fopen("One.txt","r");
for(i=0;i<r;i++)
{
fscanf(fo,"%s ",rt[i].lastname);
fscanf(fo,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fscanf(fo,"%d ",&(rt[i].date[j]));
}
fscanf(fo,"%s ",rt[i].znak);
fscanf(fo,"%s ",rt[i].stat);
fscanf(fo,"%s ",rt[i].adresa);
}
for(i=0;i<r;i++)
{
printf("%s ",rt[i].lastname);
printf("%s ",rt[i].firstname);
for(j=0;j<3;j++){
printf("%d ",rt[i].date[j]);
}
printf("%s ",rt[i].znak);
printf("%s ",rt[i].stat);
printf("%s\n",rt[i].adresa);
}
fclose(fo);
break;
case 2:
for(;;)
{
printf("\n1.Початок \n2.Кiнець\n");
int c;
scanf("%d",&c);
switch (c)
{
case 1:
fm=fopen("All.txt","w");
printf("Скiльки записiв ви бажаєте добавити?->");
scanf("%d",&m);
for(i=0;i<m;i++){
printf("Введiть прiзвище"); scanf("%s",rt[i].lastname);
printf("Ведiть iм`я");scanf("%s",rt[i].firstname);
printf("Введiть дату народження ");
for(j=0;j<3;j++){
scanf("%d",&(rt[i].date[j]));
}
printf("Знак зодіаку"); scanf("%s",rt[i].znak);
printf("Стать"); scanf("%s",rt[i].stat);
printf("Введiть адресу"); scanf("%s",rt[i].adresa);
}
for(i=0;i<m;i++){
fprintf(fm,"%s ",rt[i].lastname);
fprintf(fm,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fprintf(fm,"%d ",rt[i].date[j]);}
fprintf(fm,"%s ",rt[i].znak);
fprintf(fm,"%s ",rt[i].stat);
fprintf(fm,"%s ",rt[i].adresa);
}
fo=fopen("One.txt","r");
for(i=0;i<r;i++)
{
fscanf(fo,"%s ",rt[i].lastname);
fscanf(fo,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fscanf(fo,"%d ",&(rt[i].date[j]));
}
fscanf(fo,"%s ",rt[i].znak);
fscanf(fo,"%s ",rt[i].stat);
fscanf(fo,"%s ",rt[i].adresa);
}
for(i=0;i<r;i++){
fprintf(fm,"%s ",rt[i].lastname);
fprintf(fm,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fprintf(fm,"%d ",rt[i].date[j]);}
fprintf(fm,"%s ",rt[i].znak);
fprintf(fm,"%s ",rt[i].stat);
fprintf(fm,"%s ",rt[i].adresa);
}
fclose(fo);fclose(fm);
break;
case 2:
fm=fopen("All.txt","a");
printf("Скiльки записiв ви бажаєте добавити?->");
scanf("%d",&k);
for(int i=0;i<k;i++)
{printf("Введiть прiзвище"); scanf("%s",rt[i].lastname);
printf("Ведiть iм`я");scanf("%s",rt[i].firstname);
printf("Введiть дату народження ");
for(j=0;j<3;j++){
scanf("%d",&(rt[i].date[j]));
}
printf("Знак зодіаку"); scanf("%s",rt[i].znak);
printf("Стать"); scanf("%s",rt[i].stat);
printf("Введiть адресу"); scanf("%s",rt[i].adresa);
}
for(i=0;i<k;i++){
fprintf(fm,"%s ",rt[i].lastname);
fprintf(fm,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fprintf(fm,"%d ",rt[i].date[j]);}
fprintf(fm,"%s ",rt[i].znak);
fprintf(fm,"%s ",rt[i].stat);
fprintf(fm,"%s ",rt[i].adresa);
}
break;
default:printf("Other error\n");
break;
}
printf("\n...press any key...\n");
if(c==0) break;
}
fclose(fm);
count=r+m+k;
break;
case 3:fm=fopen("All.txt","r");
for(i=0;i<r+m+k;i++)
{
fscanf(fm,"%s ",rt[i].lastname);
fscanf(fm,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fscanf(fm,"%d ",&(rt[i].date[j]));
}
fscanf(fm,"%s ",rt[i].znak);
fscanf(fm,"%s ",rt[i].stat);
fscanf(fm,"%s ",rt[i].adresa);
}
for(i=0;i<r+m+k;i++)
{
printf("%s ",rt[i].lastname);
printf("%s ",rt[i].firstname);
for(j=0;j<3;j++){
printf("%d ",rt[i].date[j]);
}
printf("%s ",rt[i].znak);
printf("%s ",rt[i].stat);
printf("%s\n",rt[i].adresa);
}
fclose(fm);
break;
case 4:fm=fopen("All.txt","r");
printf("Введiть прiзвище потрiбної людини: "); scanf("%s",&str);
for(i=0;i<r+m+k;i++)
{
fscanf(fm,"%s ",rt[i].lastname);
fscanf(fm,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fscanf(fm,"%d ",&(rt[i].date[j]));
}
fscanf(fm,"%s ",rt[i].znak);
fscanf(fm,"%s ",rt[i].stat);
fscanf(fm,"%s ",rt[i].adresa);
}
fp=fopen("Finish.txt","w");
for(i=0;i<r+m+k;i++){
if(_stricmp(str,rt[i].lastname)>0||_stricmp(str,rt[i].lastname)<0){
fprintf(fp,"%s ",rt[i].lastname);
fprintf(fp,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fprintf(fp,"%d ",rt[i].date[j]);}
fprintf(fp,"%s ",rt[i].znak);
fprintf(fp,"%s ",rt[i].stat);
fprintf(fp,"%s ",rt[i].adresa);
}
}
fclose(fm); fclose(fp);
break;
case 12:fp=fopen("Finish.txt","r");
for(i=0;i<r+m+k-1;i++)
{
fscanf(fp,"%s ",rt[i].lastname);
fscanf(fp,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fscanf(fp,"%d ",&(rt[i].date[j]));
}
fscanf(fp,"%s ",rt[i].znak);
fscanf(fp,"%s ",rt[i].stat);
fscanf(fp,"%s ",rt[i].adresa);
}
for(i=0;i<r+m+k-1;i++)
{
printf("%s ",rt[i].lastname);
printf("%s ",rt[i].firstname);
for(j=0;j<3;j++){
printf("%d ",rt[i].date[j]);
}
printf("%s ",rt[i].znak);
printf("%s ",rt[i].stat);
printf("%s\n",rt[i].adresa);
}
fclose(fp);
break;
case 5: fm=fopen("All.txt","r");
for(i=0;i<r+m+k;i++)
{
fscanf(fm,"%s ",rt[i].lastname);
fscanf(fm,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fscanf(fm,"%d ",&(rt[i].date[j]));
}
fscanf(fm,"%s ",rt[i].znak);
fscanf(fm,"%s ",rt[i].stat);
fscanf(fm,"%s ",rt[i].adresa);
}
for(i=0;i<r+m+k;i++)
{
for(j=0;j<3;j++)
{
if(rt[i].date[2]>rt[i+1].date[2])
{
rt[4]=rt[i];
rt[i]=rt[i+1];
rt[i+1]=rt[4];
}
if(rt[i].date[2]==rt[i+1].date[2])
{if(rt[i].date[1]>rt[i+1].date[1])
{
rt[4]=rt[i];
rt[i]=rt[i+1];
rt[i+1]=rt[4];
}
if(rt[i].date[1]==rt[i+1].date[1])
{
if(rt[i].date[0]>rt[i+1].date[0]){
rt[4]=rt[i];
rt[i]=rt[i+1];
rt[i+1]=rt[4];}
}
}
}
}
for(i=0;i<r+m+k;i++)
{
printf("%s ",rt[i].lastname);
printf("%s ",rt[i].firstname);
for(j=0;j<3;j++){
printf("%d ",rt[i].date[j]);
}
printf("%s ",rt[i].znak);
printf("%s ",rt[i].stat);
printf("%s\n",rt[i].adresa);
}
fclose(fm);
break;
case 6:fm=fopen("All.txt","r");
for(i=0;i<r+m+k;i++)
{
fscanf(fm,"%s ",rt[i].lastname);
fscanf(fm,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fscanf(fm,"%d ",&(rt[i].date[j]));
}
fscanf(fm,"%s ",rt[i].znak);
fscanf(fm,"%s ",rt[i].stat);
fscanf(fm,"%s ",rt[i].adresa);
if((_stricmp("Vodoliy",rt[i].znak)==0)&&(_stricmp("Woman",rt[i].stat)==0)){
printf("%s ",rt[i].lastname);
printf("%s ",rt[i].firstname);
for(j=0;j<3;j++){
printf("%d ",rt[i].date[j]);
}
printf("%s ",rt[i].znak);
printf("%s ",rt[i].stat);
printf("%s\n",rt[i].adresa);}
}
fclose(fm);
break;
case 7:fm=fopen("All.txt","r");
for(i=0;i<r+m+k;i++)
{
fscanf(fm,"%s ",rt[i].lastname);
fscanf(fm,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fscanf(fm,"%d ",&(rt[i].date[j]));
}
fscanf(fm,"%s ",rt[i].znak);
fscanf(fm,"%s ",rt[i].stat);
fscanf(fm,"%s ",rt[i].adresa);
if((_stricmp("Kozerig",rt[i].znak)==0)||(_stricmp("Telez",rt[i].znak)==0)||(_stricmp("Diva",rt[i].znak)==0)){
printf("%s ",rt[i].lastname);
printf("%s ",rt[i].firstname);
for(j=0;j<3;j++){
printf("%d ",rt[i].date[j]);
}
printf("%s ",rt[i].znak);
printf("%s ",rt[i].stat);
printf("%s\n",rt[i].adresa);}
}
fclose(fm);
break;
case 8:fm=fopen("All.txt","r");
for(i=0;i<r+m+k;i++)
{
fscanf(fm,"%s ",rt[i].lastname);
fscanf(fm,"%s ",rt[i].firstname);
for(j=0;j<3;j++){
fscanf(fm,"%d ",&(rt[i].date[j]));
}
fscanf(fm,"%s ",rt[i].znak);
fscanf(fm,"%s ",rt[i].stat);
fscanf(fm,"%s ",rt[i].adresa);
}
for(i=0;i<r+m+k;i++)
if((_stricmp("Man",rt[i].stat)==0)&&(rt[i].date[1]==5)){
printf("%s ",rt[i].lastname);
printf("%s ",rt[i].firstname);
printf("%s\n",rt[i].adresa);
}
fclose(fm);
break;
default: printf("Неправильна операція\n");
break;
}
printf("\n...press any key...\n");
if(choose==0) break;
}
_getch();
return 0; }