Приветствую Вас Гость | RSS

Язык программирования С

Вторник, 23.04.2024, 14:27
1 2 »

Упражнение 1.19. Напишите функцию reverse(s), которая переписывает свой строковый аргумент s в обратном порядке. Воспользуйтесь ею для написания программы, которая бы выполняла такое обращение над каждой строкой входного потока по очереди.

/* программа, переписывающая строку в обратном порядке */

#include "stdafx.h"
#define MAXLINE 1000 /* максимальная длина строки в потоке */

void reverse(char s[]);

int main()
{

char line[MAXLINE]; /* текущая введенная строка */
char c;
int i;

i = 0;
while ((c = getchar()) != EOF) {

line[i] ... Читать дальше »

Просмотров: 3665 | Добавил: brainfrog | Дата: 17.04.2010 | Комментарии (3)

Упражнение 1.18. Напишите программу для удаления лишних пробелов и табуляций в хвосте каждой поступающей строки входного потока, которая бы также удаляла полностью пустые строки.

/* программа для удаления лишних пробелов и табуляций */

#include "stdafx.h"
#define MAXLINE 1000 /* максимальная длина строки в потоке */

int getline(char line[], int maxline);

int main()
{

int len; /* длина текущей строки */
int i;
char line[MAXLINE]; /* текущая введенная строка */

while ((len = getline(line, MAXLINE)) > 0) { ... Читать дальше »

Просмотров: 3314 | Добавил: brainfrog | Дата: 08.04.2010 | Комментарии (2)

Упражнение 1.17. Напишите программу для вывода всех строк входного потока, имеющих длину более 80 символов.

/* программа вывода всех строк входного потока, имеющих длину более 80 символов */

#include "stdafx.h"
#define MAXLINE 1000 /* максимальная длина строки в потоке */

int getline(char line[], int maxline);

int main()
{

int len; /* длина текущей строки */
char line[MAXLINE]; /* текущая введенная строка */


while ((len = getline(line, MAXLINE)) > 0)

/* если количество символов в стро ... Читать дальше »

Просмотров: 2696 | Добавил: brainfrog | Дата: 07.04.2010 | Комментарии (2)

Упражнение 1.16. Доработайте главный модуль программы определения самой длинной строки так, чтобы она выводила правильное значение для какой угодно длины строк входного потока, насколько это позволяет текст.

В непереведенном варианте задача звучит так: "Revise the main routine of the longest-line program so it will correctly print the length of arbitrarily long input lines, and as much as possible of the text.", а в примере программы есть вывод количества символов в самой длинной строке. То есть надо исправить функцию main, чтобы программа корректно выводила количество символов самой длинной строки и максимально возможное количество текста (ограничение - MAXLINE).

Доработанная программа будет выглядеть так:

/* программа определения самой длинной строки */

#include "stdafx.h"
#define MAXLINE 1000 /* максимальная длин ... Читать дальше »

Просмотров: 4039 | Добавил: brainfrog | Дата: 01.04.2010 | Комментарии (2)

Упражнение 1.15. Перепишите программу преобразования температур из раздела 1.2 так, чтобы само преобразование выполнялось функцией.

Измененная программа:

/* программа преобразования температур с использованием функции */

#include "stdafx.h"

double conv(double fahr, double celsius);

int main()
{

double fahr, celsius = 0; // температура по Фарингейту и Цельсию
int lower, upper, step;

lower = 0; // нижняя граница температур
upper = 300; // верхняя граница температур
step = 20; // величина шага
fahr = lower; // задаем н ... Читать дальше »

Просмотров: 2307 | Добавил: brainfrog | Дата: 13.03.2010 | Комментарии (0)

Упражнение 1.14. Напишите программу для вывода гистограммы частот, с которыми встречаются во входном потоке различные символы.

Не очень хорошо сформулированное задание, написал программу, которая считает пять различных символов:

/* вывод гистограммы частот, с которыми встречаются во входном потоке различные символы */

#include "stdafx.h"

int main()
{

int c, j, i;
int characters[5]; // массив количества различных символов

for (i = 0; i < 5; ++i)

characters[i] = 0;

while ((c = getchar()) != EOF) {

if (c == '}')

++characters[0];

< ... Читать дальше »
Просмотров: 2824 | Добавил: brainfrog | Дата: 12.03.2010 | Комментарии (4)

Упражнение 1.13. Напишите программу для вывода гистограммы длин слов во входном потоке. Построить гистограмму с горизонтальными рядами довольно легко, а вот с вертикальными столбцами труднее.

Программа для вывода гистограммы с горизонтальными рядами:

/* вывод гистограммы длин слов во входном потоке */

#include "stdafx.h"
#define IN 1 /* внутри слова */
#define OUT 0 /* снаружи слова */

int main()
{

int c, j, i, state;
int wordlength[16]; // массив длин слов


for (i = 0; i < 16; ++i)

wordlength[i] = 0;

i = 0;
... Читать дальше »

Просмотров: 5042 | Добавил: brainfrog | Дата: 11.03.2010 | Комментарии (8)

Упражнение 1.12. Напишите программу для вывода входного потока по одному слову в строке.

За основу берем предыдущую программу, немного убираем и немного дополняем, получаем следующее:

/* вывод входного потока по одному слову в строке */

#include "stdafx.h"
#define IN 1 /* внутри слова */
#define OUT 0 /* снаружи слова */

int main()
{

int c, state; // символ, состояние

state = OUT;
while ((c = getchar()) != EOF) {

if (c == ' ' || c == '\n' || c == '\t')

state = OUT;

... Читать дальше »

Просмотров: 3045 | Добавил: brainfrog | Дата: 10.03.2010 | Комментарии (4)

Упражнение 1.11. Как бы вы протестировали программу подсчета слов? Какого рода входной поток скорее всего выявит ошибки в программе (если таковые есть)?

Дана программа:

/* подсчет строк, слов и символов во входном потоке */

#include "stdafx.h"
#define IN 1 /* внутри слова */
#define OUT 0 /* снаружи слова */

int main()
{

int c, state; // символ, состояние
int nl, nw, nc; // новая строка, новое слово, новый символ

state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {

++nc;
if (c ... Читать дальше »

Просмотров: 3132 | Добавил: brainfrog | Дата: 09.03.2010 | Комментарии (1)

Упражнение 1.10. Напишите программу для копирования входного потока в выходной с заменой знаков табуляции на \t, символов возврата назад (Backspace) на \b, а обратных косых черт - на \\. Это сделает табуляции и символы возврата легко читаемыми в потоке.

/* замена знаков табуляции на \t, символов возврата назад на \b, обратных косых черт на \\ */

#include "stdafx.h"

int main()
{

int c;

while ((c = getchar()) != EOF) {

/* если c - табуляция, печатаем \t */
if(c == '\t')

printf("\\t");

/* если c - символ возврата назад, ... Читать дальше »

Просмотров: 2962 | Добавил: brainfrog | Дата: 06.03.2010 | Комментарии (1)

1-10 11-20