В поле записи строки каждый текущий введенный элемент перезаписывается в предыдущий - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы