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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2012, 11:43   #1
Snake_k6
Новичок
Джуниор
 
Регистрация: 02.11.2012
Сообщений: 1
Радость не могу найти ошибку! прошу помочь!:)

вот исходник моей программы, не могу понять почему в 5 число преобразованной матрицы берется из неоткуда... и еще прошу помочь мне сделать функцию которая бы выполняла преобразование матрицы а не так как сделано у меня

вот исходник:


#include <stdlib.h>
#include "locale.h"
#include <time.h>
#define k 3
#define m 2
void result(int [][m], int, int)

int main()
{
setlocale(LC_CTYPE, "RUSSIAN");
int mat [k] [m], i, j, ans [k*m], g=0;
srand(time(NULL));

printf("\nЭта программа переписывает матрицу размера k*m в одномерный массив по столбцам!\n\n");

for(j=0; j<m; j++)

{
for(i=0; i<k; i++)

{
printf("%6d", mat[j] [i]=rand()%30);

}
printf("\n");
}
printf("\n\tНовый, одномерный массив.\n\n");

for (i=0;i<k;i++)
{
for (j=0;j<m;j++)
{
printf("%d ",ans[j]=mat[j][i]);
g++;
}
}
return 0;
}

P.S. Просто я новичек в этом, и много пропустил по учебе)
Snake_k6 вне форума Ответить с цитированием
Старый 02.11.2012, 12:02   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Вот это - неправильно:
Код:
ans[j]=mat[j][i]
Получается, что заполняются элементы от ans[0] до ans[m-1]. Правильная формула (если столбец - i=const) - ans[i*m+j].
Abstraction вне форума Ответить с цитированием
Старый 02.11.2012, 12:03   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
не могу понять почему в 5 число преобразованной матрицы берется из неоткуда...
Серьезно?

Код:
for(j=0; j<m; j++)

 {
 for(i=0; i<k; i++)

 {
 printf("%6d", mat[j] [i]=rand()%30);
У вас первый индекс какое ограничение имеет? А второй? Почему вы обращаетесь mat[j] [i], а не наоборот?
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритмы. Не прошу решить. Прошу помочь! pascaluser Паскаль, Turbo Pascal, PascalABC.NET 2 12.10.2012 08:45
Прошу помочь найти ошибку.Текст внутри BackSlash Помощь студентам 3 21.12.2009 12:13
Прошу найти ошибку в программе Ант@н Помощь студентам 0 22.11.2009 10:11
Не могу найти ошибку в программе. Прошу помощи Chaplen89 Общие вопросы Delphi 0 27.10.2009 17:31
Прошу помощи. Нада проверить правильность составления проги. И помочь исправить ошибку Ascor Общие вопросы C/C++ 4 03.06.2008 10:54