Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программа по удалению пробелов на СИ! ошибка в коде 
:(
    Опции темы
barboss
Дата 1.6.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 18.5.2009

Репутация: нет
Всего: нет



 помогите пожалуйста(((
написала программу по удалению пробелов. а она, зараза, не работает. вот вроде по логике все должно, а все равно зацикливает и не могу понять почему(
оговорка
1- на си. и 2- код подразумевает, что студент, т.е. я) знает только вводную главу и еще не знаком с функциями кроме ввода-вывода и указателями(

вот код:

#include<stdio.h>
#include <string.h>
int main()
{
    int const n=256;
    int i=0,j=0,flag=0;
    char str[n];
    
printf("please input your string\n");
    fgets(str,256,stdin);
    if(str[0]!='\n' && str[0]!=' ')
     flag=1;
        
    else if(str[0]==' ' && str[0]!='\n')
        flag=0;

    
    for(i=1;str[i]!='/n';i++){
        if (str[i]!=0 && flag==1){
            while(str[i]=str[i+1])
                i++;}
        else if(str[i]==' ' && flag==0){
            i=j;
            while(str[j]=str[j+1])
                j++;}
     }
    putchar(str[i]);
    putchar(' ');
    
    
}
PM MAIL   Вверх
Dmi3ev
Дата 1.6.2009, 16:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



я бы написал функцию для этого дела, типа этой
Код

char* delspaces (char* s)
{
    char *res=new char[mystrlen(s)+1];
    char *b=res;
    while (*s)
    {
        if (*s!=' ')
        {
            *res=*s;
            res++;
            s++;
        }
        else
            s++;
    }
    *res='\0';
    res=b;
    return res;
}



--------------------

PM MAIL   Вверх
barboss
Дата 1.6.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 18.5.2009

Репутация: нет
Всего: нет



дело в том. что в этой программе нельзя использовать указатели и функции кроме ввода-вывода((
поэтому я там ввела два флага и написала два цикла типа при флаге 1 и при флаге 0. по идее цикл при флаге 1 у меня должен просто сканировать символы до момента пока на попадет на пробел и флаг не станет ноль, ка ктолько флаг нудевой, то он должен  сдвигать все правые символы влево до тех пор пока не встретит флаг 1.но он зацикливает и ничего не выводит в результате.
PM MAIL   Вверх
Dmi3ev
Дата 1.6.2009, 16:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Код

int main()
{
    char s[]="it's my string!";
    char res[256];
    int k=0;
    for (int i=0; i<strlen(s); i++)
        if(s[i]!=' ')
            res[k++]=s[i];
    res[k]='\0';
    printf("%s \n", res);
    system("pause");
    return 0;
}


Это сообщение отредактировал(а) Dmi3ev - 1.6.2009, 16:54


--------------------

PM MAIL   Вверх
barboss
Дата 1.6.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 18.5.2009

Репутация: нет
Всего: нет



так всек просто оказывается)) спасибо!!!!! smile 
PM MAIL   Вверх
Dmi3ev
Дата 1.6.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

так всек просто оказывается)) спасибо!!!!!

пожалуйста! удачной сессии!


--------------------

PM MAIL   Вверх
barboss
Дата 1.6.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 18.5.2009

Репутация: нет
Всего: нет



это не сессия это нам в школе задают)) одна задачка в классе и 4 на дом))
PM MAIL   Вверх
zim22
Дата 1.6.2009, 17:55 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(barboss @  1.6.2009,  17:41 Найти цитируемый пост)
это не сессия это нам в школе задают

какой класс? первый? smile



--------------------
PM MAIL   Вверх
barboss
Дата 3.6.2009, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 18.5.2009

Репутация: нет
Всего: нет



Ну типа того)) подготовительный)) smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1210 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.