Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сумма элементов столбца, тупняк 
:(
    Опции темы
Vicipi
  Дата 24.5.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 13.2.2008

Репутация: нет
Всего: нет



Легкая задачка не получается:
Дан двумерный массив N*M чисел. Выведите в строку тот столбец двумерного массива, чья сумма элементов максимальна. 

Входные данные: В первой строке числа N и M через пробел. Далее - двумерный массив N*M. Все числа во входе положительные и не превосходят 101. 

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

Пример входных данных 
2 3 
1 8 3 
4 1 6 

Пример выходных данных 
8 1 
вот че написала, почему не работает?
Код

int main(int argc, char* argv[])
{
 int N,M,u,i,mas[101][101]={0},sum=0,k=0,st;
 scanf("%d %d",&N,&M);
 for( u=0;u<N;u++)
{for( i=0;i<M;i++)
  scanf("%d",&mas[u][i]);
  }
 for( u=0;u<N;u++)
{sum=0;
for(i=0;i<M;i++)
 sum =+mas[i][u];
  if(sum>k){k==sum;st=u;}

   }
    for(i=0;i<N;i++)
    printf("%d ",mas[i][st]);
 getch();
        return 0;
}



PM MAIL   Вверх
rrrFer
Дата 24.5.2008, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



Vicipi 
ошибки:
1) if(sum>k){k==sum;st=u;}

2) sum =+mas[i][j];
так работает:
Код

#include <stdio.h>
#include <stdlib.h> //для system("pause");
int main(int argc, char* argv[]){
    int N,M,j,i,mas[101][101],sum=0,max,st;
    scanf("%d %d",&N,&M);
    for(j=0;j<N;j++)
            for(i=0;i<M;i++)
                scanf("%d",&mas[j][i]);
    for(j=0,printf("\n");j<N;j++)
            for(i=0,printf("\n");i<M;i++)
                printf("%d",mas[j][i]);
    for(j=0,max=0;j<N;j++){
        sum=0;
        for(i=0;i<M;i++)
            sum+=mas[i][j];
        if(sum>max){
            max=sum;
            st=j;
        }
    }
    for(i=0,printf("\n");i<N;i++)
        printf("%d ",mas[i][st]);
    system("pause");
    return 0;
}

однако если сумма положительная, для отрицательной надо модифицировать немного...

Это сообщение отредактировал(а) rrrFer - 24.5.2008, 18:40
PM MAIL WWW ICQ   Вверх
Vicipi
Дата 24.5.2008, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 13.2.2008

Репутация: нет
Всего: нет



а почему для отрицательных не подходит?
PM MAIL   Вверх
rrrFer
Дата 24.5.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



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

if(sum>max){
            max=sum;
            st=j;
        }

потому что max=0;
чтобы это исправить я бы что-нибудь такое написал:
Код

    bool fl;
    for(j=0,max=0,fl=0;j<N;j++){
        sum=0;
        for(i=0;i<M;i++)
            sum+=mas[i][j];
        if(fl==0||sum>max){
            max=sum;
            fl=1;
            st=j;
        }
    }

PM MAIL WWW ICQ   Вверх
Vicipi
Дата 25.5.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 13.2.2008

Репутация: нет
Всего: нет



эта задача с contester.tsure.ru, при тестировании: неверный ответ на тесте 3. Что то не учтено...я не знаю что не так
PM MAIL   Вверх
rrrFer
Дата 26.5.2008, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



Vicipi, 
я просто рпавил твою программу, а вот сейчас посмотрел на условие:
Цитата

Входные данные: В первой строке числа N и M через пробел. Далее - двумерный массив N*M. Все числа во входе положительные и не превосходят 101. 

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

входные данные - это выходит файл, а не с клавы надо размер массива вводить.
массив может быть любого размера, т.е. ошибка возможно в :
Код

mas[101][101];

ну и выводить то надо тоже наверно в файл
тогда вот так:
Код

#include <stdio.h>
int main(int argc, char* argv[]){
    int N,M,j,i,**mas,sum=0,max,st;
    bool fl;
    FILE *f=fopen("in.txt","r");
    fscanf(f,"%d %d",&N,&M);
    mas=new int*[N];
    for(j=0;j<N;j++){
        mas[j]=new int[M];
            for(i=0;i<M;i++)
                fscanf(f,"%d",&mas[j][i]);
    }fclose(f);
    for(j=0,max=0,fl=0;j<N;j++){
        sum=0;
        for(i=0;i<M;i++)
            sum+=mas[i][j];
        if(sum>max||fl==0){
            max=sum;
            st=j; fl=1;
        }
    }
    for(i=0,fopen("out.txt","w"),printf("\n");i<N;i++)
       fprintf(f,"%d ",mas[i][st]);
    return 0;
}

а если учесть вот это:
Цитата

Все числа во входе положительные и не превосходят 101

то сумма не может быть отрицательной, и возможно надо сделать проверку чтоб числа не превосходили 101, но я думаю это не твоя уже задача

Это сообщение отредактировал(а) rrrFer - 26.5.2008, 06:24
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.