구조체 배열 정렬이 예상대로 작동하지 않습니다.

Alexander Vištorsky

구조체 정렬에 문제가 있습니다.

브랜드 ( 'Marke'), 모델 ( 'Modelis') 및 가격 ( 'Kaina')과 같은 정보가있는 자동차 구조가 있습니다. 사용자가이 브랜드, 모델 및 가격을 입력하면 프로그램은 가장 작은 것부터 가장 큰 것까지 가격을 기준으로 해당 배열을 정렬하고 정렬 된 배열 char brandchar model.

먼저 10 개의 배열로 정렬 스크립트를 테스트했습니다. 그런 다음 가격이 다음과 같이 배열 된 3 개의 배열로 테스트했습니다 '200' '300' '100'.-잘 작동합니다. 그러나 사용자가 다음과 같이 내림차순으로 가격을 입력하자마자 : '300' '200' '100'-올바른 방식으로 정렬되지 않고 내가 얻는 것은 : '100' '300' '200'. 다음은 전체 스크립트입니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Automobiliai {

    char Marke[20];
    char Modelis[20];
    float Kaina;

};

struct Automobiliai Prijungti(char *_marke, char *_modelis){

    struct Automobiliai p;
    strcpy(p.Marke, _marke);
    strcpy(p.Modelis, _modelis);

    return p;

};

int main()
{

    struct Automobiliai automobilis[3];

    for(int i = 0; i < 3; i++){

        printf("%d automobilis: Marke Modelis Kaina \n", i+1);
        scanf("%s %s %f", automobilis[i].Marke, automobilis[i].Modelis, &automobilis[i].Kaina);

    }

    struct Automobiliai _automobilis[3];

    for(int i = 0; i < 3; i++){

        for(int j = i + 1; j < 3; j++){

            if(automobilis[i].Kaina > automobilis[j].Kaina){

                _automobilis[i] = Prijungti(automobilis[i].Marke, automobilis[i].Modelis);
                automobilis[i] = Prijungti(automobilis[j].Marke, automobilis[j].Modelis);
                automobilis[j] = Prijungti(_automobilis[i].Marke, _automobilis[i].Modelis);

            }

        }

    }

    printf("Automobiliu markes modelio kainos atzvilgiu tvarka: \n");
    for(int i = 0; i < 3; i++){

        printf("%s %s\n", automobilis[i].Marke, automobilis[i].Modelis);

    }

}

좀 더 구체적으로 말하자면 이것은 내가 문제가있는 코드의 일부입니다.

for(int i = 0; i < 3; i++){

        for(int j = i + 1; j < 3; j++){

            if(automobilis[i].Kaina > automobilis[j].Kaina){

                _automobilis[i] = Prijungti(automobilis[i].Marke, automobilis[i].Modelis);
                automobilis[i] = Prijungti(automobilis[j].Marke, automobilis[j].Modelis);
                automobilis[j] = Prijungti(_automobilis[i].Marke, _automobilis[i].Modelis);

            }

        }

    }

왜 이런 일이 일어나는지 상상할 수 있고 한 가지 조건을 더 추가해야한다고 생각 if하지만 이미 머리가 int a = 0;아파서 루프 바로 전에 변수를 만드는 것 이상으로 생각할 수 없습니다. 루프 를 다시 만드는 방법은 다음 과 같습니다.

for(int i = 0; i < 3; i++){

        for(int j = i + 1; j < 3; j++){

            if(automobilis[i].Kaina > a){

                a = automobilis[j].Kaina;
                _automobilis[i] = Prijungti(automobilis[i].Marke, automobilis[i].Modelis);
                automobilis[i] = Prijungti(automobilis[j].Marke, automobilis[j].Modelis);
                automobilis[j] = Prijungti(_automobilis[i].Marke, _automobilis[i].Modelis);

            }

        }

    }

그러나 그것은 이것을 해결하지 못합니다.

LDN 사용

임시 변수를 사용하여 이와 같이 오름차순을

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct Automobiliai
{
    char Marke[20];
    char Modelis[20];
    float Kaina;
}Automobiliai;

int main()
{
    Automobiliai automobilis[3];

    for(int i = 0; i < 3; i++)
    {
        printf("%d automobilis: Marke Modelis Kaina \n", i+1);
        scanf("%s %s %f", automobilis[i].Marke, automobilis[i].Modelis, &automobilis[i].Kaina);
    }
    
    Automobiliai temp;
    for(int i = 0; i < 3; i++)
    {
        for(int j = i + 1; j < 3; j++)
        {
            if(automobilis[i].Kaina > automobilis[j].Kaina)
            {
                temp = automobilis[j];
                automobilis[j]=automobilis[i];
                automobilis[i]=temp;
            }
        }
    }
    printf("Automobiliu markes modelio kainos atzvilgiu tvarka: \n");
    for(int i = 0; i < 3; i++)
    {
        printf("%s %s\n", automobilis[i].Marke, automobilis[i].Modelis);
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP 배열 정렬이 예상대로 작동하지 않습니다.

분류에서Dev

배열 정렬 날짜가 예상대로 작동하지 않습니다.

분류에서Dev

문자열 구문 분석이 예상대로 작동하지 않습니다.

분류에서Dev

각도로 배열 정렬이 작동하지 않습니다.

분류에서Dev

배열 검색이 예상대로 작동하지 않습니다.

분류에서Dev

봄 조언이 예상대로 작동하지 않습니다.

분류에서Dev

MySQL 조인이 예상대로 작동하지 않습니다.

분류에서Dev

정규식에서 문자열 대체가 예상대로 작동하지 않습니다.

분류에서Dev

powerPC sizeof에서 구조체 배열에 대한 포인터를 증가 시키면 예상대로 작동하지 않습니다.

분류에서Dev

FreeRTOS : 대기열이 예상대로 작동하지 않았습니다.

분류에서Dev

Ant의 체크섬 작업이 예상대로 작동하지 않습니다.

분류에서Dev

MaterialUI TextField : 배경색 변경이 예상대로 작동하지 않습니다.

분류에서Dev

Ruby Shoes의 다차원 배열이 예상대로 작동하지 않습니다.

분류에서Dev

Ruby Shoes의 다차원 배열이 예상대로 작동하지 않습니다.

분류에서Dev

Java 분할 문자열이 예상대로 작동하지 않습니다.

분류에서Dev

replaceAll이 문자열에서 예상대로 작동하지 않습니다.

분류에서Dev

JS 문자열이 예상대로 작동하지 않습니다.

분류에서Dev

JSX 조건부 렌더링이 예상대로 작동하지 않습니다.

분류에서Dev

조건부 바인딩이 예상대로 작동하지 않습니다.

분류에서Dev

Oracle 외부 조인이 예상대로 작동하지 않습니다.

분류에서Dev

ksh93의 조판이 예상대로 작동하지 않습니다.

분류에서Dev

mysql 오른쪽 조인이 예상대로 작동하지 않습니다.

분류에서Dev

MySql 왼쪽 외부 조인이 예상대로 작동하지 않습니다.

분류에서Dev

Linq의 Simple Left 조인이 예상대로 작동하지 않습니다.

분류에서Dev

mySQL 쿼리 선택 / 조인이 예상대로 작동하지 않습니다.

분류에서Dev

Javascript Promise 체인이 예상대로 작동하지 않습니다.

분류에서Dev

Gradle API 구성이 예상대로 작동하지 않습니다.

분류에서Dev

탁구 패들이 예상대로 작동하지 않습니다.

분류에서Dev

Meteor 발행물 / 구독이 예상대로 작동하지 않습니다.

Related 관련 기사

  1. 1

    PHP 배열 정렬이 예상대로 작동하지 않습니다.

  2. 2

    배열 정렬 날짜가 예상대로 작동하지 않습니다.

  3. 3

    문자열 구문 분석이 예상대로 작동하지 않습니다.

  4. 4

    각도로 배열 정렬이 작동하지 않습니다.

  5. 5

    배열 검색이 예상대로 작동하지 않습니다.

  6. 6

    봄 조언이 예상대로 작동하지 않습니다.

  7. 7

    MySQL 조인이 예상대로 작동하지 않습니다.

  8. 8

    정규식에서 문자열 대체가 예상대로 작동하지 않습니다.

  9. 9

    powerPC sizeof에서 구조체 배열에 대한 포인터를 증가 시키면 예상대로 작동하지 않습니다.

  10. 10

    FreeRTOS : 대기열이 예상대로 작동하지 않았습니다.

  11. 11

    Ant의 체크섬 작업이 예상대로 작동하지 않습니다.

  12. 12

    MaterialUI TextField : 배경색 변경이 예상대로 작동하지 않습니다.

  13. 13

    Ruby Shoes의 다차원 배열이 예상대로 작동하지 않습니다.

  14. 14

    Ruby Shoes의 다차원 배열이 예상대로 작동하지 않습니다.

  15. 15

    Java 분할 문자열이 예상대로 작동하지 않습니다.

  16. 16

    replaceAll이 문자열에서 예상대로 작동하지 않습니다.

  17. 17

    JS 문자열이 예상대로 작동하지 않습니다.

  18. 18

    JSX 조건부 렌더링이 예상대로 작동하지 않습니다.

  19. 19

    조건부 바인딩이 예상대로 작동하지 않습니다.

  20. 20

    Oracle 외부 조인이 예상대로 작동하지 않습니다.

  21. 21

    ksh93의 조판이 예상대로 작동하지 않습니다.

  22. 22

    mysql 오른쪽 조인이 예상대로 작동하지 않습니다.

  23. 23

    MySql 왼쪽 외부 조인이 예상대로 작동하지 않습니다.

  24. 24

    Linq의 Simple Left 조인이 예상대로 작동하지 않습니다.

  25. 25

    mySQL 쿼리 선택 / 조인이 예상대로 작동하지 않습니다.

  26. 26

    Javascript Promise 체인이 예상대로 작동하지 않습니다.

  27. 27

    Gradle API 구성이 예상대로 작동하지 않습니다.

  28. 28

    탁구 패들이 예상대로 작동하지 않습니다.

  29. 29

    Meteor 발행물 / 구독이 예상대로 작동하지 않습니다.

뜨겁다태그

보관