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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Время работы потока http://www.cyberforum.ru/cpp-beginners/thread135337.html
Вот есть такой код. Время работы потока выводит 0! Вроде все норм, а 0 выводит. Помогите люди умные) // OC_3.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <stdio.h> #include <windows.h> #include <iostream>
C++ Волны вокруг курсора Здравствуйте, мне нужно написать программу такого рода: Кликая по экрану, вокруг курсора должны появляться волны, подобно тому, как при броске камня в воду. Т.е. при каждом щелчке мыши, вокруг курсора должны появляться круги, постепенно расширяющиеся. Был бы рад, если б вы помогли, хотя бы частично в написании программы. Или же если видели готовые подобные программы, поделись пожалуйста ссылочкой... http://www.cyberforum.ru/cpp-beginners/thread135331.html
C++ Массив с++ (удаление простых чисел)
Нужно написать програмку : Задан массив Z(k) целых чисел. Записать все элементы массива Z в массив Y, записав числа в обратном порядке (например, 1234 запишется как 4321). Удалить из массива Z все простые числа. Сравнить максимальные и минимальные элементы массивов. :) В крайнем случае хотябы помогите с простыми числами...Заранее спасибо.
Вычислить количество цифр в заданной строке C++
Добрий день товарищи!!! Помогите написать програму... Написать программу, которая вычисляет количество цифр в заданной строке.
C++ с++ цикли http://www.cyberforum.ru/cpp-beginners/thread135304.html
Помогите решить зачаски буду очень благодарен я уверен есть ище добрие люди( Задача 3. Найти первых 10 натуральных чисел, нацело делятся на 19 и находятся в интервале, левая граница которого 100. Завдання 4. Дано натуральные m, n. Получить сумму m последних цифр числа n.
C++ Одномерные масивы Приветик у меня проблемка помогите плиз решить прошку В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, у1, х2, у2, x3, y3 и т.д. Определить кольцо с центром в начале координат, которое содержит все точки. подробнее

Показать сообщение отдельно
n_zheka
0 / 0 / 0
Регистрация: 25.05.2010
Сообщений: 19
26.05.2010, 11:46  [ТС]     В прямоугольной матрице подсчитать количество столбцов, содержащих отрицательные элементы.
Спасибо огромное, а не могли бы вы адаптировать этот код под существующий код, в существующем задание звучит так:
В прямоугольной матрице найти номера столбцов, содержащих соответственно максимальное и минимальное количество отрицательных элементов, после чего обменять их местами. Учесть частныеслучаи (в матрице нет отрицательных элементов; лишь один столбец матрицы содержит такие элементы; лишь два столбца содержат отрицательные элементы, но их количество одинаково).
А сделать под мое задание В прямоугольной матрице подсчитать количество столбцов, содержащих отрицательные элементы.
Образец кода:
помогите в нем убрать лишние строки кода и переменные, ввод оставить такой как в образце, а вывод и задание подогнать под моё
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#include<stdio.h> /*Модуль функций стандартного ввода-вывода*/
#include<process.h>
#include<bios.h>
#include<alloc.h>/*Модуль функций работы с динамической памятью*/
#include<conio.h> /*Модуль функций расширения ввода-вывода(в Паскале
                    аналогичный модуль CRT)*/
/*Предварительное описание используемых в программе функций*/
 void inputmatr(float x[][20],int *m,int *n,char c);
 void outputmatr(float x[][20],int m,int n);
 float max_el(float *x,int m,int n,int *ng[20]);
 int *num_neg(float x[][20],int m,int n);
/*************************************************************************/
/*Главная программа(функция) включает вызовы функций ввода, вывода и
  обработки матрицы*/
 
 void main()
  {
   float x[20][20];
   int  mx,nx,my,ny;
   /*Матрица Х располагается в стеке, для матрицы А место выделяется
     в куче. Обработка матриц выполняется общими процедурами*/
   clrscr();
   remove("rez.dat");/*удаление файла результатов, если он имеется в текущем
   директории*/
   inputmatr(x,&mx,&nx,'x');
   clrscr();
   printf("Вывод результатов обработки матрицы х\n");
   outputmatr(x,mx,nx);
   printf("\n\n         Для выхода нажмите любую клавишу ");
   getch();/*Ввод символа с клавиатуры без эха на экране. */
  }
 
 
/***************************************************************/
/*Функция возврвщает указательна массив, содержащий количество отри-
  цательных элементов для каждого столбца матрицы*/
/*В функцию передается матрица как двумерный массив. Элементы матрицы
  обрабатываются с использованием индексных выражений*/
 int *num_neg(float x[][20],int m,int n)
  {
   int *ng=(int*)malloc(n*sizeof(int));/*Выделение динамической памяти
    под массив счетчиков отрицательных элементов*/
   int i,j;
   for(j=0;j<n;j++)/*Цикл по столбцам*/
    {
     ng[j]=0; /*Сброс счетчика*/
     for(i=0;i<m;i++)/*Цикл по строкам*/
      if(x[i][j]<0) /*Если число меньше нуля, то инкрементируем счетчик*/
       ng[j]++;
     }
   return ng;
  }
/*Функция меняет местами столбцы с максимальным и минимальным количеством отрицатель-
ных элементов,  после чего  меняет их местами*/
/*В функцию передается указатель на матрицу, поэтому матрица обрабатывается
  как одномерный массив с использованием индексных выражений*/
 float max_el(float *x,int m,int n,int *ng[20])
  {
   max=min=0;
    else
      if (ng[min]==0&&ng[j]!=0)
    min=j;
 
   }
   if((min!=max)&&(ng[min]!=0)&&(ng[max]!=0))
   {
    for(i=0;i<m;i++)
     {
      t=x[i*20+min];
      x[i*20+min]=x[i*20+max];
      x[i*20+max]=t;
     }
   }   float t;
   int i,j,max,min;
   max=min=0; /*Минимальным и максимальным считаем первый элемент*/
   for(j=1;j<n;j++)/*Цикл поиска минимума и максимума*/
   {
    if (ng[j]>ng[max])/*Если текущий элемент больше элемента с индексом max*/
      max=j; /*В max запоминаем текущую позицию*/
    if (ng[j]<ng[min]&&ng[j]!=0)
      min=j; /*В min запоминаем текущую позицию*/
    else
      if (ng[min]==0&&ng[j]!=0)
      min=j; /*В min запоминаем текущую позицию*/
   }
   if((min!=max)&&(ng[min]!=0)&&(ng[max]!=0)) /*Проверка частных случаев*/
   /*Номера столбцов не совпадают и есть минимальное число элементов и есть максимальное число элементов*/
   {
    for(i=0;i<m;i++)/*Цикл перестановки элементов чеерез 3-ю переменную*/
     {
      t=x[i*20+min];
      x[i*20+min]=x[i*20+max];
      x[i*20+max]=t;
     }
   }
   return max;
  }
/***************************************************************************/
/*Функция обеспечивает вывод результатов программы на экран или в файл*/
/*В функцию передается матрица как двумерный массив. Элементы матрицы
  обрабатываются с использованием индексных выражений*/
 void outputmatr(float x[][20],int m,int n)
  {int i,p,j,imax,jmax,*kol_min;
   FILE *f;
   printf("\n Вывод матрицы на экран<s> или в файл<f>?\n\n");
   if(((p=getch())=='f')||(p=='F')||(p=='а')||(p=='А'))
    {
     p='f';/*Переменная запоминает направление вывода*/
     if((f=fopen("rez.dat","at"))==NULL)/*Открытие файла в текстовом режиме
       для записи в конец файла*/
      {
       printf("Невозможно открыть файл для результатов\n"
       " Для выхода в DOS нажмите любую клавишу\n");
       getch();
       exit(0);
      }
    }
     else f=stdout;
   fprintf(f,"\tИсходная матрица x\n");
   for(i=0;i<m;i++)
    {
     for(j=0;j<n;j++)
      fprintf(f,"%8.2f",x[i][j]);
     fprintf(f,"\n");
    }
   kol_min=num_neg(x,m,n);
   fprintf(f,"количество отрицательных элементов в столбцах матрицы\n");
   for(j=0;j<n;j++)
      fprintf(f,"%8d",kol_min[j]);
   fprintf(f,"\n");
   max_el((float *)x,m,n,kol_min);
   fprintf(f,"\tПреобразованная матрица x\n");
   for(i=0;i<m;i++)
    {
     for(j=0;j<n;j++)
      fprintf(f,"%8.2f",x[i][j]);
     fprintf(f,"\n");
    }
   if(p=='f')fclose(f);
  }
/***********************************************************************/
/*Функция вводит исходные данные с клавиатуры или из файла*/
/*В функцию передается матрица как двумерный массив. Элементы матрицы
  обрабатываются с использованием индексных выражений*/
 void inputmatr(float x[][20],int *m,int *n,char c)
  {
   float xr;
   int  i,j,pr,ch;
   FILE *f; char p;
   clrscr();
   printf("Ввод размеров и элементов матрицы %c\n",c);
   printf("\n\n      Введите размеры матрицы m,n<=20\n ");
   /*Перед вводом с клавиатуры целесообразно очистить системный
     буфер клавиатуры*/
   /*while ((ch=scanf("%c",ch))!=0);getch()
     {ch=bioskey(0);
      putch(ch);
     }*/
   scanf("%d%d",m,n);
   printf(" Ввод матрицы с клавиатуры<k> или из файла<f>?\n");
   if(((p=getch())=='f')||(p=='F')||(p=='а')||(p=='А'))
    {
     p='f';
     if((f=fopen("matr.dat","rt"))==NULL)
      {
       printf("Исходный файл не найден\n Для выхода в DOS нажмите "
               "любую клавишу");
       getch();
       exit(0);
      }
    }
     else f=stdin;
   if(p!='f')printf("Введите элементы матрицы\n");
   for(i=0;i<*m;i++)
    for(j=0;j<*n;j++)
     {
      pr=fscanf(f,"%f",&xr);
      if(pr<=0)
       {
        if(pr==EOF)
         printf("Обнаружен конец файла\n");
        else
         printf("Ошибка чтения %s \n",(p=='f')?"из файла":"с клавиатуры");
        printf("Для выхода в DOS нажмите любую клавишу");
        getch();
        exit(0);
       }
      else x[i][j]=xr;
     }
   if(p=='f')fclose(f);
  }
 
Текущее время: 10:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru