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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2011, 19:24   #1
Степан sapral
 
Регистрация: 11.01.2011
Сообщений: 7
Злость строки в си

Народ, плиссе, помогите. Не знаю как поменять два слова местами. Уже два дня мечусь с той прогой и ничего не получается. Помогите, написать, буду очень благодарен. Надо написать с помощью указателей. Вот что я написал:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <math.h>
#define cl clrscr()
#define ge getch()
#define re return 0
#include <stdlib.h>
#include <string.h>
main(){cl;
char *str;
char *slowo1,*slowo2;
gets(str);
int n,m,k=1,n1,n2,m1,m2;
scanf("%i%i",&n,&m);
for(int i=0;i<strlen(str);i++){
if(*(str+i)==' '){k++;
if(k==n)n1=i;
if(k==n+1)n2=i;
if(k==m)m1=i;
if(k==m+1)m2=i;}}

for(i=n1;i<=n2;i++)
*(slowo1+i-n1)=*(str+i);
*(slowo1+n2+1)='\0';
for(i=m1;i<=m2;i++)
*(slowo2+i-m1)=*(str+i);
*(slowo2+m2+1)='\0';
k=1;

for(int j=0;j<strlen(str);j++){

if(*(str+j)==' '){k++;printf("%c",*(str+j));
if(k==n){printf("\b");
for(i=0;i<m2-m1;i++)
printf("%c",*(slowo2+i));j+=n2-n1-1;}
if(k==m){printf("\b");
for(i=0;i<n2-n1;i++)
printf("%c",*(slowo1+i));j+=m2-m1-1;}}
else printf("%c",*(str+j));
}
ge;re;}
Заранее благодарю.
Степан sapral вне форума Ответить с цитированием
Старый 05.04.2011, 13:02   #2
Napkin
Пользователь
 
Аватар для Napkin
 
Регистрация: 09.12.2009
Сообщений: 25
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main()
{
	char *str;	
	char *temp;
	str = (char*)calloc(30,sizeof(char)); //буфер для строки
	gets(str);
	temp = (char*)calloc(strlen(str),sizeof(char));
	int i=0,j=0;
	while(*(str+i)!=' ') //копируем первое слово
	{
		*(temp+i) = *(str+i);
		i++;
	}
	i++;
	while(*(str+i)) //вставляем последнее слово на место первого
	{
		*(str+j++) = *(str+i++);
	}
	*(str+j++) = ' '; //добавляем пробел
	i = 0;
	while(*(str+j)) //копируем первое слово
	{
		*(str+j++) = *(temp+i++);
	}
	printf("\n%s",str);
	free(str);
	free(temp);
}
Удел сильных - уделывать слабых
Napkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Создание пустой строки и копирование в неё содержимое предыдущей строки 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