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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2019, 20:27   #1
Sci-SunLight
 
Регистрация: 05.05.2019
Сообщений: 3
По умолчанию Подскажите что нужно исправить для выполнения задачи в коде

Подскажите что мне нужно добавить к моему коду. Мне надо создать массив B(3),который состоит из сумм минимальных и максимальных элементов каждой строки в данном массиве А(3,3). Я написал код в котором оно почему-то считает сумму минимального и максимального элемента только последней строчки, и придаёт этот же результат другим строкам в массиве. Что мне нужно исправить чтобы оно считало сумму мин. и макс. элементов конкретно каждой строки в массиве?

Код:
#include<stdio.h>
#include<conio.h>
#include<math.h>
 int main()
{
 int A[3][3], min,max, i, j,S,k,x,B[3];
 clrscr();
 printf("Enter array:\n");
 for (i = 0; i <3; i++)
 for (j = 0; j <3; j++)
      scanf("%d", &A[i][j]);
 for (i = 0; i <3; i++)
 {
  for (j = 0; j <3; j++)
  printf("%d\t",A[i][j]);
  printf("\n");
 }
  for(i=0;i<3;i++)
   {max=A[i][0];
    for(j=0;j<3;j++)
    if(max<A[i][j])
     max=A[i][j];
     k=max;
   }
  for(i=0;i<3;i++)
   {min=A[i][0];
    for(j=0;j<3;j++)
    if(min>A[i][j])
     min=A[i][j];
     x=min;
   }
  for(i=0;i<3;i++)
  {
   S=0;
   for(j=0;j<3;j++)
    {S=k+x;
     B[i]=S;
    }
  }
 for(i=0;i<3;i++)
 printf("B[%d]=%d\n",i,B[i]);
 getch();
 return 0;
}

Последний раз редактировалось Аватар; 06.05.2019 в 09:09.
Sci-SunLight вне форума Ответить с цитированием
Старый 06.05.2019, 09:07   #2
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Ты найденный максимум куда записал? В k. А это скалярная переменная. одна. При записи в неё максимума следующей строки старое значение затрётся. Но ты посчитал все максимумы и записал их в одну и ту же переменную и только потом начал вычислять разности. Минимум куда записал? В x. А это тоже скалярная переменная. Тоже одна. При записи в неё минимума следующей строки старое значение затрётся. Но ты сначала посчитал все минимумы и записал их в одну и ту же переменную и только потом начал вычислять разности. Разумеется, так ты получишь только одну разность. Или заполняй массив максимумов и массив минимумов, или считай максимумы и минимумы в том же теле цикла, где вычисляешь их разность. И нафига ты обнуляешь S, если не накапливаешь её постепенно, а вычисляешь за один раз? Дескрипторы и указатели принято инициировать NULL и nullptr во избежания обращения к мусору, но S – это не адрес в памяти, а просто число, с него ничего не упадёт. Максимум можно напортачить чего-то семантического. Ну так если ты не знаешь, что делаешь, то ничего хорошего и не сделаешь и 0 тебя не спасёт, а указатели обычно лежат на самом нижнем уровне динамических массивов и когда в массиве появится хоть что-то не знает данный конкретный уровень.

Последний раз редактировалось taras-proger77; 06.05.2019 в 09:11.
taras-proger77 вне форума Ответить с цитированием
Старый 06.05.2019, 09:24   #3
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Код:
#include <iostream>
int main()
{
 int a[3][3];
 int b[3];
 int i, j;
 int min;
 int max;
 std::cot<<"Iput array:"<<std::endl;
 for (i=0; i<3; ++i)
 {
  for (j=0; j<3; ++j)
  {
   std::cout<<"a["<<i<<", "<<j<<"]="; std::cin>>a[i][j];
  }
 }
 std::cot<<"Array is"<<std::endl;
 for (i=0; i<3; ++i)
 {
  for (j=0; j<3; ++j)
  {
   std::cout<<a[i][j]<<" ";
  }
  std::cout<<endl;
 }
 for (i=0; i<3; ++i)
 {
  max=a[i][0];
  min=a[i][0];
  for (j=1; j<3; ++j)
  {
   if (a[i][j]>max)
   {
    max=a[i][j];
   }
   if (a[i][j]<min)
   {
    min=a[i][j];
   }
  }
  b[i]=max-min; 
 }
 std::cout<<"differences are:"<<std::cout;
 for (i=0; i<3; ++i)
 {
  std::cout<<b[i]<<std::endl;
 }
}
Код:
#include <iostream>
int main()
{
 int a[3][3];
 int b[3];
 int i, j;
 int min[3];
 int max[3];
 std::cot<<"Iput array:"<<std::endl;
 for (i=0; i<3; ++i)
 {
  for (j=0; j<3; ++j)
  {
   std::cout<<"a["<<i<<", "<<j<<"]="; std::cin>>a[i][j];
  }
 }
 std::cot<<"Array is"<<std::endl;
 for (i=0; i<3; ++i)
 {
  for (j=0; j<3; ++j)
  {
   std::cout<<a[i][j]<<" ";
  }
  std::cout<<endl;
 }
 for (i=0; i<3; ++i)
 {
  max[i]=a[i][0];
  min[i]=a[i][0];
  for (j=1; j<3; ++j)
  {
   if (a[i][j]>max[i])
   {
    max[i]=a[i][j];
   }
   if (a[i][j]<min[i])
   {
    min[i]=a[i][j];
   }
  }
 }
 for (i=0; i<3; ++i)
 {
  b[i]=max[i]-min[i]; 
 }
 std::cout<<"differences are:"<<std::cout;
 for (i=0; i<3; ++i)
 {
  std::cout<<b[i]<<std::endl;
 }
}
Код:
#include <iostream>
int main()
{
 int a[3][3];
 int b[3];
 int i, j;
 int min;
 int max;
 std::cot<<"Iput array:"<<std::endl;
 for (i=0; i<3; ++i)
 {
  for (j=0; j<3; ++j)
  {
   std::cout<<"a["<<i<<", "<<j<<"]="; std::cin>>a[i][j];
   if (j==0)
   {
    max=a[i][j];
    min=a[i][j];
   }
   else
   {
    if (a[i][j]>max)
	{
	 max=a[i][j];
    }	
    if (a[i][j]<min)
	{
	 min=a[i][j];
    }	
   }
   b[i]=max-min;
  }
 }
 std::cot<<"Array is"<<std::endl;
 for (i=0; i<3; ++i)
 {
  for (j=0; j<3; ++j)
  {
   std::cout<<a[i][j]<<" ";
  }
  std::cout<<endl;
 }
 std::cout<<"differences are:"<<std::cout;
 for (i=0; i<3; ++i)
 {
  std::cout<<b[i]<<std::endl;
 }
}
Код:
#include <iostream>
int main()
{
 int a[3][3];
 int b[3];
 int i, j;
 int min[3];
 int max[3];
 std::cot<<"Iput array:"<<std::endl;
 for (i=0; i<3; ++i)
 {
  for (j=0; j<3; ++j)
  {
   std::cout<<"a["<<i<<", "<<j<<"]="; std::cin>>a[i][j];
   if (j==0)
   {
    max[i]=a[i][j];
    min[i]=a[i][j];
   }
   else
   {
    if (a[i][j]>max)
	{
	 max[i]=a[i][j];
    }	
    if (a[i][j]<min)
	{
	 min[i]=a[i][j];
    }	
   }
  }
 }
 std::cot<<"Array is"<<std::endl;
 for (i=0; i<3; ++i)
 {
  for (j=0; j<3; ++j)
  {
   std::cout<<a[i][j]<<" ";
  }
  std::cout<<endl;
 }
 std::cout<<"differences are:"<<std::cout;
 for (i=0; i<3; ++i)
 {
  b[i]=max[i]-min[i];
 }
 for (i=0; i<3; ++i)
 {
  std::cout<<b[i]<<std::endl;
 }
}

Последний раз редактировалось taras-proger77; 06.05.2019 в 09:26.
taras-proger77 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программисту c# - Подскажите пожалуйста форум, или сайт где можно найти проекты, задачи низкого уровня программирования, ли бо если нужно написать какое то ПО на c# KamBal Общие вопросы по программированию, компьютерный форум 2 28.01.2017 20:37
Помогите, нужно исправить 4 ошибки в коде программы Dimas190597 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 02.10.2016 15:57
Нужно исправить ошибку в коде Bright-rider Фриланс 2 07.04.2011 13:14
Нужно кое-что исправить в коде Fonochka Помощь студентам 7 27.12.2010 20:20
Подскажите что исправить в коде Grisha248 Помощь студентам 5 25.05.2009 03:00