М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
maksivanchuk123
maksivanchuk123
02.02.2023 23:18 •  Информатика

СИ (НЕ С++)

В файле посчитать количество строк, которые оканчивается на 15

👇
Ответ:
irinapak1985
irinapak1985
02.02.2023

Name : c_file_row_count.c

Author : UranFlex

Version : 0.1 alpha

Copyright : GNU GPL

Description : В файле input.txt записана информация из нескольких текстовых строк. Выводим содержимое этого файла на экран, посчитаем количество строк в файле.

#include <stdio.h>

#include <stdlib.h>

#define FNAME "input.txt" // имя исходного файла

int main( void ) {

// пробуем открыть файл для чтения

FILE* in = fopen( FNAME, "r" );

// обрабатываем ошибку открытия файла

if ( in == NULL ) {

perror( "Ошибка при открытии исходного файла" );

return EXIT_FAILURE;

}

size_t counter = 0; // предполагаем, что строк ноль в файле - т.е. пустой

int ch, pre = EOF; // текущий символ, последний считаный символ

printf( "%s %s\n", "Содержимое файла", FNAME );

// в цикле считаем сколько переводов строки в файле и запоминаем это в переменную counter

// а также выводим на экран каждый считаный символ.

// если файл пустой, то тело цикла не выполнится ни разу, так как первый считанный символ будет как раз EOF

// и в pre останется EOF

while ( ( ch = fgetc( in ) ) != EOF ) { // в цикле проходим весь файл посимвольно

pre = ch; // запоминаем последний считаный символ

if ( ch == '\n' ) // если нашли перевод строки,

++counter; // то увеличиваем счетчик строк

putchar( ch ); // выводим очередной символ на экран

}

// весь смысл переменной pre в том, чтобы запомнить какой символ мы считали перед тем как наткнулись на EOF в файле

// или в pre будет EOF - если тело цикла ни разу не выполнилось, это будет при пустом файле

// последняя строка файла может заканчиваться не \n, а строку посчитать надо - вот для этого и нужна переменная pre.

if ( pre == EOF ) // если файл пустой

puts( "Файл пустой!" ); // информация об этом.

else if ( pre != '\n' ) { // pre содержит в себе не перевод строки, и файл не пустой.

++counter; // увеличиваем

puts( "" );

}

puts( "" );

// выводим на экран информацию о количестве строк

printf( "%s %s %d", "строк в файле", FNAME, counter );

return EXIT_SUCCESS;

Объяснение:

Сейчас решаем такую же задачу, только на олимпиаде, вроде так.

4,6(97 оценок)
Открыть все ответы
Ответ:
agarkovatanech
agarkovatanech
02.02.2023
Program pr3;
Var A : array [1..100, 1..100] of integer ; {резервирование памяти под массивы}
B : array [1..100, 1..100] of integer ;
C : array [1..100, 1..100] of integer ;
m, n, i,j: integer ; {переменные i,j вводятся как индексы массива}
Begin
randomize;
writeln ('Введите размерность матриц m и n (числа <100)');
readln (m, n);
For i:=1 to m do
For j:=1 to n do
begin
A[i,j]:=random (20)-10; {ввод элемента матрицы}
B[i,j]:=random (20)-10; {ввод элемента матрицы}
end;
writeln ('Итоговая матрица A: ');
For i:=1 to m do
begin
For j:=1 to n do write (A[i,j], ' '); {вывод элементов производится в виде матрицы }
writeln; {после перебора всех столбцов одной строки – переход новую строку}
end;
writeln;
writeln ('Итоговая матрица B: ');
For i:=1 to m do
begin
For j:=1 to n do write (B[i,j], ' '); {вывод элементов производится в виде матрицы }
writeln; {после перебора всех столбцов одной строки – переход новую строку}
end;
writeln;
For i:=1 to m do {цикл по всем строкам матрицы}
For j:=1 to n do {цикл по всем столбцам матрицы}
if (A[i,j] < B[i,j]) then C[i,j] := B[i,j] else C[i,j] := A[i,j];
writeln ('Итоговая матрица C: ');
For i:=1 to m do
begin
For j:=1 to n do write (C[i,j], ' '); {вывод элементов производится в виде матрицы } writeln; {после перебора всех столбцов одной строки – переход новую строку}
end;
end.
4,5(20 оценок)
Ответ:
Erumbumbum
Erumbumbum
02.02.2023
Const n=20;
var a:array[1..n] of integer;
i,i1,i2,x:integer;
begin
Randomize;
a[1]:=random(10);
write(a[1],' ');
for i:=2 to n do
 begin
 a[i]:=a[i-1]+random(10);
 write(a[i],' ');
 end;
writeln;
write('x = '); readln(x);
i1:=1; i2:=n;
repeat
i:=(i1+i2) div 2;
if a[i]<x then i1:=(i1+i2) div 2+1;
if a[i]>x then i2:=(i1+i2) div 2-1;
until (a[i]=x)or(i1>i2);
if a[i]=x then 
 begin
 writeln('Искомый(ые) номер(а) элемента(ов):');
 while (i>0)and(a[i]=x) do i:=i-1;
 i:=i+1;
 while (i<=n)and(a[i]=x) do begin write(i,' '); i:=i+1; end;
 end
 else writeln('Элемент не найден');
writeln;
end.

Пример:
5 6 14 15 15 22 30 36 45 45 50 56 60 64 67 76 84 92 99 101 
x = 15
Искомый(ые) номер(а) элемента(ов):
4 5 
4,7(88 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ