Премини към съдържанието

Препоръчан отговор


Добри хорица помагайте вече 3 ден се мъча да напиша една програма за курсовата си работа,но явно ще си остана с мъките!Уча в ту сливен и имам информатика от 13 седмици през който нищо не можах да науча до толкова че да мога да си правя простички програми!Явно или аз съм тъп или не ми е обяснено(мисля че не ми е обяснено добре защото от целия поток никой нишо не разбира) Та така програмкат ми е " Да се състави програма тип "Меню" за обработване на матрица от цели числа Х(м),м<12 и определяне на сумата от отрицателните числа намиращи се над главния диагонал и под второстепения" След доста мъки стигнах до тук: и ще съм много благодарен ако някой ми помогне!Предварително благодаря! П.С. Бадете живи и здрави!

#include <stdio.h>
#include <conio.h>
#include <stdlib.h> 
void main()
{int a[12][12];
int i,j,m,n,s,;
clrscr();
gotoxy (25,5); printf ("matrica \n");
randomize ();
do {printf("broi redove=");
scanf ("%d",&m);
}
while(m<1||m>12);

do { printf("broi kolkonii=");
scanf("%d",&n);
}
while(n<1||n>12);

for (i=0;i<m;i++)
  for (j=0;j<n;j++)
   a[i] [j]=random(100)-50;

printf("matrica A e:\n");
for (i=0;i<m;i++)
{ for (j=0;j<n;j++)
	 printf("%4d",a[i] [j]);
printf ("\n");

}
{int i,j,s,k;

for (i=0;i<m;i++)
	for (j=i+1;j<n;j++)
	if(a[i][j]<0)
	printf("%10d",a[i][j]);
	
}
}
Редактирано от Ggadzhalov (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Без да претендирам за вярност (не съм писал програми на C цяла вечност) ти съставих набързо едно решение:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int x[12][12];
int m, n;

void vhod()
{
  int i, j;
  
  clrscr();
  do
  {
	printf("broi redove=");
	scanf(m);
  }
  while(m<1||m>12);

  for(i=0;i<m;i++)
  {
	for(j=0;j<m;j++)
	{
	  scanf(x[i][j]);
	}
	printf("\n");
  }
}

void suma1()
{
  int sum = 0;
  int i, j;

  for(i=0;i<m;i++)
  {
	for(j=i;j<m;j++)
	{
	  if(x[i][j] < 0) sum += x[i][j];
	}
  }
  
  printf("Sumata 1 e %d", sum);
}

void suma2()
{
  int sum = 0;
  int i, j;

  for(i=0;i<m;i++)
  {
	for(j=0;j<i;j++)
	{
	  if(x[i][j] < 0) sum += x[i][j];
	}
  }
  
  printf("Sumata 2 e %d", sum);
}

void menu()
{
  clrscr();
  printf("1. Vhod");
  printf("2. Suma 1");
  printf("3. Suma 2");
  printf("0. Exit");
}

void main()
{
  do
  {
	menu();
	scanf(n);
	
	switch(n)
	{
	  case 1: vhod(); break;
	  case 2: suma1(); break;
	  case 3: suma2(); break;
	}
  }while(n != 0);
}

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Някой може ли да дефинира "главен диагонал" и "второстепенен диагонал"?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
#include <iostream.h>

void main ()
{
  int a[100][100];
  int n,m;
  cout<<"n=";cin>>n;
  cout<<"m=";cin>>m;

  int i,j;
  for (i=0;i<n;i++)
  {
	for (j=0;j<m;j++)
	{
	  cout<<"a["<<i<<"]["<<j<<"]=";
	  cin>>a[i][j];
	}
  }

  int sum = 0;
  for (i=0;i<n;i++)
  {
	for (j=0;j<m;j++)
	{
	  if(a[i][j]%2 == 0) sum += a[i][j];
	}
  }

  cout<<"Sumata e:"<<sum;

  return 0;
}

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Така е по-добре:

// cpp.cpp : Defines the entry point for the console application.
// Бисмилляхир-рахманир-рахим
// http://yusufsoft.110mb.com/

#include "stdafx.h"
#include <iostream>
using namespace std;


int main(void)
{
	int a[100][100];
	int n, m;
	int sum = 0;
	cout << "n="; cin >> n;
	cout << "m="; cin >> m;

	int i, j;
	for (i=0; i < n; i++)
	{
		for (j=0; j < m; j++)
		{
			cout << "a[" <<  i << "][" << j << "]=";
			cin >> a[i][j];
			if (a[i][j] % 2 == 0) sum += a[i][j];
		}
	}

	cout << "Sumata e:" << sum << endl;

	return 0;
}

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Добре е sum да не е int, а long int, защото ако елементите на матрицата са големи числа, сумата може да надхвърли 32768 и да получим съобщение за грешка или неверен отговор. Добре е преди циклите за изчисляване на сумата да се провери дали 0<=n<=100 и 0<=m<=100, за да избегнем неприятни изненади.

Понякога е добре да се презастраховаме. :ph34r:

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Здравейте, понеже не съм много на "ти" с езика ще помоля да ми помогнете за курсовата задача. Да се състави алгоритъм за намиране разликата между най-голямата и най-малката стойностти в отделните стълбове на двумерен масив с М реда и N стълба. m трябва да е <=10, а n<=15 Благодаря Ви предварително!

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Би трябвало да е нещо такова, но предупреждавам, че бъркам стълбовете с редовете и някъде нещо може да се наложи "да се обърне":

// Project.cpp : Defines the entry point for the console application.
// Бисмилляхир-рахманир-рахим
//(В името на Аллах, Всемилостивия, Милосърдния!)
// http://yusufsoft.110mb.com/
//

#include "stdafx.h"
#include <iostream>
using namespace std;


int main(void)
{
	int m, n;

	// Създаване на матрица
	cout << "Syzdavane na matritsa..." << endl;
	cout << "Molya vyvedete broya na stylbovete:";
	cin >> m;
	if (m > 10)
	{
		cout << "Broyat na stylbovete ne biva da nadvishava 10!" << " Molya vyvedete nova stojnost:";
		cin >> m;
	}

	cout << "Molya vyvedete broya na redovete:";
	cin >> n;
	if (n > 15)
	{
		cout << "Broyat na redovete ne biva da nadvishava 15!" << " Molya vyvedete nova stojnost:";
		cin >> n;
	}

	int mtrx[10][15];

	// Инициализиране на матрицата

	int i, j;
	for (i=0; i < n; i++)
	{
		for (j=0; j < m; j++)
		{
			cout << "Vyvedete stoinost za komponent s koordinati [" <<  i << "][" << j << "]:";
			cin >> mtrx[i][j];
		}
	}

	// Намиране разликата между най-голямото и най-малкото число в матрицата

	for (i=0; i < n; i++)
	{
		int tmpmax = mtrx[i][0];
		int tmpmin = mtrx[i][0];
		for (j=0; j < m; j++)
		{
			if (mtrx[i][j] > tmpmax)
				tmpmax = mtrx[i][j];
			if (mtrx[i][j] < tmpmin)
				tmpmin = mtrx[i][j];
		}
		cout << "Razlikata mejdu maksimalnata i minimalnata stoinost v stylb " << i << " e " << tmpmax - tmpmin << endl;
	}

	return 0;
}

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Някой може ли да дефинира "главен диагонал" и "второстепенен диагонал"?

Диагоналът "горе-ляво --> долу-дясно" е главен, а "горе-дясно -->долу-ляво" е второстепенен.

ДАно си ме разбрал, защото ме мързи да ти изтипосам някоя матрица.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Диагоналът "горе-ляво --> долу-дясно" е главен, а "горе-дясно -->долу-ляво" е второстепенен.

ДАно си ме разбрал, защото ме мързи да ти изтипосам някоя матрица.

Благодаря, схванах.

ПП Що в България в учебните заведения използват Borland C++, а не Visual C++ Express Edition? И двете са безплатни. Веднъж писах на един приятел курсовата на Borland C++ и му ударих едно псуване...

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ето го и моя вариант на решение. Работи под Visual C++. Предупреждавам - няма коментари, подканващи въпроси, корективи. Може би обаче е коректно да ги има, затова си ги сложи, където им е мястото. Освен това аз съм старомодна и си пиша без да използвам namespace.std

#include <iostream.h>

void main()

{

int a[10][15];

int m,n,min,max;

cin>>m>>n;

for(int i=0;i<m;i++)

for(int j=0;j<n;j++)

cin>>a[j];

for(i=0;i<n;i++)

{

min=a[0];

max=a[0];

for(int j=0;j<m;j++)

{

if(min>a[j])

min=a[j];

if(max<a[j])

max=a[j];

}

cout<<max-min<<endl;

}

}

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Проблема е, че работим на Borland C++ и тези неми вършат много работа. Ако можете да ми я пренапишете за <stdio.h>. То грешката е в мен, че в началото не уточних.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Благодаря, схванах.

ПП Що в България в учебните заведения използват Borland C++, а не Visual C++ Express Edition? И двете са безплатни. Веднъж писах на един приятел курсовата на Borland C++ и му ударих едно псуване...

Що бе? Какво му е лошото на Borland C++? Аз си го харесвам, въпреки че предпочитам Visual C++. Виж, DevC++ мразя!

ДА добавя за диагоналите - по главния диагонал индексите на реда и стълба са равни, а при второстепенния сумата на същите индекси е константа.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Проблема е, че работим на Borland C++ и тези неми вършат много работа. Ако можете да ми я пренапишете за <stdio.h>. То грешката е в мен, че в началото не уточних.

Borland C++ също работи със iostream.h библиотеката и следователно разбира от вход и изход от типа cin и cout. Жалко, че го нямам инсталиран в момента, за да пробвам как работи моята версия под него, но ми се струва, че няма да има проблеми. Можеш да пробваш, ако искаш. Друг е въпросът ако не сте учили въпросната библиотека. Окей! Ще го пренапиша, но утре. ДАно не ти е късно.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Да права се, несме учили тази библиотека. Имам около 1 седмица да завърша тази курсова работа.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ето ти я на стандартен С. Предупреждавам - не съм я тествала. Както вече казах нямам инсталиран Borland C++, а на този език не съм писала от 7 години.

#include <stdio.h>

void main()

{

int a[10][15];

int m,n,i,j,min,max,raz;

scanf("%d",&m);

scanf("%d",&n)

for(i=0;i<m;i++)

for(j=0;j<n;j++)

scanf("%d",&a[j]);

for(i=0;i<n;i++)

{

min=a[0];

max=a[0];

for(j=0;j<m;j++)

{

if(min>a[j])

min=a[j];

if(max<a[j])

max=a[j];

}

raz=max-min

printf("%d\n",raz);

}

}

Тук съм въвела една допълнителна променлива raz за разликата, защото не си спомням дали изваждането може да се осъществи в рамките на printf.

Надявам се да върви.

Редактирано от Sessily (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Голямо благодаря!

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

А "unit matrix" какво беше? Когато елементите на главния диагонал са единици, а всички останали елементи са нули?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Опитвам се да направя 1 програма на C++. Почти съм готов, но не мога да направя завършителните стъпки. Ето кода:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include <time.h>
#define MAX 5
#define SIZE 43

int main()
{
char slujitel[MAX][SIZE];
float zaplata, danuk, os, gd, vnos, chzaplata;
long int chas, chas1, stavka, izdrujka;
int gd1, chv;
char dateStr [9];
char timeStr [9];
char izbor;
FILE *fp;
_strdate( dateStr);
printf( "The current date is %s \n", dateStr);
_strtime( timeStr );

printf( "The current time is %s \n", timeStr);
getchar();

do
{
printf("\n\nMenu:\n");
printf("'A':Vuvejdane na danni za slujitel\n");
printf("'B':Izvejdane na danni za slujitel\n");
printf("'C':Iz4islqvane\n");
printf("'D':Izhod!\n");
printf("Izberete opciq:");
izbor=toupper(getch());

switch(izbor)
{
case'A':fp = fopen("EMPLOYEE.DAT", "w");
				{ int i;
				for(i=0;i<MAX;i++)
{
printf("\nSlujitel N:%d", (i + 1));
printf("\nVuvedete ime na slujitelq:");
gets(&slujitel[i][1]);
printf("Vuvedete familiq na slujitelq:");
gets(&slujitel[i][10]);
printf("V grad ili provinciq raboti (Vuvedete 1 za grad ili 2 za provinciq):");
gets(&slujitel[i][20]);
printf("Chlen li e na sindikat (Vuvedete 1 za Da ili 2 za Ne):");
gets(&slujitel[i][22]);
printf("Vuvedete nomer na slujitelq:");
gets(&slujitel[i][24]);
printf("Vuvedete broi izraboteni chasove:");
gets(&slujitel[i][29]);
printf("Vuvedete chasova stavka na slujitelq:");
gets(&slujitel[i][33]);
printf("Vuvedete izdrujkite na slujitelq:");
gets(&slujitel[i][38]);
printf("Vuvedete broi izvunredni chasove izraboteni ot slujitelq:");
gets(&slujitel[i][41]);

gd1 = atoi(&slujitel[i][20]);
chv = atoi(&slujitel[i][22]);
}
fwrite(slujitel, MAX, SIZE, fp);
fclose(fp);
}break;

case'B': fp = fopen("EMPLOYEE.DAT", "r");
fread(slujitel, MAX, SIZE, fp);
fclose(fp);
{int i;
for(i=0;i<MAX;i++)
{

gd1 = atoi(&slujitel[i][20]);
chv = atoi(&slujitel[i][22]);
printf("\nDanni za slujitel N:%d", i);
printf("\nIme:");
puts(&slujitel[i][1]);
printf("\nFamiliq:");
puts(&slujitel[i][10]);
if (gd1 == 1)
{
printf("\nSlujitelq raboti v grad");
}
else {
printf("\nSlujitelq ne raboti v grad");
}
if (chv == 1)
{
printf("\nSlujitelq uchastva v sindikat");
}
else { printf("\nSlujitelq ne uchastva v sindikat!");
}

printf("\nNomer na slujitelq:");
puts(&slujitel[i][24]);

printf("\nIzraboteni chasove:");
puts(&slujitel[i][29]);

printf("\nChasova stavka:");
puts(&slujitel[i][33]);

printf("\nIzdrujki na slujitelq:");
puts(&slujitel[i][38]);

printf("\nIzvunredni chasove:");
puts(&slujitel[i][41]);
}
}break;
case'C':{ int i;
for(i=0;i<MAX;i++)
{ printf("\n\nSmqtane na danni za slujitel N:%d", (i + 1));

chas = atol(&slujitel[i][29]);
chas1 = atol(&slujitel[i][41]);
stavka = atol(&slujitel[i][33]);
izdrujka = atol(&slujitel[i][38]);
gd1 = atoi(&slujitel[i][20]);
chv = atoi(&slujitel[i][22]);

zaplata = (chas + chas1*1.5)*stavka;
printf("\nZaplatata na slujitelq e:%f",zaplata);
danuk = 0.14*(zaplata - 13*izdrujka);
printf("\nDanuka na slujitelq e:%f",danuk);
os = 0.07*zaplata;
printf("\nSocialno osigurqvane:%f",os);
if (gd1 == 1)
{
gd = (zaplata/100)*4;
printf("\nGradski danuk:%f", gd);
}
else {
printf("\nSlujitelq ne raboti v grad!");
}
if (chv == 1)
{
vnos = (zaplata/100)*6.75;
printf("\nChlenski vnos:%f", vnos);
}
else { printf("\nSlujitelq ne uchastva v sindikat!");
}
chzaplata = zaplata - (danuk + os + gd + vnos);
printf("\nChistata zaplata na slujitelq e:%f", chzaplata);
}
}
}

printf("\nnatisni klavi6 RET za produljenie");

getchar();

}while(izbor!='D');

}
Та програмата си работи перфектно, създава се файл който се записва и съответно се извежда при искане на определеното меню. Обаче тук идва проблема ми. Искам да направя така, че като избера опция въвеждане на нов служител да се въвежда името на файла от самия потребител. Също така искам като се избере опция извеждане на инфо да се задава пак от потребителя името на файла, който ще се отваря и ще се чете. Та някой може ли да ми помогне за това нещо :offtopic_s: Ще съм много благодарен.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Че този сорс е характерен за C, а не за C++.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Няма значение... Докато чакам се справих сам!

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

И на мен ми стана чудно. То наистина този сорс е на C.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ще помоля някой ако има малко свободно време да ми помогне за една задача на с за двумерни масиви.

Даден е двумерен масив с M реда и N стълба да се състави алгоритъм за намиране номера на първия ред в който всички елементи са равни.

#include <stdio.h>
void main (void)
{
float a[10][15];
int m,n,j,i;
printf("zadaite stoinost na m");
scanf("%d",&m);
printf("zadaite stoinost na n");
scanf("%d",&n);
for(j=0;j<m;j++)
for(i=o;i<n;i++)
{
printf("a[%d][%d]=",j,i);
scanf("%f",a[j][i]);
}
Ще съм много благодарен ако някой ми помогне с довършването, просто не мога да разбера как да направя алгоритама за сравнение на на стойностите в масива.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

трябва ми помощ за две задачи на С++ това е условието Да се моделират дадения в задачата "реални" обекти с техните свойства, като се използват класове. Да се демонстрира работата на програмата с подходящи тестови примери: · класовете да съдържат поне 1 конструктор и деструктор · декларацията и реализацията на класовете да бъдат отделени в различни файлове, свързани в проект · създаване и унищожаване на обекти от класа чрез вход на данните от клавиатура и/или файл и проверка за коректност на входните данни; · работата на член-функциите на класа; зад.1 Обект: права в равнината, зададена с точка и ъгъл, който сключва с абсцисната ос Функция: пресечната точка с абсцисната ос зад.2 Обект: равнобедрен триъгълник, зададен със страните си. Функция: Лице на триъгълника мерси предварително

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.