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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2011, 16:09   #11
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Именно С нужно
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 30.05.2011, 16:34   #12
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от a.n.o.n.i.m Посмотреть сообщение
добавил библиотеку #include <time.h> и строку srand(time(NULL)); перед строкой переменных,хотя сам не понял зачем добавил,но как бы работает но как то криво и хотелось бы узнать нельзя ли код "укоротить" а функционал оставить тем же,а то вроле программа простая а код слишком длинный +криво работает
Код:
srand(time(NULL));
засевает генератор (псевдо)случайных чисел; без этой строчки ты будешь получать одни и те же элементы массива при каждом выполнении программы.

Теперь -- что значит "криво работает"?
А насчет укоротить -- совмести две задачи. Ты сначала ищешь максимальное число в двойном цикле, а потом в почти идентичном цикле -- максимально длинную последовательность.
Кстати, только сейчас обратил внимание
Код:
for(int x2=2; x2<column; x2++)
Почему у тебя цикл начинается с 2?

И еще -- в конце программы надо бы освободить выделенную память.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 30.05.2011, 16:48   #13
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Цитата:
for(int x2=2; x2
исправил на нуль for(int x2=0; x2

Цитата:
криво работает
Она когда находит строку тоесть пишет номер строки 'число' я смотрю например вторая строка а там нет одинаковых чисел все разные,хотя программа пишет её,иногда пишет правильно там например 2 одинаковых числа

Цитата:
в конце программы надо бы освободить выделенную память
как это сделать

p.s обновил первый пост

Последний раз редактировалось a.n.o.n.i.m; 30.05.2011 в 17:06.
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 30.05.2011, 17:06   #14
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
исправил на нуль for(int x2=0; x2
не на 0, на 1. ты же сравниваешь с предыдущим элементом, поэтому цикл надо начинать не с 0-го, а с 1-го.
Цитата:
Она когда находит строку тоесть пишет номер строки 'число' я смотрю например вторая строка а там нет одинаковых чисел все разные,хотя программа пишет её,иногда пишет правильно там например 2 одинаковых числа
еще раз -- нумерация в С идет с 0, а не с 1, поэтому ты смотришь не на ту строчку.
Цитата:
как это сделать
при помощи free
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 30.05.2011, 17:18   #15
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

http://s50.radikal.ru/i130/1105/c4/43de22a9da89.jpg пишет 7 строку хотя там нет одинаковых элементов

Mandrivnyk можешь полностью код поправить и выложить сюда,а то частями что то не получается правильной работы программы.Первый пост изменил
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 30.05.2011, 18:10   #16
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
http://s50.radikal.ru/i130/1105/c4/43de22a9da89.jpg пишет 7 строку хотя там нет одинаковых элементов
7-я строчка -- это для нас 8-я.
В С нумерация элементов массива идет с 0.
Короче, печатай не max_index, а max_index + 1
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 30.05.2011, 18:23   #17
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Цитата:
Короче, печатай не max_index, а max_index + 1
Код:
printf(" \nNomer stroki s samoi dlinnoi seriei odinakovih elementov:  %d",max_index+1);
Правильно??

Дак он теперь если ноль будет печатать первую строку,как раньше была проблема с нулем и в первой не будет одинаковых чисел.Корочче надо сделать так чтобы если номер строки 0 то программа пишет "Serii odinacovix elemenrov net".И еще в первой строке выходит если появятся два одинаковых числа или их не будет всеравно ответ один будет писать первую строку.Надо решить проблему с 1 строкой

Если действительно в первой строке есть одинаковые элементы то пишет "Nomer stroki s samoi dlinnoi seriei odinakovih elementov:1" а если нет одинаковых элементов то не пишет "Nomer stroki s samoi dlinnoi seriei odinakovih elementov:1" а пишет "Serii odinacovix elemenrov net" как это сделать?

Последний раз редактировалось a.n.o.n.i.m; 30.05.2011 в 18:42.
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 30.05.2011, 18:47   #18
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

using namespace std;

void fillArray(int **Array, int rows, int columns);
void showArray(int **Array, int rows, int columns);


int main()
{
    int rows, columns;
    printf("Введите количество строк:\n");
    scanf("%d", &rows);
    printf("Введите количество столбцов:\n");
    scanf("%d", &columns);

    int max_index = 0;
    int max, count, max_count, tmp;

    // Объявление массива с выделением памяти

    int **Array = (int**) malloc(rows * sizeof(int));
    for (int i = 0; i < rows; i++)
        Array[i] = (int*) malloc(columns * sizeof(int));

    fillArray(Array, rows, columns);
    showArray(Array, rows, columns);

    max_count = 1;
    max = Array[0][0];
    for (int i = 0; i < rows; i++)
    {
        count = 1;
        for (int j = 0; j < columns; j++)
        {
            if (max < Array[i][j])
                max = Array[i][j];
            if (j >= 1)
            {
                if (Array[i][j] == Array[i][j-1])
                    count++;
                else
                {
                    if (max_count < count)
                    {
                        max_count = count;
                        max_index = i;
                    }
                    count = 1;
                }
            }
        }
    }
    printf("Максимальное число -- %d\n", max);
    if (max_count > 1)
        printf("Максимальная последовательность из %d одинаковых чисел находится в строке %d\n", max_count, max_index + 1);
    else
        printf("Последовательности из одинаковых чисел нет\n");
                


    // Освобождение памяти
    for(int i = 0; i < rows; i++)
        free (Array[i]);
    free (Array);


    return 0;
}

void fillArray(int **Array, int rows, int columns)
{
    srand(time(NULL));
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < columns; j++)
            Array[i][j] = rand() % 3000;
}

void showArray(int **Array, int rows, int columns)
{
    printf("\nПолученная матрица:\n");
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < columns; j++)
            printf("%d\t", Array[i][j]);
        printf("\n");
    }
    printf("\n");
}
ЗЫ Благодарности принимаются на R269634919062 -)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062

Последний раз редактировалось Mandrivnyk; 31.05.2011 в 10:48.
Mandrivnyk вне форума Ответить с цитированием
Старый 30.05.2011, 18:53   #19
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

При запуске у тебя водишь количество строк и столбцов,показывает матрицу,а максимальное число и номер строки нет

Mandrivnyk все уже голова не варит,завтро попробую доделать

Последний раз редактировалось a.n.o.n.i.m; 30.05.2011 в 19:03.
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 30.05.2011, 19:09   #20
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
При запуске у тебя водишь количество строк и столбцов,показывает матрицу,а максимальное число и номер строки нет
Странно...
У меня все выводит
Изображения
Тип файла: jpg array1.jpg (35.2 Кб, 80 просмотров)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в коде xaero93 Помощь студентам 1 30.01.2011 15:08
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58
Ошибка в коде Maxim1 Общие вопросы C/C++ 1 31.05.2010 14:52
ошибка в коде Си Misha_M. Помощь студентам 2 05.02.2010 15:41
Ошибка в коде Bigtyoma Общие вопросы Delphi 9 10.06.2009 16:35