Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2010, 19:17   #1
4Fun
Новичок
Джуниор
 
Регистрация: 23.12.2009
Сообщений: 1
Восклицание [Си] В String1 удалить все слова, встречающиеся в String2 и String3 одновременно.

Полное задание: В String1 удалить все слова, встречающиеся в String2 и String3 одновременно. В начало String1 перенести слова встречающиеся только в String2 и String1. В конец – только в String3 и String1. При разработке программы нельзя пользоваться функциями из string.h.

Я сделал все кроме 1-ой части: В String1 удалить все слова, встречающиеся в String2 и String3 одновременно. Помогите ее доделать. Буду очень признателен...

Вот код:

Код:
#include <stdio.h>
#include <conio.h>
char tmp[512];
char string1[512][512];
char string2[512][512];
char string3[512][512];
char string4[512][512];
//------------------------------------------------------------------------------
int my_scanf(char str[512][512])
{
char tmp[512];
int i=0;
int count=0;
int k=0;
int j;
gets(tmp);
        while (tmp[i] !='\0')
                if (tmp[i++]==' ')
                {
                count++;
                }
        i=0;
        j=0;
        ++count;
                while (j < count)
                {
                        if (tmp[i] == ' ')
                        {
                        str[j][k] = '\0';
                        k=0;
                        j++;
                        }
                        else
                        str[j][k++] = tmp[i];
                i++;
                }
return count;
}
//------------------------------------------------------------------------------
int my_strcmp(char *str1, char *str2)
{
        while (*str1 != '\0' && *str2 !='\0')
        {
                if (*str1 != *str2)
                {
                return -1;
                }
        *str1++;
        *str2++;
        }
                if (*str1 == '\0' && *str2 == '\0')
                {
                return 0;
                }
        return -1;
        }
//------------------------------------------------------------------------------
void my_strcpy (char str1[512], char str2[512])
{
int i;
        for (i=0; i<512; i++)
        {
        str1[i] = str2[i];
        }
}
//------------------------------------------------------------------------------
void my_move (char mas[512][512], int i, int j)
{
char tmp[512];
my_strcpy(tmp, mas[i]);
my_strcpy(mas[i], mas[j]);
my_strcpy(mas[j], tmp);
}
//------------------------------------------------------------------------------
int my_strcmp_mas (char *str, char mas[512][512], int count)
{
int i;
        for (i=0; i<count; i++)
        {
                if (my_strcmp(str, mas[i]) == 0)
                return 0;
        }
return -1;
}
//------------------------------------------------------------------------------
int main()
{
int i,j, count1, count2, count3, count4;
printf("Input string1: ");
count1 = my_scanf(string1);
printf("\nInput string2: ");
count2 = my_scanf(string2);
printf("\nInput string3: ");
count3 = my_scanf(string3);

i=0;
j=0;

count4=count1;

while (i<count4)
{
        if (my_strcmp_mas(string1[i], string2, count2) == 0)
        {
                if (my_strcmp_mas(string1[i], string3, count3) == 0)
                {
                count1--;
                i=0;
                }
                else
                {
                my_move (string1, i, j++);
                }
        }
        else
        {
                if (my_strcmp_mas(string1[i], string3, count3) == 0)
                {
                my_move(string1, i, --count4);
                }
        }
i++;
}

printf("\nRezult string: ");
for (i=0; i<count1; i++)
printf("%s ", string1[i]);

getch();
return 0;
}

Последний раз редактировалось Stilet; 23.02.2010 в 09:20.
4Fun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
все слова с нечетным количеством букв подходят для "ёлочной" рекурсии. Все буквы слова расположены в форм no_to Помощь студентам 0 04.01.2010 16:06
СИ. Удалить слова, которые содержат все повторяющиеся буквы первого слова nick23 Помощь студентам 7 01.11.2009 14:47
Найти все слова встречающиеся более одного раза(Си).Использовать двумерный массив. persalena Помощь студентам 1 07.12.2008 00:46
Найти все числа из массива B(n), встречающиеся более чем в одной строке матрицы A(m,n). Alexander89 Паскаль, Turbo Pascal, PascalABC.NET 2 16.10.2008 12:41
В введенном предложении удалить все повторяющиеся слова Алена Помощь студентам 5 21.11.2007 14:12