Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
igor.
Сообщений: n/a
#1

Помогите с лабой! - C++

09.01.2008, 02:13. Просмотров 1188. Ответов 2
Метки нет (Все метки)

В Си нужно из файла вызвать матрицу. В этой матрицы найти все ненулевые элементы и написать все значения и индексы этих значений..
Вот код..ток там чтот не так..посмотрите пожалуйста!!!

Код
#include<stdio.h>
#include<alloc.h>
matrica(int **a, int *b, int *c, int m, int n, int i, int j, int *k)
{
for(i=0;i<m;i++)
 for(j=0;j<n;j++)
  if(a[i][j]!=0)
   {
    b[*k]=a[i][j];
    c[*k]=(i*n)+j;
    (*k)++;
   }
}
main()
{
int **a, *b, *c, m, n, i, j, k;
FILE *in;
if((in=fopen("1.txt","r"))==NULL)
{
printf("\n net faila"); exit(1);
}
fscanf(in, "%d%d",&m,&n);
k=m*n/2;
 a=(int**)malloc(m*sizeof(int*));
  for(i=0;i<m;i++)
   a[i]=(int*)malloc(n*sizeof(int));
  b=(int*)malloc(k*sizeof(int));
  c=(int*)malloc(k*sizeof(int));
for(i=0;i<m;i++)
 for(j=0;j<n;j++)
  fscanf(in,"%d",&a[i][j]);
matrica(a,b,c,m,n,i,j,&k);
 {
  printf("\n OTVET \n");
  printf("Element  Indeks");
 for(i=0;i<k;i++)
  printf("\n %d         %d",b[i],c[i]);
 }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2008, 02:13     Помогите с лабой!
Посмотрите здесь:

Помогите с лабой - C++
Помогите с лабой: Задание : Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором...

Помогите справиться с лабой по массивам) - C++
Задан массив из k чисел. Определить количество инверсий в массиве (т. е. таких пар элементов, в которых большее число находится слева от...

хэлп с лабой) - C++
1. В файле в каждой строке заменить ту комбинацию из трех символов, которая чаще всех встречается в строке, на символ '&amp;'. 2. В...

C++ и бинарные файлы(непонятки с лабой) - C++
Здравствуйте. Можно вопрос по С++ и бинарным файла. есть такой кусок задания &quot;Слова в двоичном файле хранятся в массивах ...

Кто может помочь с Лабой на С++,я не могу написать(( - C++
Тема Операторы ВЫбора вариант 4. Для целого числа k от 1 до 99 напечатать фразу «мне k лет», учитывая при этом, что при некоторых...

Кто нибуть помогите пожалуйста с лабой никак не могу сделать... - QBasic
Вывести на печать, используя функции SPACE и STRING в цикле: # * * * * * # # * * * * # # # * * * # # # # * * # # # # # *

подскажите девушке с лабой) - VBA
Помогите пожалуйста,а то я не поняла по методичке как делать лабу) . Написать программу,осуществляющую заданные вычисления с использованием...

Проблемы с лабой по Object Pascal - Delphi
На форме 1 кнопка,1 надпись,1 едит и 1 мемо.Вводится строка из нескольких слов и чисел,разделенных неопределенным числом пробелов.Выбрать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vadim55
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 6
09.01.2008, 10:18     Помогите с лабой! #2
что то здесь все поставлено с ног на голову
если вы сами писали этот код напишите комментарии к каждой части программы что она делает , только после этого я смогу Вам помочь.
Lord_Voodoo
Супер-модератор
8580 / 2180 / 61
Регистрация: 07.03.2007
Сообщений: 10,864
Завершенные тесты: 1
09.01.2008, 10:25     Помогите с лабой! #3
твой код не осилил, сделал так:
Код
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
void matrica(int *a, int *b, int *c, int n, int &k)
{
  for(int i = 0;i < n;i++)
      if(a[i] != 0){
        b[k] = a[i];
        c[k] = i;
        k++;
      }
};
int main()
{
int *a, *b, *c, m = 0, k = 0;
FILE *in;
if((in=fopen("1.txt","r"))==NULL)
{
printf("\n net faila"); exit(1);
}
while(fscanf(in, "%d") != EOF) m++;
a = (int*)malloc(m*sizeof(int));
b = (int*)malloc(m*sizeof(int));
c = (int*)malloc(m*sizeof(int));
for(int i = 0; i < m; i++){
  b[i] = 0;
  c[i] = 0;
}
rewind(in);
for(int i = 0;i < m;i++) fscanf(in,"%d", &a[i]);
matrica(a, b, c, m, k);
std::cout<<"Value: "<<std::endl;
for(int i = 0;i < k;i++)
  std::cout<<b[i]<<" ";
std::cout<<std::endl;
std::cout<<"Index: "<<std::endl;
for(int i = 0;i < k;i++)
  std::cout<<c[i]<<" ";
std::cout<<std::endl;
return 0;
}
Yandex
Объявления
09.01.2008, 10:25     Помогите с лабой!
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru