Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2013, 13:10   #1
Siel
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 14
По умолчанию C++ массивы

Всем привет,просьба помочь разобраться
задали 2 програмки написать
писал без среды,а на экзамене попросили запустить в коделайте
вот 1 задача:
В целочисленном векторе vectorn найти минимальный и максимальный элементы. Преду-смотреть случай, когда таких элементов нет (все элементы вектора равны между собой). Перевернуть элементы вектора, расположенные между ними (выполнить “поплавок”).
Код:
Код:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
void main(){
int min, max, min_index, max_index;

printf("\nВведите нижнюю границу диапазона:");                                                                 
scanf("%d", &min);
getchar();
printf("\nВведите верхнюю границу диапазона:"); 
scanf("%d", &max);
getchar();
    const int size = 10;
    int arr[size];
    srand ( time(NULL) );
    for (int i = 0; i < size; i++){
        arr[i] = rand()%(max - min + 1) + min;
        printf("%d, ", arr[i]);
    }
    printf("\r\n");
    min = arr[0];
    max = arr[0];
    min_index = 0;
    max_index = 0;
    for (int i = 1; i < size; i++){
        if (arr[i] < min) {
            min = arr[i];
            min_index = i;
        }
        if (arr[i] >= max) {
            max = arr[i];
            max_index = i;
        }
    }
    if (min == max) exit(0);
    int start, end;
    if (min_index > max_index) {
        start = max_index;
        end = min_index;
    } else {
        start = min_index;
        end = max_index;
    }
    int res_arr[size];
    for (int i = 0; i <= start; i++)
        res_arr[i] = arr[i];
    for (int i = 1; i <= end - start; i++)
        res_arr[start + i] = arr[end - i];
    for (int i = end; i < size; i++)
        res_arr[i] = arr[i];
    for (int i = 0; i < size; i++)
        printf("%d, ", res_arr[i]);
    getchar();
}
выдаёт вот такую гадость: http://s020.radikal.ru/i721/1303/5a/fc36d533ee73.jpg
при запуске выдаёт окно с просьбой нажать чонить для продолжения(на англ)после чего сразу всё закрывает
и вторая задача:
В целочисленном массиве matrixnn поменять местами (отразить зеркально) соответст-вующие элементы, расположенные выше главной и побочной диагоналей и ниже их. Элементы диагоналей не трогать

Код:
Код:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
void main(){
    int min, max, min_index, max_index;
printf("\nВведите нижнюю границу диапазона:");
scanf("%d", &min);
 getchar();
printf("\nВведите верхнюю границу диапазона:"); 
    scanf("%d", &max);
    getchar();
    const int size = 5;
    int arr[size][size];
    srand ( time(NULL) );
    for (int i = 0; i < size; i++){
        for (int j = 0; j < size; j++) {
            arr[i][j] = rand()%(max - min + 1) + min;
            printf("%d, ", arr[i][j]);
        }
        printf("\r\n");
    }
    printf("\r\n");
    for (int i = 0; i < size; i++) {
        int j = 0;
        while (j < i && j < size - i - 1) {
            int buf = arr[j][i];
            arr[j][i] = arr[size - j - 1][i];
            arr[size - j - 1][i] = buf;
            j++;
        }
    }
    for (int i = 0; i < size; i++){
        for (int j = 0; j < size; j++) {
            printf("%d, ", arr[i][j]);
        }
        printf("\r\n");
    }
    printf("\r\n");
    getchar();
}
выдаёт примерно тоже самое,помогите скомпилить это дело под коделайт версии как на скриншоте,заранее благодарен

Последний раз редактировалось Siel; 04.03.2013 в 13:25.
Siel вне форума Ответить с цитированием
Старый 04.03.2013, 13:23   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

0) Программный код оформляется тегом форума CODE.

1)
Цитата:
выдаёт вот такую гадость: http://s020.radikal.ru/i721/1303/5a/fc36d533ee73.jpg
C (в отличие от C++), вообще говоря, не позволяет объявлять переменные внутри цикла for или иных подобных конструкций.
Abstraction вне форума Ответить с цитированием
Старый 04.03.2013, 13:29   #3
Siel
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 14
По умолчанию

да я уже сделал правку,забыл про теги,т.е мне нужно все переменные из циклов фор вывести наверх где объявлялись другие переменные?
Siel вне форума Ответить с цитированием
Старый 04.03.2013, 13:33   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ну, не все - одной i хватит (во втором примере - i и j).
Abstraction вне форума Ответить с цитированием
Старый 04.03.2013, 13:41   #5
Siel
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 14
По умолчанию

объявил i с остальными переменными,те же ошибки пишет(
не могли бы вы подкорректировать код именно под коделайт?разумеется не за просто так Skype для связи dm_devil91
Siel вне форума Ответить с цитированием
Старый 04.03.2013, 14:10   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
объявил i с остальными переменными,те же ошибки пишет(
???
То есть, код имеет вид
Код:
void main(){
    int min, max, min_index, max_index;
    int i;

//...
    srand ( time(NULL) );
    for (i = 0; i < size; i++){
    //...
- и по-прежнему те же ошибки? Тогда Build -> Clean All, Build -> Rebuild All (или как оно там в CodeLite).
Abstraction вне форума Ответить с цитированием
Старый 04.03.2013, 14:18   #7
Siel
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 14
По умолчанию

да,ребилд\клеан не помог
C:/Program Files/CodeLite/ll/main.c: In function 'main':
C:/Program Files/CodeLite/ll/main.c:8: error: redeclaration of 'i' with no linkage
C:/Program Files/CodeLite/ll/main.c:7: note: previous declaration of 'i' was here
C:/Program Files/CodeLite/ll/main.c:19: error: redeclaration of 'i' with no linkage
C:/Program Files/CodeLite/ll/main.c:8: note: previous declaration of 'i' was here
C:/Program Files/CodeLite/ll/main.c:19: error: 'for' loop initial declarations are only allowed in C99 mode
C:/Program Files/CodeLite/ll/main.c:19: note: use option -std=c99 or -std=gnu99 to compile your code
C:/Program Files/CodeLite/ll/main.c:30: error: redefinition of 'i'
C:/Program Files/CodeLite/ll/main.c:19: note: previous definition of 'i' was here
C:/Program Files/CodeLite/ll/main.c:30: error: 'for' loop initial declarations are only allowed in C99 mode
C:/Program Files/CodeLite/ll/main.c:56: error: redefinition of 'i'
C:/Program Files/CodeLite/ll/main.c:30: note: previous definition of 'i' was here
C:/Program Files/CodeLite/ll/main.c:56: error: 'for' loop initial declarations are only allowed in C99 mode
C:/Program Files/CodeLite/ll/main.c:59: error: redefinition of 'i'
C:/Program Files/CodeLite/ll/main.c:56: note: previous definition of 'i' was here
C:/Program Files/CodeLite/ll/main.c:59: error: 'for' loop initial declarations are only allowed in C99 mode
C:/Program Files/CodeLite/ll/main.c:62: error: redefinition of 'i'
C:/Program Files/CodeLite/ll/main.c:59: note: previous definition of 'i' was here
C:/Program Files/CodeLite/ll/main.c:62: error: 'for' loop initial declarations are only allowed in C99 mode
C:/Program Files/CodeLite/ll/main.c:65: error: redefinition of 'i'
C:/Program Files/CodeLite/ll/main.c:62: note: previous definition of 'i' was here
C:/Program Files/CodeLite/ll/main.c:65: error: 'for' loop initial declarations are only allowed in C99 mode
mingw32-make.exe: *** [Debug/main.o] Error 1
----------Build Ended----------
13 errors, 0 warnings
полный список эроров i объявлял как в прошлом посте отдельно (
Siel вне форума Ответить с цитированием
Старый 04.03.2013, 14:29   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
C:/Program Files/CodeLite/ll/main.c:8: error: redeclaration of 'i' with no linkage
C:/Program Files/CodeLite/ll/main.c:7: note: previous declaration of 'i' was here
Можно строки 7 и 8? Либо всё-таки у Вас что-то не так, либо у среды поехала крыша (попробуйте перезапустить, что ли).
Abstraction вне форума Ответить с цитированием
Старый 04.03.2013, 14:44   #9
Siel
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 14
По умолчанию

Код:
void main(){
7    int min, max, min_index, max_index, i;
8    int  i;
вот 7 и 8,перезапускал много раз,можете посоветовать среду в которой код будет рабочим?ибо у меня тоже подозрения что среда лагает

Последний раз редактировалось Siel; 04.03.2013 в 14:46.
Siel вне форума Ответить с цитированием
Старый 04.03.2013, 14:53   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Посмотрите последнюю переменную на строке 7 и первую на 8
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
Динамические массивы и массивы варианты N@stya Помощь студентам 0 11.06.2010 21:09
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12