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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2020, 18:36   #51
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
#include <stdio.h>

void change(char s[], int i, int j)
{
    char temp;
    for (; i < j; i++, j--) {
        temp = s[i];
        s[i] = s[j];
        s[j] = temp;
    }
}

void main(void)
{
    int i = 0, j;
    char s[100];
    printf("\n Enter text:\n");
    gets(s);
    while (s[i] != '\0') {
        if (s[i] >= '0' && s[i] <= '9') {
            j = i;
            while (s[j + 1] != ' ' && s[j + 1] != '\0') j++;
            change(s, i, j);
            i = j + 1;
        }
        else
            i++;
    }
    puts(s);
}
Было 2 ошибки. Не нужно было менять знак в условии цикла в change. Лишний j-- в main.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 22.05.2020, 20:02   #52
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Код:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(void)
{
	int i = 0, flag = 0, k = 0, j = 0;
	char a[300];
	printf("Please enter an string conteins numbers and worlds\n\n");
	gets(a);
	while (a[i] != '\0') // Run to end of string
	{
		flag = 0;

		if (a[i] >= '0' && a[i] <= '9') // Symbol is a digit
		{
			j = i;
			flag = 1;			// Found last digit in the number
			if ((a[j + 1] == ' ' || a[j + 1] == '\0') && flag == 1)
			{
				while (a[j] != ' ')
				{
					printf("%c", a[j]); // Print digits in oposite order
					j--;
				}
				flag = 0;
			}
		}
		else // Symbol is not a digit
			printf("%c", a[i]);
		i++;
	}
		printf("\n\nThe End\n\n");
			return 0;
}
Не совсем то что нужно по условию. Еще не разобрался с функциями .
Alexalex777 вне форума Ответить с цитированием
Старый 22.05.2020, 20:03   #53
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

BDA ты уже написал !спасиб!))
Alexalex777 вне форума Ответить с цитированием
Старый 22.05.2020, 21:45   #54
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Вариант с For

Код:
#include <stdio.h>
void change(char s[], int i, int j)
{
	char temp;
	for (; i < j; i++, j--) 
	{
		temp = s[i];
		s[i] = s[j];
		s[j] = temp;
	}
}
void main(void)
{
	int i, j;
	char s[100];
	printf("\n Enter text:\n");
	gets(s);
	for (i = 0; s[i] != '\0';i++)
	{
		if (s[i] >= '0' && s[i] <= '9')
		{
			for (j = i; s[j + 1] != ' ' && s[j + 1] != '\0';)
				j++;
			change(s, i, j);
			i = j + 1;
		}
	}
	puts(s);
}
BDA вопрос какая разница между выражениями ?
Код:
for (j = i; s[j + 1] != ' ' && s[j + 1] != '\0';)
				j++;
и
Код:
for (j = i; s[j + 1] != ' ' && s[j + 1] != '\0';j++)
j он в For что за ним все равно в цикле а результаты разные почему то ?

Последний раз редактировалось Alexalex777; 22.05.2020 в 22:01.
Alexalex777 вне форума Ответить с цитированием
Старый 22.05.2020, 22:02   #55
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
void main(void)
{
    int i, j;
    char s[100];
    printf("\n Enter text:\n");
    gets(s);
    for (i = 0; s[i] != '\0'; i++) {
        if (s[i] >= '0' && s[i] <= '9') {
            for (j = i; s[j + 1] != ' ' && s[j + 1] != '\0'; j++);
            change(s, i, j);
            i = j; // тут без + 1
        }
    }
    puts(s);
}
1) С такими циклами for нужно делать i = j, а не i = j + 1, иначе будут проблемы, если строка заканчивается числом.
2) Результаты разные, потому что for (j = i; s[j + 1] != ' ' && s[j + 1] != '\0'; j++) без точки с запятой в конце "затянет" change в тело цикла.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 22.05.2020 в 22:04.
BDA вне форума Ответить с цитированием
Старый 22.05.2020, 22:24   #56
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Понял!
Alexalex777 вне форума Ответить с цитированием
Старый 31.05.2020, 14:31   #57
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Всем привет! Озадачила меня программка.
Условие такое- Функция должна вернуть 1 в программу в случаи если соседи всех заглавных букв в массиве строк маленькие буквы.
Код:
#include<stdio.h>
char fun(a);
void main(void)
{
	char a[] = "aBcMi";
	int c;
	c=fun(a);
	if(c==1)
	     printf("good");
	else
		printf("bad");
}
char fun(char a[])
{
	int i, count = 0;
	for (i=0; a[i] != '\0';)
	{
		if ((a[i] >= 'a' && a[i] <= 'z') && (a[i + 1] >= 'A'&&a[i + 1] <= 'Z'))
		{
			count = count + 1;
			i = i + 2;
			//printf("count=%d i=%d", count,i);
		}
		else
		{
			count = 0;
			break;
		}
	
		if (count ==2)
			return 1;
		else
			return 0;
	}
}
Alexalex777 вне форума Ответить с цитированием
Старый 31.05.2020, 17:39   #58
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
char fun(char a[])
{
    for (int i = 0; a[i] != '\0'; ++i)
        if (a[i] >= 'A' && a[i] <= 'Z' && !(i > 0 && a[i - 1] >= 'a' && a[i - 1] <= 'z' && a[i + 1] >= 'a' && a[i + 1] <= 'z'))
            return 0;
    return 1;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 31.05.2020, 18:33   #59
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

BDA спасибо!!!
Alexalex777 вне форума Ответить с цитированием
Старый 31.05.2020, 20:28   #60
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

BDA такой вопрос программа работает как надо. Ну почему count=5 ,а по идее должен быть 2 так как две заглавные буквы в массиве у которых соседи маленькие буквы?
Код:
#include<stdio.h>
char fun(a);
void main(void)
{
	char a[] = "fBcMi";
	fun(a);
	//printf("%d  ", fun(a));
}
char fun(char a[])
{
	int count = 0;
	for (int i = 0; a[i] != '\0'; ++i)
		if (a[i] >= 'A' && a[i] <= 'Z' && !(i > 0 && a[i - 1] >= 'a' && a[i - 1] <= 'z' && a[i + 1] >= 'a' && a[i + 1] <= 'z'))
			return 0;
		else
		{
			count++;
			printf("->%d", count);
			//return 1;
		
		}
}
Alexalex777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разница между числами businessman Паскаль, Turbo Pascal, PascalABC.NET 6 21.05.2015 12:55
Дана последовательность из 100 вещественных чисел. Определить , со скольких чётных чисел она начинается SnS Lazarus, Free Pascal, CodeTyphon 2 22.09.2013 18:48
Прога должна строить множества Idiot Помощь студентам 2 11.12.2010 22:45
программа должна считать по этой формуле CheyZe Помощь студентам 0 25.11.2010 19:10
Евклид - программа должна запрашивать у пользователя 2 числа и считать их НОД amfisat Помощь студентам 2 17.09.2010 09:53