Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
VS93
1 / 1 / 0
Регистрация: 12.11.2011
Сообщений: 3
1

Перенести первое слово каждой строки в ее конец

12.11.2011, 11:17. Просмотров 847. Ответов 5
Метки нет (Все метки)

Нужно перенести первое слово каждой строки в ее конец!

Вот моя пограмма, но я не могу понять как написать ту часть программы в которой будет выполняться задание! Помогите! Как ее закончить? Заранее огромное СПАСИБО!!!

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <string.h>
#include "add.h"
#define MAXLEN 128
#define MSTR 5
 
int main(void) {
    int n;
    char str[MSTR][MAXLEN];
    char out[MSTR][MAXLEN];
    chislo_strok(&n);
    printf("\nEnter text of %d lines: \n", n);
    input_str(str, n);
    slova_strok(str, out, n);
    printf("\nResult of work program:\n");
    vivod_texta(out, n);
 
 
 
 
    return (0);
}
#define MAXLEN 128
#define MSTR 5
 
int chislo_strok(int *n) {
    printf("Enter the number of lines of text: ");
    scanf("%d%*c", n);
    while (*n > MSTR) {
        printf("Range you number [1..%d]\n", MSTR);
        printf("You number is: ");
        scanf("%d%*c", n);
 
    }
 
}
 
void input_str(char string[][MAXLEN], int n) {
    char* simvol = NULL;
    for (int s = 0; s < n; s++) {
        fgets(string[s], MAXLEN, stdin);
        simvol = strchr(string[s], '\n');
        if (simvol != NULL)
            *simvol = '\0';
 
    }
}
 
void vivod_texta(char string[][MAXLEN], int n) {
    for (int s = 0; s < n; s++)
        puts(string[s]);
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2011, 11:17
Ответы с готовыми решениями:

Переместить первое слово в конец строки
нужно переместить первое слово строки в конец строки (язык си). можно использовать специальные...

Перенести в конец каждой строки все входящие в неё цифры
Тёмный лес для меня, те кто дал задание сказали, что оно интересное, помогите пожалуйста решить её,...

Надо написать первое слово каждой строки с заглавной буквы. Как пропустить табуляцию? ( в void)
Есть несколько строк. Первое слово каждой строки должно начинаться с большой буквы. Одна из строк...

В каждой строке исходного файла поменять местами первое и последнее слово, и записать в выходной файл
Написать программу, выполняющую чтение текстового файла “input.in” и выполняющую его преобразование...

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

5
magistr011
6 / 6 / 2
Регистрация: 22.10.2011
Сообщений: 164
12.11.2011, 11:39 2
Я помог бы, только неохото код разбирать, вот если бы ты его прокоментировал и написал поразборчивее, другое дело.
0
VS93
1 / 1 / 0
Регистрация: 12.11.2011
Сообщений: 3
12.11.2011, 11:46  [ТС] 3
Заголовочные файлы add.h:

C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAXLEN 128
#define MSTR 5
 
 
int chislo_strok(int *n);
void input_str(char string[][MAXLEN], int n);
void vivod_texta(char string[][MAXLEN], int n);
void slova_strok(char string[][MAXLEN], char out1[][MAXLEN], int n);
Файл main.c:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "add.h"
#define MAXLEN 128
#define MSTR 5
 
int main(void) {
    int n;
    char str[MSTR][MAXLEN];
    char out[MSTR][MAXLEN];
    chislo_strok(&n);
    printf("\nEnter text of %d lines: \n", n);
    input_str(str, n);
    slova_strok(str, out, n);
    printf("\nResult of work program:\n");
    vivod_texta(out, n);
 
    return (0);
}

Файл wock_with_file.h :

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "add.h"
#define MAXLEN 128
#define MSTR 5
 
 
int chislo_strok(int *n) {
    printf("Enter the number of lines of text: ");
    scanf("%d%*c", n);
    while (*n > MSTR) {
        printf("Range you number [1..%d]\n", MSTR);
        printf("You number is: ");
        scanf("%d%*c", n);
 
    }
 
}
 
void input_str(char string[][MAXLEN], int n) {
    char* simvol = NULL;
    for (int s = 0; s < n; s++) {
        fgets(string[s], MAXLEN, stdin);
        simvol = strchr(string[s], '\n');
        if (simvol != NULL)
            *simvol = '\0';
 
    }
}
 
void vivod_texta(char string[][MAXLEN], int n) {
    for (int s = 0; s < n; s++)
        puts(string[s]);
}
 
void slova_strok(char string[][MAXLEN], char out1[][MAXLEN], int n) {
   // Здесь должно выполняться задание!
}
 Комментарий модератора 
Используйте теги форматирования кода!
1
Xind
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
12.11.2011, 18:17 4
1. Не нужно дублировать define'ы MAXLEN и MSTR в main.c и wock_with_file.h (замечание смотрите дальше). Так как они уже определены в add.h и его подключаете в остальных исходниках, то они уже будут определены. А также не зачем подключать
#include <stdio.h>
#include <ctype.h>
#include <string.h>
в add.h уже есть.

2. wock_with_file.h должно иметь расширение *.c, т.к. там происходит реализация финкций. Он будет компилироваться в отдельный объектный файл.

3.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void slova_strok(char string[][MAXLEN], char out1[][MAXLEN], int n) {
    int i, j, k;
    for (i = 0; i < n; i++) {
        j = 0;
        while (string[i][j] != ' ') {
            j++;
        }
        for (j = j + 2, k = 0; string[i][j] != '\0'; j++, k++) {
            out1[i][k] = string[i][j];
        }
        j = 0;
        k++;
        out1[i][k] = ' ';
        while (string[i][j] != ' ') {
            k++;
            out1[i][k] = string[i][j];
            j++;
        }
        k++;
        out1[i][k] = '\0';
    }
}
4. Определитесь си или си++. На Си такое не работает:
C++
1
for (int s = 0; s < n; s++)
1
VS93
1 / 1 / 0
Регистрация: 12.11.2011
Сообщений: 3
13.11.2011, 00:42  [ТС] 5
Язык Си++
0
lektor666
1 / 1 / 1
Регистрация: 06.12.2011
Сообщений: 7
06.12.2011, 18:21 6
помогите а можно ли этот код доработать так что бы в предпоследнем слове не появлялся рандомный символ и если в тексте несколько пробелов программа их сама убирала и работала адекватно?если да то напишите пожалуйста.спасибо.

Добавлено через 20 минут
Цитата Сообщение от Xind Посмотреть сообщение
for (j = j + 2
там j+1
0
06.12.2011, 18:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2011, 18:21

Поменять местами первое и второе слово строки
Ввести предложение и поменять местами его первые два слова. Я написал код, но мне он не очень...

Найти первое слово из строки и количество символов в нем
Прочитать строку из файла. Реализовать функцию, которая возвращает первое слово из строки и...

Добавить информацию в конец каждой строки текстового файла
Всем привет .Надо реализовать это задание на Си в крайнем случае на Си++. Дан текстовый файл и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru