Определить номер первого из столбцов матрицы, содержащих хотя бы один нулевой элемент - C (СИ)

  1. Задание:Дана целочисленная прямоугольная матрица. Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент. Программа должна содержать 2 функции: вывод массива, выполнение задания. Для выбора одной из двух функций организовать меню.Помогите разобраться с проблемой в коде, скорее всего где-то в кейсах накосячил.C1 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 #include "stdafx.h" #include <stdio.h> #include <iostream> #include <conio.h> #include <string.h>   const int  n = 3;   const int  m = 4;     void printm(mm[n][m]); int matrix(mm[n][m]);   void main()     {int i,j; int matrix[n][m]={3,4,5,0,6,5,3,2,1,3,6,4}; do {   printf ("\n1 - Печать матрицы, 2 - Поиск нулей\n");   scanf("%d",&comanda);    switch(comanda)      case 1: printm(mm);break;      case 2: printf(mm);break; } } while (comanda != 0);  }   void printm(int mm[n][m]) {int i,j; setlocal(LC_ALL,"Rus"); for (int i=0; i<n; i++) for (int j =0; j<m; j++)     printf("%d",mm[i][j]);     printf("\n"); }   int matrix(int mm[n][m]) {int s=0; int i,j; for (int i=0; i<n; i++) for (int j =0; j<m; j++)     if (mm[i][j]==0)         printf("\n В столбце номер %d обнаружен ноль",j); return 0; system("pause"); }


textual

Код к задаче: «Определить номер первого из столбцов матрицы, содержащих хотя бы один нулевой элемент - C (СИ)»

#include <stdio.h>
 
 
#define n 3
#define m 4
 
void printm(int mm[n][m]);
int matrix(int mm[n][m]);
 
int main(){
        int comanda;        
        int mat[n][m]={   {1,2,3,4},
                           {4,5,6,5},
                           {7,0,9,7} };                        
do {
  printf ("\n1 - Печать матрицы, 2 - Поиск нулей\n");
  scanf("%d",&comanda);
 
 switch(comanda){
     case 1: printm(mat);
             break;
     case 2: matrix(mat);
             break;
  };
 }   while (comanda != 0);
 return 0;
}
 
void printm(int mm[n][m]){
  int i,j;
  
  for (i=0; i<n; i++)
    for (j =0; j<m; j++)
      printf("%d ",mm[i][j]);
    printf("\n");
}
 
int matrix(int mm[n][m]){
  int i,j;
  
  for (i=0; i<n; i++)
    for (j=0; j<m; j++)
      if (mm[i][j]==0)
          printf("\n В столбце номер %d обнаружен ноль",j);
  return 0;
}

СДЕЛАЙТЕ РЕПОСТ

14   голосов, оценка 4.071 из 5



Похожие ответы
  1. Задана последовательность из N вещественных чисел. Определить сколько чисел меньше K, равно K и больше K. (массив random )

  1. Нужно задать строку из букв, цифр и так далее и сделать так, чтобы программа вывела на экран каких гласных букв нет в этой строке. Помогите либо начать, либо направьте где можно почитать про это, на форуме может кто видел подобные задания? Заранее спасибо!

  1. Помогите составить программу. Задание: создать программу, с помощью которой можно будет задавать строку символов с консоли и которая будет удалять имеющие нечетный номер символы. Что-то типо этого: C1 2 3 4 5 6 7 8 9 10 11 #include #include   Функция() {     Нахождение нечетных символов и их удаление } int main() {     Задание строки из символов }

  1. Помогите пожалуйста. Использовать стандартные функции и арифметические операторы; изучить операторы отношения и присваивания, логические операции, условный оператор и оператор-переключатель; научиться использовать в программах операторы цикла. Написать программы на изученные темы. Определить, сколько цифр содержит заданное целое число и имеются ли в нем повторяющиеся цифры.

  1. Решить эту задачу используя простейшие структуры данных Определить количество слов, у которых первый и последний симво-лы совпадают между собой.

  1. Ни как не могу доделать кусочек лабы , буду признателен за помощь ) Даны вещественные числа x , y . Определить принадлежит ли точка с координатами (x;y) заштрихованной плоскости. Картинка к задаче :

  1. Заполнить одномерный массив вводом с клавиатуры. Выяснить верно ли что сумма элементов массива есть чётное число.

  1. В теме книги обсуждались указатели, но у меня они употреблены номинально и можно было обойтись без них. Можно ли более простой способ для решения данной задачи найти с применением указателей?C1 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 #include   void sign(char *a);   int main(void) {     char ch;     while((ch = getchar()) != EOF)     {         sign(&ch);     } return 0; }   void sign(char *a) {       int i = 0;     char m[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";     int k[] = {1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26};     if(*a >= 'A' && *a <= 'Z' || *a >= 'a' && *a <='z')     {         while(*a != m[i])         {             ++i;         }         printf("%c - %d буква в алфавите\n", m[i], k[i]);       }     i = 0; }

  1. Написала программу, она компилируется, но не даёт результат (текстовые файлы я создала). Помогите, пожалуйста 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 #include #include #include FILE *f, *f1; int main() {int x, q=0,  sum=0; double l; f=fopen("D:\\TextFile", "rt"); f1=fopen("D:\\rez", "wt"); if(f == NULL)         {           printf("Problems");           system("pause");           return 1;         } if (fscanf(f,"%d",&x)>0)   {sum+=x; q+=1; l=sum/q; }     fprintf(f1," %3lf",l); fclose(f); fclose(f1);   return 0; }

  1. Подскажите как действовать. Ошибка появляется при записи во 2ой массив отрицательные эл-ты из 1го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 #include // подключение библиотек #include #include #include #include   #define BORDER_HIGH 100  // константы для рандома чисел #define BORDER_LOW -100     bool arrUnic(float *arr, int countValue, float value) // функция на проверку уникальности элементов {       for (int i = 0; i < countValue; i++)     {           if (arr[i] == value)             return false;     }     return true;   }   void main() {     setlocale(LC_ALL, "RUS");     float* arr; // первый массив     float* arr2 ; // второй массив, в который нужно записать отрицательные числа     int length; // кол-во эл-тов массива     int countValue = 0, otrel = 0;     short a;       printf("Введите кол-во эл-тов массива: ");     scanf_s("%d", &length);     arr = (float *)malloc(length * sizeof(float));         printf("Как заполнить массив? \n 1) с клавиатуры \n 2) рандомно \n 3)выйти \n ");     scanf_s("%hd", &a);       switch (a)     {     case 1:     {         printf("Заполните массив: \n");         for (int i = 0; i < length; i++)         {             float value;             scanf_s("%f", &value);             while (!arrUnic(arr, countValue, value))             {                 printf("Введите значение еще раз: ");                 scanf_s("%f", &value);             }             arr[i] = value;             countValue++;         }       }   break;       case 2: {         printf("Массив заполняется рандомно! \n");         srand((unsigned)(time(NULL)));           for (int i = 0; i < length; i++)         {             float value;             value = BORDER_LOW + (BORDER_HIGH - BORDER_LOW)*((float)rand() / RAND_MAX);             while (!arrUnic(arr, countValue, value))             {                 printf("Рандомим еще раз: ");                 value = BORDER_LOW + (BORDER_HIGH - BORDER_LOW)*((float)rand() / RAND_MAX);             }             arr[i] = value;             countValue++;           }       }; break;     case 3: exit(3); break;     default: break;     }       printf("Заполненный массив: \n");     for (int i = 0; i < length; i++)  // выводим массив первый, и одновременно подсчитываем кол-во отрицательных эл-тов, чтобы узнать, сколько памяти нужно выделить для 2го массива     {         if (arr[i] < 0)         {             otrel++;         }         printf("a[%d]=%.2f \n", i, arr[i]);     }       printf("\n\n \n");       arr2 = (float *)malloc(otrel * sizeof(float)); // выделение памяти для 2го массива           for (int i = 0; i < length; i++){ // ищем отрицательные эл-ты и записываем во 2ой массив ( тут как раз и непонятности  появляются )     if (arr[i] < 0)     arr2[i] = arr[i];   }                 printf("Кол-во отрицательных элеметов: %d \n", otrel);     printf("Массив В, в котором хранятся отрицательные элементы \n");       for (int y= 0; y< otrel;y++) // выводим 2ой массив из отрицательных чисел     {         printf("b[%d]=%.2f \n", y, arr2[y]);     }           delete arr;     delete arr2;       system("pause"); } На скриншоте видно, что записывается 1 эл-т, а остальные нет ( вместо них- мусор )