Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
oksanaBM
1 / 1 / 0
Регистрация: 27.01.2011
Сообщений: 91
#1

Написать подпрограмму в программе на СИ.. - C++

27.01.2011, 09:28. Просмотров 540. Ответов 3
Метки нет (Все метки)

Люди, спасите. завтра экзамен, а я клюшка неправильно сделала ргз, вот на переделку отправили. вот условие : Расстояние между двумя словами равной длины - это количество позиций, в которых различаются эти слова. В ЗАДАННОМ предложении найти пару наиболее близких слов ЗАДАННОЙ длины.

задача: Требуется написать программу на СИ. (ОБЯЗАТЕЛЬНО ИСПОЛЬЗОВАТЬ ПОДПРОГРАММУ в программе, т.е. в подпрограмму занести – измерение расстояния между двумя словами при учитывании количества различающихся позиций).

Буду благодарна тому, кто поможет) и финансово благодарна буду, если правильная прога буит..

Спасибо ))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2011, 09:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать подпрограмму в программе на СИ.. (C++):

Подпрограмму использовать в программе - C++
Написать подпрограмму подсчета стоимости товара с учетом скидки 3%, если стоимость больше 100грн. Использовать подпрограмму для подсчете...

Как подключить подпрограмму к программе? - C++
Как перейти из main в nemain? #include<iostream> #include<conio.h> using namespace std; int main() { setlocale...

Написать подпрограмму Function(S,X) - C++
Написать подпрограмму Function(S,X), где S- строка, X-вещественная переменная. В строке S записано арифметическое выражение, содержащее...

Написать подпрограмму сортировки массива - C++
Написать подпрограмму сортировки массива сортировка обменом(метод пузырька) последовательно сравниваются пары соседних элементов x(k) и...

Помогите написать программу\подпрограмму - C++
Нужно написать программу/подпрограмму на языке C, которая на основе входного файла создает выходной файл, в котором в середине самая...

Написать подпрограмму вычисления площади по герону - C++
как правильно записать подпрограмму вычисления площади по герона. У меня результат показывает -1.#ІND00. Где ошибка? помогите...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
27.01.2011, 12:12 #2
Вот на сишке, проверяй:
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
 
#define DELIMS " \t\n\"\'.,:;?!()`"
#define ALLOC_STEP 5
 
/* Искомая подпрограмма */
size_t wordsDiff(const char* str1, const char* str2);
/* Функция печатает сообщение и завершает программу с кодом 1 */
void errExit(const char* fmt, ...);
 
int main()
{
    char buf[BUFSIZ];
    char* word;
    size_t currSize, size;
    size_t wordLength;
    char** words = NULL;
    char* currW1 = NULL;
    char* currW2 = NULL;
    size_t minDiff;
    size_t newDiff;
    
    size_t i;
    
    puts("Input a sentence followed by the newline character:");
    fgets(buf, BUFSIZ, stdin);
    printf("Input length: ");
    scanf("%u", &wordLength);
 
    currSize = 0;
    size = 0;
 
    /* Разбиваем входную строку на слова длиной wordLength */
    for(word = strtok(buf, DELIMS); word; word = strtok(NULL, DELIMS))
    {
    if(strlen(word) == wordLength)
    {
        if(currSize == size)
        {
        size += ALLOC_STEP;
        if((words = (char**) realloc(words, size * sizeof(char*))) == NULL)
            errExit("Can't (re)allocate memory for array of words of size %u\n", size);
        }
        
        if((words[currSize] = strdup(word)) == NULL)
        errExit("Can't put a duplicate of word `%s' in the array\n", word);
        
        ++currSize;     
    }
    }
 
    size = currSize;
 
    if(currSize == 0)
    printf("No words of length %u was specified\n", wordLength);
    else if(currSize == 1)
    printf("Only one word of length %u was specified: `%s'\n", wordLength, words[0]);
    else
    {
    minDiff = wordLength + 1;
 
    while(currSize)
    {
        word = words[currSize - 1];
        for(i = 0; i < currSize - 1; ++i)
        {
        newDiff = wordsDiff(word, words[i]);
 
        /* Если текущее расстояние равно нулю, то мы нашли искомую пару,
         * дальше просматривать массив нет смысла
         */
        if(newDiff == 0)
        {
            currW1 = word;
            currW2 = words[i];
            minDiff = newDiff;
            currSize = 1;
            break;
        }
        if(newDiff < minDiff)
        {
            currW1 = word;
            currW2 = words[i];
            minDiff = newDiff;
        }
 
        }
 
        --currSize;
    }
 
    printf("The closest pair of word are `%s' and `%s' with lenght of %u\n",
           currW1, currW2, minDiff);
    }
        
    for(i = 0; i < size; ++i)
    free(words[i]);
    free(words);
    
    exit(0);
}
 
void errExit(const char* fmt, ...)
{
    va_list ap;
    va_start (ap, fmt);
    vfprintf(stderr, fmt, ap);
    va_end(ap);
    exit(1);
}
 
size_t wordsDiff(const char* str1, const char* str2)
{
    size_t diff = 0;
    while(*str1 && *str2)
    if(*str1++ != *str2++)
        ++diff;
    return diff;
}
oksanaBM
1 / 1 / 0
Регистрация: 27.01.2011
Сообщений: 91
27.01.2011, 17:35  [ТС] #3
спасибо большое))) только так объемно что-то....
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
27.01.2011, 18:32 #4
спасибо нужно кляцать...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2011, 18:32
Привет! Вот еще темы с ответами:

Написать подпрограмму обращения строки, имеющую прототип - C++
Символьная строка t называется обращением строки s, если ее длина равна длине строки s, а символы расположены в обратном порядке. Например,...

Написать подпрограмму нахождения наибольшего общего делителя двух чисел - C++
Написать подпрограмму нахождения наибольшего общего делителя двух чисел N и M по реккурентному соотношению: (N=23345 M=9135 =&gt;...

Написать подпрограмму, которая определяет, делится ли число на «3» без остатка - C++
1)Написать подпрограмму, которая определяет, делится ли число на «3» без остатка, не используя деления и определения остатка от деления....

помогите написать подпрограмму считающую сумму нечётных чисел, содержащих цифру 5 от N до N^2 - C++
помогите написать подпрограмму считающую сумму нечётных чисел, содержащих цифру 5 от N до N^2. Я мало в этом шарю а надо сделать именно так...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.01.2011, 18:32
Ответ Создать тему
Опции темы

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