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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] целочисленная прямоугольная матрица, помогите ПЛЗ срочно  
:(
    Опции темы
twise
Дата 18.1.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спс огромное люди просто проблема в том(только что показывал преподу исходник) в визуале(у нас) 2005 нету заголовкков типа иострим.h iostrem он просто с ними не работает можно как нить избавиться от них?
PM MAIL   Вверх
onsql
Дата 18.1.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нет ни <iostream> ни <iostream.h> ? А тебе на каком языке вообще надо то? На Си или на Си++?
PM MAIL   Вверх
codelord
Дата 18.1.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



Цитата(twise @  18.1.2008,  10:10 Найти цитируемый пост)
спс огромное люди просто проблема в том(только что показывал преподу исходник) в визуале(у нас) 2005 нету заголовкков типа иострим.h iostrem он просто с ними не работает можно как нить избавиться от них? 

в стандартном c++ должны быть можешь 
попробавть 
#include <stdio.h>
и вместо 
cout <<
юзать printf
вместо 
cin >> 
scanf



--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
onsql
Дата 18.1.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот без iostream
Код

#include "stdafx.h"
#include <time.h>
#include <stdlib.h>
#include <stdio.h>

// Размерность матрицы
#define N 5

// Заполнение матрицы случайными числами в интервале от -10 до 9
void matr_random(int m[][N]) {
    int i, j;
    srand(time(0));
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
            m[i][j] = rand() % 20 - 10; // остаток деления случайного числа на 20 (чтобы получить сл. числа от 0 до 19)
}

// Ввод матрицы с экрана
void matr_input(int m[][N]) {
    int i, j;
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++) {
            printf("m[%d][%d]=", i, j);
            scanf("%d", &m[i][j]);
        }
}

// Вычисление характеристического значения строки матрицы
// numRow - номер строки.
int matr_chrs(int m[][N], int numRow) {
    int i;
    int chrs = 0;
    for (i = 0; i < N; i++) {
        // Если элемент строки меньше 0 и четный (делится на 2 без остатка - (x % 2 == 0)) 
        // то суммируем с х.з. (характеристическим значением :)
        if ((m[numRow][i] < 0) && (m[numRow][i] % 2 == 0))
            chrs += m[numRow][i];
    }
    return chrs;
}

// Поиск столбца с нулевым элементом
int matr_find_zero(int m[][N]) {
    int i, j;
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++)
            // обратить внимание в отличие от остальных функций здесь j - номер строки, i - номер столбца
            if (! m[j][i])
                return i;
    }
    return -1;
}

// Поменять местами строки с номерами row1 и row2
void matr_swap_rows(int m[][N], int row1, int row2) {
    int i;
    int tmp;

    for (i = 0; i < N; i++) {
        // Меняются местами i-е элементы строк row1 и row2
        tmp = m[row1][i];
        m[row1][i] = m[row2][i];
        m[row2][i] = tmp;
    }
}

// Сортировка строк матрицы в порядке убывания характеристик строк. (классический пузырек)
void matr_sort_chrs(int m[][N]) {
    int i;
    int sorted;
    // В цикле меняются местами пары строк которые не удовлетворяют условию сортировки до тех пор,
    // пока таких не останется (матрица не будет отсортирована)
    do {
        sorted = 1; // Изначально предполагаем что матрица отсортирована.
        for (i = 0; i < N - 1; i++) {
            // Если характеристика строки i < характеристики строки i + 1
            // то это нарушения условия отсортированности матрицы по убыванию.
            if (matr_chrs(m, i) < matr_chrs(m, i + 1)) {
                // Меняем местами строки нарушающие условие сортировки 
                matr_swap_rows(m, i, i + 1);
                // и снова проверяем всю матрицу
                sorted = 0;
                break;
            }
        }
    } while (! sorted);// Пока матрица не отсортирована - сортировать :))
}


// Вывод матрици на экран. Если параметр print_chrs != 0 то для каждой строки выводится характеристика
void matr_print(int m[][N], int print_chrs = 0) {
    int i, j;
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++)
            printf("% 3d ", m[i][j]);
        if (print_chrs)
            printf(" | %d", matr_chrs(m, i));
        printf("\n");
    }
}


int _tmain(int argc, _TCHAR* argv[])
{
    int m[N][N];
    int colNum;

//    matr_random(m);
    matr_input(m);
    printf("input matrix:\n");
    matr_print(m);

    colNum = matr_find_zero(m);
    if (colNum >= 0)
        printf("First column with zero is: %d",  colNum + 1);
    else
        printf("Column with zero not found");

    matr_sort_chrs(m);
    printf("\noutput matrix:\n");
    matr_print(m, 1);
    // ждем пока не нажмут <ENTER>
    getchar();
    return 0;
}



Это сообщение отредактировал(а) onsql - 18.1.2008, 14:25
PM MAIL   Вверх
twise
Дата 18.1.2008, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



onsql блин спасибо заплюсадинил бы твою репутацию жаль ста постов нету огромное спасибо тебе
и всем кто помогал
PM MAIL   Вверх
twise
Дата 18.1.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



!! ПЛЗ onsql скажи как происходит Вычисление характеристического значения строки матрицы
тоесть есть к примеру строчка 1 2 0 -3 2
PM MAIL   Вверх
onsql
Дата 19.1.2008, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

onsql блин спасибо заплюсадинил бы твою репутацию жаль ста постов нету огромное спасибо тебе
и всем кто помогал

Да не за что. Парни вариантов накидали на любой вкус smile))

Цитата

!! ПЛЗ onsql скажи как происходит Вычисление характеристического значения строки матрицы
тоесть есть к примеру строчка 1 2 0 -3 2


для строки 1 2 0 -3 2 равно нулю, так как оно есть сумма отрицательных четных чисел. Тут отрицательное число токо -3 но оно нечентное (-3 % 2) = 1.

Вот например строка -6 2 -4 0 -3. берем цикл
Код

    int chrs = 0;
    for (i = 0; i < N; i++) {
        // Если элемент строки меньше 0 и четный (делится на 2 без остатка - (x % 2 == 0)) 
        // то суммируем с х.з. (характеристическим значением :)
        if ((m[numRow][i] < 0) && (m[numRow][i] % 2 == 0))
            chrs += m[numRow][i];
    }


И смотрим его по шагам
chrs =  0;   i = 0; m[numRow][0] = -6; (-6 < 0) - true; (-6 % 2 == 0) - true; chrs += -6;
chrs = -6;   i = 1; m[numRow][1] = 2; (2 < 0) - false;
chrs = -6;   i = 2; m[numRow][2] = -4; (-4 < 0) - true; (-4 % 2 == 0) - true; chrs += -4;
chrs = -10; i = 3; m[numRow][3] = 0; (0 < 0) - false;
chrs = -10;   i = 4; m[numRow][4] = -3; (-3 < 0) - true; (-3 % 2 == 0) - false;
chrs = -10;
Вот так оно и вычисляется...




Это сообщение отредактировал(а) onsql - 19.1.2008, 00:29
PM MAIL   Вверх
Dov
Дата 19.1.2008, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(twise @  18.1.2008,  18:24 Найти цитируемый пост)
onsql блин спасибо заплюсадинил бы твою репутацию жаль ста постов нету огромное спасибо тебеи всем кто помогал


Done. smile 



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
twise
Дата 21.1.2008, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



короче проблема в следующем мне сказали в универе что типа делать нада по вот этому исходнику и никак иначе
кто может помочь?
задание тоже
зарание сори за то что написано криво
Код

#include <stdafx.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

void main()
{
    time_t t;
    time(&t);
    FILE *f_in,*f_out;
    unsigned rows,cols,i,j;
    f_in=fopen("sel_mat.dat","r");
    f_out=fopen("sel_mat.rez","w");
    fprintf(f_out,"              %s",ctime(&t));
    fscanf(f_in,"%i%i",&rows,&cols);
    fprintf(f_out,"rows - %i  cols - %i\n",rows,cols);
    unsigned **pm=new unsigned *[rows];
    for (i=0;i<rows;i++)
    pm[i]=new unsigned [cols];
    for (i=0;i<rows;i++)
    for (j=0;j<cols;j++)
    fscanf(f_in,"%i",&pm[i][j]);
    fprintf(f_out,"m[][]\n");
    for (i=0;i<rows;i++)
    {
    for (j=0;j<cols;j++)
    fprintf(f_out,"%4d",pm[i][j]);
    fprintf(f_out,"\n");
    }
    long *sum=new long [rows];
    for (i=0;i<rows;i++)
    {
        sum[i]=0;
        for (j=0;j<cols;j++)
            sum[i]+=pm[i][j];
    }
    for (i=0;i<rows;i++)
    {
        fprintf(f_out," result sum=%4d\n",sum[i]);
        for (j=0;j<cols;j++)
            fprintf(f_out,"%4d",pm[i][j]);
        fprintf(f_out,"\n");
    }
    long temp_s;
    int nmin,temp_pm;
    for (i=0;i<rows-1;i++)
    {
        nmin=i;
        for (j=i+1;j<rows;j++)
            if (sum[j]<sum[nmin]) nmin=j;
        temp_s=sum[i];
        sum[i]=sum[nmin];
        sum[nmin]=temp_s;
        for (j=0;j<cols;j++)
        {
            temp_pm=pm[i][j];
            pm[i][j]=pm[nmin][j];
            pm[nmin][j]=temp_pm;
        }
    }
    fprintf(f_out,"out result\n");
    for (i=0;i<rows;i++)
    {
        for (j=0;j<cols;j++)
            fprintf(f_out,"%4d",pm[i][j]);
        fprintf(f_out,"\n");
    }
    fclose(f_in);
    fclose(f_out);
    time(NULL);
    for (i=0;i<rows;i++)
        delete []pm[i];
    delete []pm;
    delete sum;
    getch();
}


Исходные данные sel_mat.dat
2 8
-44 55 -12 0 94 18 06 -67
54 -12 0 94 -18 -06 67 44

тоесть rows =2 cols =8
m[][]
-44 55 -12 0 94 18 06 -67
54 -12 0 94 -18 -06 67 44

Это сообщение отредактировал(а) twise - 21.1.2008, 10:42
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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