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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2016, 22:27   #1
Vitami
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию Помогите, нужно исправить код программы на СИ!!!!!!!!

Ввести строчку слов и вывести слова только с симметричным расположением букв.(использовать только стандартные библиотеки)
Код:
#include <stdio.h>
#include <iostream> 
// x - указатель на первый символ слова
// e - указатель на последний символ слова
// c - кол-во букв в слове
// shag - кол-во пар букв, которое нужно сравнить друг с дургом, чтобы слово было симметричным
void funk(int x, int e, int c, char a[ ]) {
	int shag = c / 2;
	for (int i = 0; i != shag; x++, e--, i++) {
		if (a[x] != a[e]) {
			break;
		}//if
	}//for
			for (int i = x; i != e; i++)
			{
				printf("%c", a[i]);
			}//for		 	
}//funk

int main()
{
	char bukv[100] = { 0 };
	int b = 0;//подсчет символов в слове
	int start = 0;//начало слова
	int finish = 0;//конец слова
	printf("Vvedite stroku: ");
	for (int i = 0; i <= 100; i++)
	{
		char z = getchar();
		if (z == '\n')
		{
			break;
		}//if
		bukv[i] = z;
	}//for
	
	for (int i = 0; bukv[i] != '\0'; i++ && b++)
	{
		if (bukv[i] == ' ' || bukv[i] == '\0')
		{
			finish = i - 1;
			start = i - b;
			funk(start, finish, b, bukv);
			b =-1;
	    }//if		
	}//for
	printf("\n");
	system("pause");
}//main

Последний раз редактировалось Alex11223; 23.10.2016 в 20:23.
Vitami вне форума Ответить с цитированием
Старый 23.10.2016, 00:35   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Убери iostream.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 23.10.2016, 01:25   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

1.jpg
ura_111 вне форума Ответить с цитированием
Старый 23.10.2016, 19:35   #4
Vitami
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Спасибо огромное!!!!!
Vitami вне форума Ответить с цитированием
Старый 23.10.2016, 20:15   #5
Vitami
Пользователь
 
Регистрация: 22.10.2016
Сообщений: 18
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Написал ваш вариант программы, но программа ругается на gets. Переписал через scanf("%[^\n]s", &stroka); , но если делать так, то если написать больше одного слова, то программа не выдает результата. Что делать?
Изображения
Тип файла: png 1.PNG (37.7 Кб, 114 просмотров)
Тип файла: png 2.PNG (37.4 Кб, 43 просмотров)
Vitami вне форума Ответить с цитированием
Старый 23.10.2016, 20:22   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так прочитайте что пишет когда ругается.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.10.2016, 23:29   #7
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вот как нужно использовать данную функцию:

19.jpg

Обрати внимание на то, какие заголовочные файлы нужны для её корректной работы (короче "#include"). Обрати внимание что "С++" и "Си" немного отличаются. Также на картинке есть пример использования этой функции. Я советовал бы тебе, прежде чем править свою программу, попробуй сделать этот маленький пример (это много времени у тебя не займёт). А потом переходи к своей программе.

p.s.: на чём ты программируешь? "с++" или "Си". Откуда у тебя взялось "#include <iostream>"?

Последний раз редактировалось ura_111; 23.10.2016 в 23:32.
ura_111 вне форума Ответить с цитированием
Старый 23.10.2016, 23:36   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Нет, так не нужно (и не получится в современных компиляторах)

http://en.cppreference.com/w/c/io/gets
Цитата:
The gets() function does not perform bounds checking, therefore this function is extremely vulnerable to buffer-overflow attacks. It cannot be used safely (unless the program runs in an environment which restricts what can appear on stdin). For this reason, the function has been deprecated in the third corrigendum to the C99 standard and removed altogether in the C11 standard. fgets() and gets_s() are the recommended replacements.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.10.2016, 23:56   #9
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Vitami,

1) Измени
Код:
#include <iostream>
на
Код:
#include <stdio.h> 
#include <conio.h>
Попробуй, для начало, с функцией "gets".

Если у тебя работать не будет, тогда поменяй "gets" на "scanf" (у меня и так тоже работает).

Если тоже не будет работать. тогда попробуй не вводить строчку, а написать "жестко" в программе(у меня и так тоже работает):


7.jpg


Пиши что получилось.

Последний раз редактировалось ura_111; 24.10.2016 в 00:00.
ura_111 вне форума Ответить с цитированием
Старый 24.10.2016, 00:00   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зачем на scanf-то? Они ж не эквивалентны совсем.
И выше ж написано что надо делать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, нужно исправить 4 ошибки в коде программы Dimas190597 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 02.10.2016 15:57
нужно исправить код melkaya9112 Помощь студентам 1 09.12.2010 00:56
нужно исправить код Alt_Shift Общие вопросы C/C++ 4 14.11.2010 16:16