Предмет: Информатика,
автор: alexkaverz
Выбивает ошибку, не считывает введенную строку. Вопрос: почему? Программа должна разделять введенную пользователем строку на 2: с четными и нечетными символами.
#include
#include
#include
#include
#include
#include
int main()
{
setlocale(LC_ALL, "rus");
char stroka[1000];
int n;
char str1[1000];
char str2[1000];
printf("\nВведите строку\n>> ");
scanf_s("%c", stroka);
n = strlen(stroka);
int length_str1 = n / 2 + n % 2;
int length_str2 = n - length_str1;
str1[length_str1 + 1];
str2[length_str2 + 1];
str1[length_str1] = str2[length_str2] = '\0';
int j = 0;
for (int i = 0; i < n; ++i)
{
if (i % 2)
str2[j++] = stroka[i];
else
str1[j] = stroka[i];
}
printf("Результат работы программы : \n");
printf("S1 :: %s\n", str1);
printf("S2 :: %s\n", str2);
return 0;
}
restIess:
А в какой строке ошибка? У меня запускается
Ответы
Автор ответа:
0
Программа неверно определяла размер строки, считывать строку лучше с помощью функции fgets();
/*
В S2 храним четные, в S1 нечётные;
*/
#include<stdio.h>
#include<locale.h>
#include<string.h>
int main()
{
setlocale(LC_ALL, "rus");
char stroka[1000];
int n;
char str1[1000];
char str2[1000];
printf("\nВведите строку\n>> ");
fgets(stroka, 1000, stdin);
n = strlen(stroka);
int cnt1 = 0, cnt2 = 0;
printf("\n%d\n", n);
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
str2[cnt2] = stroka[i];
cnt2++;
}
else {
str1[cnt1] = stroka[i];
cnt1++;
}
}
str2[cnt2] = '\0';
str1[cnt1] = '\0';
printf("Результат работы программы : \n");
printf("S1 :: %s\n", str1);
printf("S2 :: %s\n", str2);
return 0;
}
Похожие вопросы
Предмет: Русский язык,
автор: kylakovapolina7
Предмет: Русский язык,
автор: окружающиймир41
Предмет: Русский язык,
автор: pitataa123
Предмет: Алгебра,
автор: masha4149