ibilalkayy Ответов: 1

Как найти последнюю дату с помощью линейного поиска?


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define STRING_LEN 200

int main(){
    FILE * fp1 = fopen("file.csv", "r");
    char string[STRING_LEN], pinFind[STRING_LEN];
    char * pinFound = NULL;
    int day, mo, yr;

    printf("Enter the pin: ");
    scanf("%s", pinFind);

    while(fgets(string, STRING_LEN, fp1)){
      pinFound = strstr(string, pinFind);
      if(pinFound){
        char *p = strrchr(string, ','),tmpstr[STRING_LEN];
        if(sscanf(p + 1, "%u-%u-%4u", &day, &mo, &yr))
        printf("%s", p+1);
      }
    }
    return 0;
}


Что я уже пробовал:

В этом коде я пытаюсь найти линейный поиск, чтобы найти последнюю дату, как данный результат.

18-10-2020
19-10-2020


но последний - это последний. Поэтому я просто хочу напечатать этот последний с помощью линейного поиска, но не знаю, как это сделать?

1 Ответов

Рейтинг:
0

OriginalGriff

Сохраняйте "максимальную до сих пор" дату, которую вы предварительно настроили на минимально возможную дату перед циклом.
Внутри цикла вы сверяете дату текущей строки с максимумом до сих пор, а если она больше, устанавливаете новый максимум до сих пор.
После завершения цикла печати максимальная-до сих-пор.

Для положительных целых чисел в массиве:

int max = -1;
for (int i = 0; i < noOfElements; i++)
   {
   if (arr[i] > max)
      {
      max = arr[i];
      }
   }
printf("%u\n", max);
Попробуйте сделать это с массивом значений и посмотрите, что происходит с отладчиком - вы поймете, что я имею в виду.