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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2009, 18:31   #1
grave123
Пользователь
 
Регистрация: 06.12.2009
Сообщений: 15
Сообщение Редактирование предложения.

Здравствуйте. Есть задача.

Отредактировать заданное предложение, удаляя из него все слова с нечетными номерами и переворачивая слова с четными номерами. Пример: HOW DO YOU DO – OD OD.

Я вроде бы сделал, но некорректный результат выводит помогите отыскать ошибку

Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAX_STRINGS 40
#define MAX_LENGTH 10
void enter_strings(char string[MAX_STRINGS][MAX_LENGTH]);
void drop_strings(char string[MAX_STRINGS][MAX_LENGTH]);
void coup_strings(char string[MAX_STRINGS][MAX_LENGTH]);
void show_strings(char string[MAX_STRINGS][MAX_LENGTH]);
int main()
{
    char str[MAX_STRINGS][MAX_LENGTH];
    enter_strings(str);
    drop_strings(str);
    coup_strings(str);
    show_strings(str);
    getch();
    return 0;
}
void enter_strings(char string[MAX_STRINGS][MAX_LENGTH])
{
    int i, j;
    char m;     
    m = 'a';
    printf ("\nInput strings: ");
     for (i = 0; m != '.'; i++)
     {
          scanf ("%c", &m);
          for (j = 0 ;m != '.' && m != ' '; j++)
          {
               string[i][j] = m;
               scanf ("%c", &m);
          }
          string[i][j]='\0';
     }
     string[i][0]='\0';
}
void drop_strings(char string[MAX_STRINGS][MAX_LENGTH])
{
    int i, k, j = 0;
    for (i = 0, k = 1; string[k-1][0] != '\0'; k = k + 2, i++)
    {
        strcpy(string[i],string[k]);
    }
    string[i][0]='\0';
}
void coup_strings(char string[MAX_STRINGS][MAX_LENGTH])
{
    int i, j, k;
    char temp;
    for (i = 0; string[i-1][0] != '\0'; i++)
    {
        for (k = 0, j = strlen(string[i]); k < j; k++, j--)
        {
            temp = string[i][k];
            string[i][k] = string[i][j];
            string[i][j] = temp;
        }
    }
}
void show_strings(char string[MAX_STRINGS][MAX_LENGTH])
{
    int i;
    for (i = 0; string[i-1][0] != '\0'; i++)
    {
        printf ("%s",string[i]);
    }
}
grave123 вне форума Ответить с цитированием
Старый 20.12.2009, 20:42   #2
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Код:
#include <iostream>
#include <string>
#include <fstream>
#include "stdio.h"
#include <conio.h>
using namespace std;

const int MAX = 100;

int main() 
{
	char source[MAX];
	char dest[MAX];
	char *buf;
	//char tmp[25];
	int n=1;
	cout <<"Vvedite stroku \n";
	cin.getline(source,(MAX-1),'\n');
	buf = strtok(source," ,.");
	if (buf!=NULL)
		buf = strtok(NULL," ,.");
	strrev(buf);
	strcpy(dest,buf);
	strcat(dest," ");
	buf = strtok(NULL," ,.");
	while (buf!=NULL)
	{	
		if ((n%2)==0)
		{
			strrev(buf);
			strcat(dest,buf);
			strcat(dest," ");
		}
		n++;
		buf = strtok(NULL," ,.");
	}
	cout <<endl<< dest <<endl;
	return 0;
}
У меня покороче вроде вышло
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 18.10.2011, 13:26   #3
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Можете во втором посте закоментить строки?
a.n.o.n.i.m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужны ваши мнения и предложения Irat Свободное общение 0 18.09.2008 12:46
Предложения Simply-Art О форуме и сайтах клуба 9 24.08.2007 09:37
Оптимизация веса страниц, предложения и рекомендации Alex21 О форуме и сайтах клуба 5 04.06.2007 16:30