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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2020, 19:27   #41
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

да точно)) массив не считывают
Alexalex777 вне форума Ответить с цитированием
Старый 20.05.2020, 06:18   #42
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Всем привет!
Не получается решить задачу думаю в функции ошибка. Функция должна перевернуть массив чисел наоборот а программа его распечатать .

Код:
#include<stdio.h>
void ChangeArr(int box[], int n);
int main(void)
{
	int box[] = { 1,8,1,9,2 },i;
	ChangeArr(box, 5);
	for (i = 0; i<5; i++)
		printf("%d", box[i]);
		return 0;
}
//////////////////////////////
void ChangeArr(int box[], int n)
{
	int i, j, temp;
	for (i = 0, j = n - 1; i<n; i++, j--);
	{
		temp = box[i];
		box[i] = box[j];
		box[j] = temp;
	}
}
.
Alexalex777 вне форума Ответить с цитированием
Старый 20.05.2020, 07:22   #43
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Две ошибки в функции. Точка с запятой после цикла - значения меняются один раз и где-то за границами массива. С таким циклом массив будет два раза перевернут и останется прежним.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 20.05.2020, 17:36   #44
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

BDA c for это понятно пробовал разные варианты а где вторая ошибка?? тип функции не void должен быть?
Alexalex777 вне форума Ответить с цитированием
Старый 20.05.2020, 17:42   #45
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
void ChangeArr(int box[], int n)
{
    int i, j, temp;
    for (i = 0, j = n - 1; i < n / 2; i++, j--) {
        temp = box[i];
        box[i] = box[j];
        box[j] = temp;
    }
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 20.05.2020, 18:57   #46
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

интересный подход
Код:
 for (i = 0, j = n - 1; i < n / 2; i++, j--)
5\2=2
4\2=2
3\2=1
2\2=1
Alexalex777 вне форума Ответить с цитированием
Старый 22.05.2020, 06:21   #47
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

еще одна задача
Программа строит массив текст размером 100.Текст состоит из букв и цифр.
Программа должна перевернуть числа, наоборот. Между буквами и цифрами есть пробел.
Построить функцию, которая перевернет цифры, наоборот, функция получает полный текст
и два индекса начало и конец порядка цифр.
Ввод: abc 1784 dfg 538 fgh 12 '\0'
Вывод: abc 4871 dfg 835 fgh 21 '\0'
Код:
#define _CRT_SECURE_NO_WARNINGS
#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;
		//i = j;
		//puts(s);
	}
}
void main(void)
{
	int i, j;
	char s[6];
	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++)
				//i = j;
			change(s, i, j);
		}
	}
	puts(s);
}
думаю ошибка в функции

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

Во-первых, раз текст может быть размера 100, то и массив s лучше сделать такого размера. Во-вторых, в функции change ошибки нет. Проблема в main. Если добавить printf("%d %d\n", i, j); в функцию change и ввести пример ввода, то функция будет вызвана с параметрами:
Код:
4 4
4 5
4 6
5 5
5 6
6 6
13 13
13 14
14 14
21 21
А должна с:
Код:
4 7
13 15
21 22
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

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

BDA возможно change(s, i, j); не в том месте вызвал надо проверить сам алгоритм вроде правильный
Alexalex777 вне форума Ответить с цитированием
Старый 22.05.2020, 10:48   #50
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Код:
#define _CRT_SECURE_NO_WARNINGS
#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++;
			}
			j--;
			change(s, i, j);
			i = j + 1;
		}
		else
			i++;
	}
	puts(s);
}
еще вариант тоже с ошибкой
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