Вводить массив символов до тех пор, пока два последних введенных символа не будут равны двум первым - C (СИ)
Формулировка задачи:
Вводить массив символов до тех пор, пока два последних введенных символа не будут равны двум первым введенным символам. Вывести на экран все цифры.
Есть код по вводу массива с условием остановки, но работает он тольео для последнего символа и я не знаю в чем проблема.
И есть код по проверке одного массива на наличие другого, но он не работает и просит только массив вводить, а в ответе выдает непонятно откуда взявшиеся значения
Листинг программы
- #include "stdafx.h"
- #include "stdio.h"
- #include <malloc.h>
- #include <windows.h>
- #include <locale.h>
- int main()
- {
- setlocale(LC_ALL, "RUS");
- char* A;
- int i = 2, N;
- //создание массива
- A = (char*)malloc(2 * sizeof(char));
- printf("Введите массив \n");
- //ввод 1ого значения массива
- scanf_s("%c", &A[0]);
- //ввод 2ого значения массива
- scanf_s("%c", &A[1]);
- //ввод последующих значений массива, перераспределение памяти под массив, условие остановки
- while (!(A[i - 1] == A[0] && A[i] == A[1]))
- {
- i++;
- A = (char*)realloc(A, (i + 1)*sizeof(char));
- scanf_s("%c", &A[i]);
- }
- system("pause");
- return 0;
- }
Листинг программы
- #include "stdafx.h"
- #include "stdio.h"
- #include <malloc.h>
- #include <windows.h>
- #include <iostream>
- #include <locale.h>
- int main()
- {
- setlocale(LC_ALL, "ENG");
- char num[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
- const int n = 10;
- char A[n];
- int i, j;
- //создание и ввод массива
- printf("Введите элементы массива А \n");
- for (i = 0; i < n; i++)
- {
- scanf_s("%d", &A[i]);
- }
- printf("Только числа из массива:\n");
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- if (A[i] == num[j])
- {
- printf("%d", A[i]);
- }
- }
- }
- system("pause");
- return 0;
- }
Решение задачи: «Вводить массив символов до тех пор, пока два последних введенных символа не будут равны двум первым»
textual
Листинг программы
- #include <stdio.h>
- #define SIZE 1000
- int main ( void )
- {
- char firstCharacter, secondCharacter, penultimateCharacter;
- char yourArray[SIZE] = "";
- signed short nextCharacter, counter = 1, arrayCounter = 0;
- puts( "Please enter your sequence: " );
- fflush( stdout );
- while ( !((nextCharacter = getchar()) == secondCharacter ) || !( penultimateCharacter ==
- firstCharacter )) {
- yourArray[arrayCounter++] = nextCharacter;
- penultimateCharacter = nextCharacter;
- if ( nextCharacter == firstCharacter ) {
- penultimateCharacter = firstCharacter;
- continue;
- }
- if ( counter == 1 ) {
- firstCharacter = nextCharacter;
- ++counter;
- continue;
- }
- if ( counter == 2 ) {
- secondCharacter = nextCharacter;
- ++counter;
- continue;
- }
- }
- puts( "\nIt was found the sequence of the first two characters" );
- puts( "The numbers in your sequence is follows: ");
- for ( arrayCounter = 0; arrayCounter < SIZE; ++arrayCounter ) {
- if ( yourArray[arrayCounter] >= '0' && yourArray[arrayCounter] <= '9' )
- printf( "%2c", yourArray[arrayCounter] );
- }
- puts( "" );
- return 0;
- }
Объяснение кода листинга программы
- В начале определяются переменные:
firstCharacter
secondCharacter
penultimateCharacter
yourArray
- массив символовnextCharacter
counter
- счетчик количества введенных символовarrayCounter
- счетчик для заполнения массива
- Затем выводится сообщение с просьбой ввести последовательность символов.
- Далее идет цикл, который продолжается до тех пор, пока два последних введенных символа не будут равны двум первым.
- Внутри цикла:
- символ добавляется в массив
penultimateCharacter
обновляется- если текущий символ равен первому, то
penultimateCharacter
обновляется - если счетчик равен 1, то первый символ сохраняется и счетчик увеличивается
- если счетчик равен 2, то второй символ сохраняется и счетчик увеличивается
- После окончания цикла выводится сообщение о том, что найдена последовательность из первых двух символов.
- Затем выводится последовательность чисел, введенных в массив, в формате таблицы.
- В конце возвращается 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д