2016-08-22 2 views
-2

Я копирую программу, цель которой - генерировать и пузырь сортировать список случайных чисел. Это код:Домашнее задание-Подстрочное значение не является ни массивом, ни указателем, ни вектором

#include <stdio.h> 

    #define MAX 10 

    int a; 
    int rand_seed=10; 

    int rand() 
    { 
     rand_seed = rand_seed * 1103515245 + 12345; 
     return (unsigned int)(rand_seed/65536) % 32768; 
    } 

    void main() 
    { 
    int i,t,x,y; 

//fill array 
for (i = 0; i < MAX;i++) 
    { 
     a = rand(); 
     printf("%d\n",a); 
    } 
/* bubble sort the array */ 


    for (x = 0; x < MAX-1; x++) 
     for (y = 0; y < MAX -x - 1; y++) 
      if (a > a[y+1]) { 
      t = a; 
      a = a[y+1]; 
      a[y+1] = t; 
      } 


printf("----------------\n"); 
for(i = 0; i < MAX;i++) 
    printf("%d\n",a); 
    } 

Я знаю, что это оскорбительно, чтобы отправить все это здесь, но я не знаю, где проблема.

+1

Как вы знаете, есть проблема? Если это была ошибка компилятора, она должна была сказать вам, где именно проблема. Если он производит неправильные результаты, важная информация, подобная этой, должна быть включена в ваш вопрос. –

+0

переменная должна быть определена как массив, а не как int: int a [MAX]; – AnatolyS

ответ

0

Я считаю, что ваш компилятор уже имел наступательную линию. В коде

if (a > a[y+1]) 

вы пытаетесь использовать a как массив, в то время как он был определен как int, ранее

int a; 

Если вы хотите a быть массив, то есть определить его как массив и заполнить каждый участник, используя rand() или аналогичный.

0

Я уверен, вы хотели, чтобы a был массивом. В этом случае попробуйте это:

int a[10]; 

for (i = 0; i < MAX;i++) { 
    a[i] = rand(); 
    printf("%d\n",a[i]); 
} 

А также эта часть будет изменена на:

if (a[y] > a[y+1]) { 
    t = a[y]; 
    a[y] = a[y+1]; 
    a[y+1] = t; 
} 
Смежные вопросы

 Смежные вопросы