IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Сортировка массива. Язык С., Microsoft Visual Studio .Net 2003
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской
Реальное имя: Никита

Репутация: -  0  +


Недавно стали проходить язык С, написал программу сортировки массива через указатели. Выдает ошибки:
1. g:\на си\sort_bubble\sort_bubble.cpp(13): error C2143: syntax error : missing ';' before '{'
2. g:\на си\sort_bubble\sort_bubble.cpp(12): error C2059: syntax error : '*'

Если убрать "*" то это уже получается не через указатели или как? Помогите пожалуйста.

Код

#include "stdafx.h"
#include "stdio.h"

void bubbleSort(int a[], int col)
{                    
    int b=0;                              
    for (int i=1;  i<col;  i++)
    {            
        for (int j=0;  j<col-i;  j++)
        {    
            if *(a+j)>*(a+j+1)
            {    
                b=*(a+j);          
                *(a+j)=*(a+j+1);    
                *(a+j+1)=b;
            }
        }
    }
}

void main()
{
    int i, j;
    printf ("<SORT ARRAY>\n");
    int a[5];
    i=0;
    while (i<5)
    {
        printf ("Enter %d element array\n",i);
        scanf ("%d",*(a+i));
        i++;    
    }
    
    i=0;
    printf ("ORIGINAL ARRAY ->\n");
    while (i<5)
    {
        printf("%d element = %d\n",i,*(a+i));
        i++;
    }
    
    bubbleSort( a, 5 );
    printf ("ARRAY AFTER SORT ->\n");
    for ( i = 0; i < 5; i ++ )
    {
        printf ("%d element = %d\n",i,*(a+i));
    }
    
}


Сообщение отредактировано: Bo2nik -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ты просто не взял в скобки все, что нужно:
if ((*(a+j))>(*(a+j+1)))
{
...
}


Добавлено через 1 мин.
P.S. Программа (если это именно C, а не С++) компилироваться не должна - описание переменных должно быть только ДО начала блока операторов, у тебя же локальные переменные описываются в операторе цикла...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской
Реальное имя: Никита

Репутация: -  0  +


Цитата(volvo @ 19.03.2008 16:00) *

Ты просто не взял в скобки все, что нужно:
if ((*(a+j))>(*(a+j+1)))
{
...
}


Добавлено через 1 мин.
P.S. Программа (если это именно C, а не С++) компилироваться не должна - описание переменных должно быть только ДО начала блока операторов, у тебя же локальные переменные описываются в операторе цикла...

Ээээ... точно чет, я, не посмотрел. Так скобки поставил теперь такая фигня вылезает:

Build log was saved at "file://g:\На Си\sort_bubble\Debug\BuildLog.htm"
sort_bubble - 0 error(s), 1 warning(s)

Когда запускаю программу, всё идет как надо, но после того как я веду первый элемент вылетает ошибка: "Отправлять - Не отправлять" и всё.

PS Когда я убирал "*" с условия if, т.е. обращался не через указатели, то всё нормально работало. Даже незнаю, что делать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
после того как я веду первый элемент вылетает ошибка:
Угу, все правильно...

Цитата
scanf ("%d",*(a+i)); /* Ну, и куда ты записываешь введенное значение? */

надо вот так:
scanf ("%d",(a+i));

потому что должен передаваться адрес переменной, а не значение...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской
Реальное имя: Никита

Репутация: -  0  +


Ух ты заработало !!! Даже сам не понял, че написал про этот scanf !!! Спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.01.2021 17:34
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name