В поле записи строки каждый текущий введенный элемент перезаписывается в предыдущий - C (СИ)
Формулировка задачи:
Структуры и строки. Возникла проблема с вводом строк. В поле записи строки каждый текущий введенный элемент перезаписывается в предыдущий. Не пойму в чем проблема(
Условие: Строка, вводимая с терминала, и ее длина, вычисляемая в процессе ввода. Ключ сорти-ровки – длина строки, алгоритм сортировки – пузырёк.:
// ConsoleApplication9.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <stdio.h> #include <string.h> #include <locale> typedef struct { char* STRING; int LENSTRING; }STR; void main() { STR m[100]; int i = 0, N = 0; char s[255] = ""; setlocale(LC_ALL, "Russian"); do { printf("Введите строку:\n"); gets_s(s); m[i].STRING = s; m[i].LENSTRING = strlen(s); i++; } while (m[i - 1].LENSTRING != 0); N = i - 1; for (int k = 0; k <= N - 1; k++){ for (i = 1; i <= N - k; i++) { if (m[i].LENSTRING > m[i + 1].LENSTRING) { STR buf; buf = m[i]; m[i] = m[i + 1]; m[i + 1] = buf; } } } printf("Сортировка:"); for (i = 0; i <= N; i++) printf("%s", m[i].STRING); }
Решение задачи: «В поле записи строки каждый текущий введенный элемент перезаписывается в предыдущий»
textual
Листинг программы
#include <stdio.h> #include <string.h> typedef struct { char STRING[100]; int LENSTRING; }STR; int main() { STR m[100]; STR buf; int i = 0, N = 0,k; char s[255] = ""; do { printf("Enter string:\n"); gets(s); strcpy(m[i].STRING,s); m[i].LENSTRING = strlen(s); i++; } while (m[i - 1].LENSTRING != 0); N = i - 1; for (k = 0; k < N; k++){ for (i = k; i < N; i++) { if (m[i].LENSTRING < m[k].LENSTRING) { buf = m[i]; m[i] = m[k]; m[k] = buf; } } } printf("Sorted:\n"); for (i = 0; i <= N; i++) printf("%s\n", m[i].STRING); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д