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

Уплотнить матрицу,удаляя из нее строки и столбцы, заполненные нулями.Найти номер первой из строк,содержащих хотя бы один положительный элемент - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка в деструкторе http://www.cyberforum.ru/cpp-beginners/thread753358.html
есть базовый абстрактный класс и есть производный от него: #ifndef EMPLOY_H #define EMPLOY_H class Employee { public: Employee(const char*, const char*); ~Employee();
C++ Правильное применение функций Есть задачка одна, студенческая, простая вроде, проблема лишь в том что к ней надо подключить функции, функции вроде понел как их создавать не могу только их правильно применять, просто дайте небольшое разъяснение. тут a = 3.8 ; b = -2.5 ; hx = 0.3 ; x-начальное =1.5 и x - конечное = 5.7; вроде всё. http://www.cyberforum.ru/cpp-beginners/thread753355.html
vc++ 6.0. Найти минимальный среди элементов, лежащих ниже главной диагонали C++
Ввести матрицу размером NxM. Память для массива выделить динамически. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат. Предусмотреть в программе использование функции пользователя.Найти минимальный среди элементов, лежащих ниже главной диагонали. #include <iostream.h> #include <iomanip.h> #include...
C++ Матрица порядка N (упростить/улучшить код)
Задание: Получить целочисленную квадратную матрицу порядка N 1 2 3 ... 3 2 1 0 1 2 ... 2 1 0 ... 0 1 2 ... 2 1 0 1 2 3 ... 3 2 1 Можно ведь проще сделать, посоветуйте пожалуйста. int A;
C++ Класс Прямая(Помогите реализовать построение прямой через 1 точку и параллельную ей прямую) http://www.cyberforum.ru/cpp-beginners/thread753317.html
Помогите дописать класс // Методы класса "Прямая" // ------------------------------------------------------------- // конструктор: прямая задается своими коэффициентами Line::Line(double a,double b,double c) { A=a; B=b; C=c; } // конструктор: прямая, которая проходит через две заданные точки
C++ Генерация программы Есть рабочая программа.Требуется в помощь в компиляции её в Visual Studio 2005 Происходит выход из программы без просмотра результатов.Заранее благодарю. // Гиперкуб.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <fstream> #include <string> подробнее

Показать сообщение отдельно
Андрей\
3 / 3 / 0
Регистрация: 13.12.2011
Сообщений: 22
05.01.2013, 17:27     Уплотнить матрицу,удаляя из нее строки и столбцы, заполненные нулями.Найти номер первой из строк,содержащих хотя бы один положительный элемент
Вот что получилось. Прошу не судить строго, так как писалось все давно. Если возникнут какие-то ошибки, пишите - поправлю.
P.S. Ах да, язык Си а не Си++, придется Вам самой немного исправлять...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
#include <malloc.h>
 
 
int write(void) //ввод размерности(защита аналогичная требуемой, но в упрощенном варианте): комментарии в основной 
{
char str[5];
const int L=2;
char c;
int i=0;
bool flag=0, flug=0;
while( (c=_getch())!=13)
    {
if (((c==43)||(c==45))&&(i==0)&&(flug!=1)) 
    {
printf("%c",c);
str[i]=c;
i++;
str[i]='\0';
flug=1;
    }
if ((c==48)&&(i<L)&&(flag!=1)&&(i!=0)) 
    {
printf("%c",c);
str[i]=c;
i++;
str[i]='\0';
    }
if (((c>=49)&&(c<=57))&&(i<L)&&(flag!=1)) 
    {
printf("%c",c);
str[i]=c;
i++;
str[i]='\0';
    }
if ((c==8)&&(i>0))
    {
printf("\b \b");
i--;
str[i]='\0';
    }
if ( ((atoi(str)> 8)||(atoi(str)< 2))&&(i>0)) 
    {
    flag=1; 
printf("\b \b");
i--;
str[i]='\0';}
else flag=0;
    }
return atoi(str);
    }
 
 
int pro(void)//защита
{
char str[5];
char c;
int i=0, flag=0;
int b;
 
while( (c=_getch())!=13)
{
 
if ((c==43)&&(i==0))//первый +
{
printf("%c",c);
str[i]=c;
i++;
str[i]='\0';
}
 
if ((c==45)&&(i==0))//первый -
{
printf("%c",c);
str[i]=c;
i++;
str[i]='\0';
}
 
 
if (((c>=48)&&(c<=57))&&(i<3)&&(flag!=1))//цифры 0-9
{
printf("%c",c);
str[i]=c;
i++;
str[i]='\0';
}
 
if ((c==8)&&(i>0))//backspace
{
printf("\b \b");
i--;
str[i]='\0';
}
 
    if ((atoi(str)>10)||(atoi(str)<(-10))|| ((atoi(str)==48)&&(i==1)))//если не в диапазоне, удаляй
     {
    flag=1; 
printf("\b \b");
i--;
str[i]='\0';
     }
else flag=0;
}
b=atoi(str);
return b;
}
 
 
int **matrix(int nrow, int ncol) //динамическое выделение памяти матрицы А 
{
        int  i;
        int **p;
 
        p = (int **) calloc(nrow , sizeof(int *));
                        
        for (i = 0; i < nrow; i++)
               p[i] =(int *) calloc(ncol , sizeof(int));   
        return p;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    int **A;//матрица, защиту которой необходимо обеспечить
    int m;
    do
        {
    printf("Введите размерность матрицы ");
    printf("\n m = ");
        m=write();
        }
while (m>8 || m<2);
 
    A=matrix(m, m);
    for(int i=0;i<m;i++)
        {
    for(int j=0;j<m;j++)
        {
        printf("\nВведите  A[%d][%d]:    ",i+1,j+1);//ввод элементов
        A[i][j]=pro();//ваша матрица
        }
        }
    printf("\n");
    for(int i=0;i<m;i++)
        {
    for(int j=0;j<m;j++)
        {
       printf(" %3.1d", A[i][j]);//выравнивание
        }
        printf("\n");
        }
 
    _getch();
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru