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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2011, 19:08   #1
prem1era
Пользователь
 
Аватар для prem1era
 
Регистрация: 16.11.2009
Сообщений: 33
По умолчанию Найдите ошибку (работа со строками)

Помогите найти ошибку в программе. Вот задание: Ввести стоку ,распечатать. Удалить слова, состоящие ровно из К символов. Результирующию распечатать.
Вот программа
Код:
#include "stdio.h"
#include "conio.h"
#include "string.h"
#define lim 60
int n;
void obr(char s1[],char s2[])
{
        int i=0,j=0,kol,k;
        while (s1[i]!='\0');
        {
                for (;s1[i]==' ' ;i++);
                k=j;
                for (kol=0;((s1[i]!='\0')&&(s1[i]!=' '));i++,j++,kol++);
                s2[j]=s1[j];
                if (kol==n) j=k;
                s2[j++]=s1[i];
        }
        s2[j]=s1[j];
}
void main()
{
        char s1[lim],s2[lim];
        puts("Введите строчку");
        gets(s1);       
        printf("Исходная строка:%s\nЕе длина:%d\n",s1,strlen(s1)+1);
        printf("Введите максимум слов в строке:");
        scanf("%d",&n);
        obr(s1,s2);
        printf("Полученная строка:%s\n",s2);
        getch();
}
Компилятор не хочет входить в процедуру "obr".Процедура obr обрабатывает строку и если слово не равняется заданному к-символов по просто копирует в строку s2 исли же нет то пропускает слово.
prem1era вне форума Ответить с цитированием
Старый 26.04.2011, 19:24   #2
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Код:
char s1[lim],s2[lim];
Разве так можно? вместо лим должно быть значение, а чтобы динамический массив создать, нужно использовать такую конструкцию:
Код:
char* s1;
s1 = new char[lim];
или же ваша переменная lim должна быть константой.
Хотя, тогда бы у вас выбивало ошибку при описании переменной... Значит тут что-то другое...
А ошибка выскакивает какая-нибудь? Или прога выполняется, а потом тупо не происходит нужного действия?
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 26.04.2011 в 19:27.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 27.04.2011, 18:12   #3
prem1era
Пользователь
 
Аватар для prem1era
 
Регистрация: 16.11.2009
Сообщений: 33
По умолчанию

Цитата:
Сообщение от ImmortalAlexSan Посмотреть сообщение
А ошибка выскакивает какая-нибудь? Или прога выполняется, а потом тупо не происходит нужного действия?
Выполняется но виснет при входе в процедуру
prem1era вне форума Ответить с цитированием
Старый 27.04.2011, 18:43   #4
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Код:
while (s1[i]!='\0');
Бесконечный цикл -)
Точку с запятой убери.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите ошибку vladxxl Общие вопросы C/C++ 1 23.04.2011 17:09
Работа со строками. Написал программній код, но где-то допустил ошибку. NikitaNikita Помощь студентам 2 07.02.2011 16:32
Найдите ошибку St1fler92 Помощь студентам 4 26.05.2009 15:23
Найдите Ошибку. Работа с файлами Lord_Rufus Помощь студентам 2 03.10.2008 11:44