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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2010, 14:03   #1
Slame
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 45
Злость Строки на С

Задали такую задачу:Есть строка,каждое слово в строке отделено запятой(кроме первого),в конце строки стоит точка.
Вывести на экран строку только каждую пару букв поменять местами.
Пример "абвгд" а на экране "багвд"
У меня в программе получаетсья такая штука если ввести 1 слово очень длинное а 2 слово меньше,то оно почему то во 2 слово дополняет окончание 1 слова...В общем если можете помогите найти ошибку)заранее благодарен)
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{char s[120],si[30],b,sa[120]="";
int i,l,n,j,k;
printf("vv ctroku\n");
gets(s);i=0;
while ((s[i]!='.')&&(i<strlen(s))) {
	if (s[i]==',') i++;
	l=0;
	while ((s[i]!=',')&&(i<strlen(s))&&(s[i]!='.'))
	{  si[l]=s[i];i++;l++;}
n=0;
while(n<strlen(si)-1)
{b=si[n];
si[n]=si[n+1];
si[n+1]=b;
n=n+2;}
strcat(sa,si);if (s[i]=='.'){ strcat(sa,".");} else {  strcat(sa,",");}
si[0]=0;    
}    puts(sa);
getchar();  }
Slame вне форума Ответить с цитированием
Старый 05.12.2010, 16:39   #2
oleg.v
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 80
По умолчанию

Опять гонка всё и сразу. Вас должны были научить что такое Функции. Так вот исходя из этого делай программу.

1 Функция: выбрать слово из строки.
2 Ф : поменять местами в слове буквы.
3 Ф : слово напечатать
4 переход к рункту 1.

Делай постепенно, шаг за шагом. Любая задача состоит из подзадач. Удачи.
oleg.v вне форума Ответить с цитированием
Старый 05.12.2010, 17:11   #3
Slame
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 45
По умолчанию

Ну у меня ж вроде так же само как ты и описал,толкьо я делал не через функции а всё в основной программе.
Просто у меня чё-то момент "1 Функция: выбрать слово из строки." работает неверно,т.к. я уже писал выше если допустим 1 слово больше второго то оно во 2 разе забивает 2 слово+окончание 1вого слова.
Slame вне форума Ответить с цитированием
Старый 05.12.2010, 17:19   #4
oleg.v
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 80
По умолчанию

Поэтому и говорю, разбей задачу на подзадачи и решай по мере выполнения подзадач. Научись правильно выбирать слово из строки, а затем следуй дальше. Не берись за всё сразу.
oleg.v вне форума Ответить с цитированием
Старый 05.12.2010, 17:53   #5
Slame
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 45
По умолчанию

"Научись правильно выбирать слово из строки,"
Ну так смотря что пож этим видеть)Если понять алгоритм я понял,если всмысле на языке С то я именно и прошу помоч мне с этим потому что сам уже 3 день думаю что сдесь неправиольно,и не могу найти...

"Научись правильно выбирать слово из строки,"
Ну так смотря что пож этим видеть)Если понять алгоритм я понял,если всмысле на языке С то я именно и прошу помоч мне с этим потому что сам уже 3 день думаю что сдесь неправиольно,и не могу найти...

Последний раз редактировалось Stilet; 05.12.2010 в 20:06.
Slame вне форума Ответить с цитированием
Старый 05.12.2010, 22:16   #6
oleg.v
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 80
Сообщение

Могу так предложить.
Код:
#include <stdio.h>
#include <string.h>

int main()
{
    char in[80];
    char out[79];
    char tmp;

    int c, t, lin;

    //go

    gets(in);
    c = t = 0;
    lin = strlen(in);

    while ((in[c]!='.') && (c < lin))
    {
        if (in[c]!=',')
        {
            if (t==0)
            {
                tmp = in[c];
                t++;
            }
            else
            {
                out[c-1] = in[c];
                out[c] = tmp;
                t = 0;
            }
        }
        else
        {
            if (t!=0)
            {
                out[c-1] = tmp;
                out[c] = ',';
                t = 0;
            }
            else
                out[c] = ',';
        }

        c++;
    }

    if (t==1)
    out[c-1] = tmp;
    out[c] = '\0';

    printf("%s\n", out);
    return 0;
}
oleg.v вне форума Ответить с цитированием
Старый 08.12.2010, 17:57   #7
Slame
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 45
По умолчанию

oleg.v Спасибо большое)Вообще блин ты меня так спас)Огромное спасибо)
Slame вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Дбавление новой строки, после строки с подходящими параметрами RailOS Microsoft Office Excel 5 18.08.2010 10:12
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27