Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Помощ за задачи на C/C++ (merged)

Featured Replies

Добри хорица помагайте вече 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 (преглед на промените)

  • Отговори 941
  • Прегледи 235,9k
  • Създадено
  • Последен отговор

Без да претендирам за вярност (не съм писал програми на 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++.

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

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

Даден е двумерен масив с 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 Обект: равнобедрен триъгълник, зададен със страните си. Функция: Лице на триъгълника мерси предварително

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.