Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Приклади програм






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

    Розв’язок.

    #include < stdio.h>
    #include < string.h>
    #include < conio.h>
    int main()
    {
    FILE *text1, *text2;
    char name1[100], name2[100], s[256];
    puts(" Enter the name of the source file: ");
    gets(name1);
    // Відкриття початкового файлу з перевіркою
    if ((text1 = fopen(name1, " r")) == NULL)
    {
    perror(" 1");
    getch();
    return 1;
    }
    puts(" Enter the file name of the destination: ");
    gets(name2);
    // Відкриття результуючого файлу з перевіркою
    if ((text2 = fopen(name2, " w")) == NULL)
    {
    perror(" 2");
    getch();
    return 2;
    }
    int n = 0;
    // Визначаємо кількість рядків у файлі
    while(fgets(s, 256, text1)! = NULL)
    n++;
    for (int i = n; i > 0; i--)
    { // Повертаємо покажчик поточної позиції
    rewind(text1); // на початок файлу
    // Можна інакше:
    // fseek(text1, 0L, SEEK_SET);
    // Читаємо до потрібного рядка. Останній прочитаний
    // у вкладеному циклі рядок - це останній,
    // передостанній,..., перший рядок файлу
    for (int j = 0; j < i; j++)
    fgets(s, 256, text1);
    // Знищуємо символ '\n' у рядку, якщо він там є
    // (у файлі за останньою порцією інформації
    // могло не здійснюватися переведення рядка)
    if (s[strlen(s) - 1] == '\n')
    s[strlen(s) - 1] = '\0';
    fputs(s, text2); // Пишемо рядок у файл
    // Після кожного рядка, що записується у файл
    if (i! = 1) // (крім останнього) виводимо
    putc('\n', text2); // символ нового рядка
    }
    fclose(text2); // Закриваємо вихідний
    fclose(text1); // і вхідний файли
    return 0;
    }

    Приклад 2. У текстовому файлі data.txt записано цілі числа, розділені довільною кількістю будь-яких пробільних символів, з можливими порож­німи рядками в будь-якому місці файлу. Переписати в новий текстовий файл res.txt по одному в рядок без додаткових пробільних символів тільки ті з чисел, які кратні 3.

    Розв’язок.

    #include < stdio.h>
    #include < conio.h>
    int main()
    {
    FILE *fInp, *fOut;
    // Існуючий файл відкриваємо для читання
    fInp = fopen(" data.txt", " r");
    if (! fInp)
    puts(" Error of opening of a input-file" " data.txt");
    else
    { // Відкриваємо новий файл для записування
    fOut = fopen(" res.txt", " w");
    if (! fOut)
    puts(" Error of opening of a output-file"
    " res.txt");
    else
    {
    int m, flag = 0;
    while (fscanf(fInp, " %d", & m)! = EOF)
    if (m % 3 == 0)
    { // Усі числа, крім першого,
    if (flag) // виводимо після переходу
    putc('\n', fOut); // до нового рядка
    fprintf(fOut, " %d", m);
    flag = 1;
    }
    fclose(fOut); // Закриття результуючого файлу
    puts(" Copying is completed! ");
    }
    fclose(fInp); // Закриття вхідного файлу
    }
    puts(" Press any key");
    getch();
    return 0;
    }

    Приклад 3. Занести в текстовий файл інформацію про багаж паса­жирів а саме, прізвище – текстовий рядок, перехід до нового рядка, кіль­кість речей – ціле число, загальна вага – дійсне число. Ознака закінчення введення – порожній рядок замість прізвища. Інформацію про кожного пасажира виводити з нового рядка файлу. Якщо файл із указаним ім’ям уже існує, здійснювати дозаписування в його кінець.

    Розв’язок.

    #include < stdio.h>
    #include < string.h>
    #include < conio.h>

    struct TLuggage
    {
    char Surname[30];
    int Count;
    double Weight;
    };

    int main()
    {
    TLuggage Luggage;
    FILE *f;
    char FileName[100];
    printf(" Input name of file: ");
    gets(FileName);
    if ((f = fopen(FileName, " a")) == NULL)
    {
    perror(" Trouble opening a file ");
    getch();
    return 1;
    }
    printf(" Ener surname: ");
    gets(Luggage.Surname);
    while (strlen(Luggage.Surname))
    {
    printf(" Enter the number of things (integer): ");
    scanf(" %d", & Luggage.Count);
    printf(" Enter the weight of luggage"
    " (a real number): ");
    scanf(" %f", & Luggage.Weight);
    getchar(); // Зчитування ознаки кінця рядка введення
    fprintf(f, " %s\n%d %f\n", Luggage.Surname,
    Luggage.Count, Luggage.Weight);
    printf(" Input name of file: ");
    gets(Luggage.Surname);
    }
    fclose(f);
    return 0;
    }

    Приклад 4. Дано текстовий файл з інформацією про багаж пасажи­рів. У файлі кожна запис про багаж починається з нового рядка і має такий формат: прізвище, кінець рядка, кількість речей (ціле число), пробіл, вага речей (дійсне число). Вивести на екран прізвища пасажирів, чия вага речей більша за середню вагу всіх речей.

    Розв’язок.

    #include < stdio.h>
    #include < string.h>
    #include < conio.h>

    struct TLuggage
    {
    char Surname[30];
    int Count;
    double Weight;
    };
    int main()
    {
    TLuggage Luggage;
    FILE *f;
    char FileName[100];
    int TotalCount = 0;
    double TotalWeight = 0.0;
    printf(" Input name of file: ");
    gets(FileName);
    if ((f = fopen(FileName, " r")) == NULL)
    {
    perror(" Trouble opening a file\n");
    getch();
    return 1;
    }
    while (fgets(Luggage.Surname, 30, f)! = NULL)
    {
    fscanf(f, " %d%lf", & Luggage.Count, & Luggage.Weight);
    TotalCount += Luggage.Count;
    TotalWeight += Luggage.Weight;
    // Після ваги багажу у файлі здійснюється
    // переведення рядка. Зчитуємо один символ,
    getc(f); // щоб він не сприймався як прізвище
    }
    fseek(f, 0L, SEEK_SET); // Повертаємось на початок файлу
    while(fgets(Luggage.Surname, 30, f)! = NULL)
    { // Знищуємо символ нового рядка
    Luggage.Surname[strlen(Luggage.Surname) - 1] = '\0';
    fscanf(f, " %d%lf", & Luggage.Count, & Luggage.Weight);
    getc(f); // Див. вище
    if (Luggage.Weight > TotalWeight / TotalCount)
    puts(Luggage.Surname);
    }
    fclose(f);
    getch();
    return 0;
    }

    Приклад 5. Дано текстовий файл із рядками довжиною не більше 255 символів. Розвернути кожен його рядок на 180°.

    Розв’язання.

    #include < stdio.h>
    #include < string.h>
    #include < conio.h>

    int main()
    {
    FILE *f;
    char FileName[100], str[256], ch;
    puts(" Enter the name of file: ");
    gets(FileName);
    // Відкриття існуючого файлу для введення і виведення
    if ((f = fopen(FileName, " r+")) == NULL)
    {
    perror(" Trouble opening a file\n");
    getch();
    return 1;
    }

    int k;
    long pos = 0; // Поточна позиція покажчика
    // потоку (початкова)
    while (fgets(str, 256, f))
    { // Зараз активний режим читання. Далі писати
    // не можна Покажчик поточної позиції зсунувся
    // на strlen(str) байт
    k = strlen(str);
    if (str[strlen(str) - 1] == '\n') // У str буде
    k--; // міститись символ '\n', якщо це
    // не останній рядок файлу
    for (int i = 0; i < k / 2; i++) // Розвертаємо
    { // вміст рядка без '\n'
    ch = str[i];
    str[i] = str[k - 1 - i];
    str[k - 1 - i] = ch;
    }
    fseek(f, pos, SEEK_SET); // Повертаємо покажчик
    // поточної позиції. Тепер можна писати. Пишемо у
    fprintf(f, " %s", str); // файл. Далі читати не можна
    pos = ftell(f); // Запам'ятовуємо нове положення
    // покажчика поточної позиції
    fseek(f, 0L, SEEK_CUR); // Зсуваємо покажчик
    // поточної позиції на 0 байт для забезпечення
    // можливості наступного читання з файлу
    }
    fclose(f); // Закриваємо файл
    return 0;
    }






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.