Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Прошу помощи с данной программойю
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Andrewkas Andrewkas вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.04.2018
По умолчанию Прошу помощи с данной программойю - 14.04.2018, 21:37

Приветствую, в данной программе не работает поиск по году рождения, ибо strcmp требует два const char. Что можно сделать?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <iostream>
using namespace std;
const int len_fio=15;
struct student
{
    char fio[len_fio];
    int ID;
    char B_year;
    int P_year;
};
const int size_p = sizeof(student);
int create_f(FILE *fbin);
int sort_f(FILE *fbin);
int print_f(FILE *fbin);
int search_f(FILE *fbin);
int main ()
{
    char menu_n;
    FILE *fbin;
    fbin=fopen("student.dat","r+b");
    if(!fbin)
    {
        fbin=fopen("student.dat", "w+b");
        if (!fbin)
        {
            puts("Nevozmozhno napisat fail.\n");
            return 1;
        }
    }
    while (1)
    {
        system("cls");
        puts("_________________________________");
        puts("Vyberite deistvie");
        puts("_________________________________");
        puts("1-Zapis");
        puts("2-Sortirovka");
        puts("3-Vivod");
        puts("4-Poisk po godu rozhdeniya");
        puts("5-Vihod");
        puts("_________________________________");
        menu_n=getch();
        switch(menu_n)
        {
            case '1': create_f(fbin); break;
            case '2': sort_f(fbin); break;
            case '3': print_f(fbin); break;
            case '4': search_f(fbin); break;
            case '5': return 0;
        }
    }
}
int create_f(FILE *fbin)
{
    system("cls");
    student elem;
    fseek(fbin, 0, SEEK_END);
    puts("Vvod dannih o studente");
    puts("_________________________________");
    puts("Vvedite Familiy i imya");
    scanf("%s",elem.fio);
    puts("Vvedite god rozhdenia");
    scanf("%s", &elem.B_year);
    puts("Vvedite god postuplenia");
    scanf("%i", &elem.P_year);
    puts("Vvedite ID");
    scanf("%i", &elem.ID);
    fwrite(&elem, size_p, 1, fbin);
    return 1;
}
int print_f(FILE *fbin)
{
    student elem;
    int n;
    system("cls");
    rewind(fbin);
    puts("FIO             ID     B_year P_year");
    puts("____________________________________");
    do
    {
        n=fread(&elem, size_p, 1, fbin);
        if (n<1) break;
        printf("%-16s%-7i%-7s%-6i\n", elem.fio, elem.ID, elem.B_year, elem.P_year);

    }while (1);
    puts(" ");
    puts("Nazhmite lybuy klavishu");
    getch();
    return 1;
}
int sort_f(FILE *fbin)
{
    long i, j;
    student elem1, elem2;
    system("cls");
    puts("Dlya nachala nazhmite lybuy klavishu");
    puts("____________________________________");
    getch();
    fseek(fbin,0, SEEK_END);
    long len =ftell(fbin)/size_p;
    rewind(fbin);
    for(i=len-1;i>=1;i--)
        for(j=0;j<=i-1;j++)
        {
            fseek(fbin, j*size_p, SEEK_SET);
            fread(&elem1, size_p, 1, fbin);
            fread(&elem2, size_p, 1, fbin);
            if ((elem1.ID - elem2.ID)>=0)
            {
                fseek(fbin, (-2)*size_p, SEEK_CUR);
                fwrite(&elem2, size_p, 1, fbin);
                fwrite(&elem1, size_p, 1, fbin);
            }
        }
    puts("_________________________________");
    puts("Sortirivka vipolnena,\n nazhmite lybuy klavishy dlya vihoda");
    getch();
    return 1;
}
int search_f(FILE *fbin)
{
    int not_found;
    char s; 
    student elem;
    int n;
    system("cls");
    puts ("Vvedite B_year");
    scanf("%s", s);
    rewind(fbin);
    not_found = 1;
    while(feof(fbin))
    {
        fread(&elem, sizeof(student), 1, fbin);
        if (!strcmp(s,elem.B_year))
        {
            printf("%-16s%-7i%-7s%-6i\n", elem.fio, elem.ID, elem.B_year, elem.P_year);
            not_found=1;
        }
    }
    if (not_found) puts("Takigo studenta net v faile");
    puts(" "); puts("Nazhmite lybuy klavishu"); getch();
    return 1;
}
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,394
Сказал(а) спасибо: 22
Поблагодарили 936 раз(а) в 920 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 15.04.2018, 11:56

Храните год как int, а не char. И сравнивайте как число.


Как прикреплять картинки к сообщениям: http://www.hardforum.ru/t116562
Ответить с цитированием
Ads
Ответ

Метки
strcmp

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помощи. Looking Любые вопросы от новичков 5 18.06.2014 09:26
Прошу помощи Elatio Lisp 1 28.04.2013 22:25
прошу помощи. blackwindows Любые вопросы от новичков 5 18.02.2012 12:38
Прошу помощи=)) rjhifrvbifvyt15 Видеокарты 6 06.02.2012 16:37
Прошу Помощи! StepanDro Любые вопросы от новичков 6 02.02.2012 21:01
Прошу помощи андрей с Разное 0 25.01.2012 21:28
SOS!прошу о помощи! alinaisasha Любые вопросы от новичков 2 19.01.2012 21:40
ПРОШУ ПОМОЩИ ORION105 Видеокарты 11 19.01.2012 15:16
Прошу помощи!!! vitrum Оценка конфигурации 25 25.12.2011 22:05
Прошу о помощи Макс.................... Любые вопросы от новичков 56 02.10.2011 19:40
Прошу помощи simp Подбор комплектующих 30 09.12.2009 16:10



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов