- Член од
- 23 април 2010
- Мислења
- 10
- Поени од реакции
- 0
da, vaka znam. mislav da e dinamicen za da moze da se dodavaat neogranicen broj elementi, a ne kako gore na slikata kade so moze samo 5 bukvi ili namesto 5 da e 100 bukvi itn.
Сигурно во С ти треба, а не во С++ ?da, vaka znam. mislav da e dinamicen za da moze da se dodavaat neogranicen broj elementi, a ne kako gore na slikata kade so moze samo 5 bukvi ili namesto 5 da e 100 bukvi itn.
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef int info;
typedef struct list{
struct list *next;
struct list *back;
info data;
}list;
//Inicijalizira dvojno kruzna povrzna lista so vodac
void inic(list **l){
(*l) = malloc(sizeof(list));
(*l)->next = *l;
(*l)->back = *l;
}
//Dodava element na krajot na listata
void add(list *l, info dat){
list *t = malloc(sizeof(list));
if(t == NULL){
fprintf(stderr, "Nema mesto");
exit(-1);
}
t->data = dat;
t->next = l;
t->back = l->back;
l->back->next = t;
l->back = t;
}
typedef struct stack{
list *sList;
}stack;
// Inicijalizira stek, tuka pr ako sakas da cuvas drugi informacii kako broj na elementi, itn gi stavas na pocetni vrednosti
void inicStack(stack *s){
inic(s->sList);
}
//Dodoava element vo stekot
void push(stack *s, info dat){
add(s->sList,dat);
}
// vraka podatokot vo posledniot element od listata i go brise
info pop(stack *s){
if(s->sList->back == s->sList){
fprintf(stderr, "Underflow");
exit(-1);
}
info d = s->sList->back->data; // zacucuva podatokot sto treba da vrati
list *tmp = s->sList->back; // privremena promenliva sto pokazuva do poslendiot element za posle da se izbrise
s->sList->back->next = s; //Ova e da se napravi posledniot element da ne e "del" od listata, da ne moze da se pristapi
s->sList->back = s->sList->back->back;
free(tmp); // posledniot element se brise
return d;
}
// Vraka podatok od posledniot element vo lsitata no ne se brise
info peek(stack *s){
if(s->sList->back == s->sList){
fprintf(stderr, "Underflow");
exit(-1);
}
return s->sList->back->data;
}
int main()
{
stack *s = malloc(sizeof(stack));
inicStack(&s);
printf("Push 100 elementi\n");
int i;
for(i = 0; i < 100; i++)
push(s,i);
printf("\nPop 100 elementi\n");
for(i = 0; i < 100; i++)
printf("%d, ",pop(s));
printf("\nStekote veke e prazen :\n");
pop(s);
}
Може да се реши по два начина. Со рекурзија и со пермутации. Во моментов сум зафатен, но утре би можел да ти ги куцнам и да ги објаснам и двата начина, се разбира, ако некој друг од форумов до тогаш не ти ги објасни.ako ne e problem ke moze li nekoj da mi kaze nekoj nacin za naogaanje na determinanta na nxn matrica. pobarav na net ali ne gi svakam kkao sto treba.
За детерминанти од ред 2 и 3 постои готова формула и е многу едноставно да се пресмета. За детерминанта од ред n>3 мене прво што ми текна е според следнава слика:ako ne e problem ke moze li nekoj da mi kaze nekoj nacin za naogaanje na determinanta na nxn matrica. pobarav na net ali ne gi svakam kkao sto treba.
Како што кажав, детерминанта може да се најде по 2 начина - со минори и со пермутации. Првиот начин е како што ти објасни Filmakedon. Тоа правило важи за секоја NxN матрица. Единствени работи што треба да ги знаеш се: од математика - минори, од програмирање - рекурзија.ako ne e problem ke moze li nekoj da mi kaze nekoj nacin za naogaanje na determinanta na nxn matrica. pobarav na net ali ne gi svakam kkao sto treba.
int** CreateSquareMatrix(int len)
{
int **mat = new int*[len];
for(int i = 0; i < len; i++)
mat[i] = new int[len];
return mat;
}
int** Minor(int** Matrix, int row, int col, int len)
{
int **Minor = CreateSquareMatrix(len - 1);
for(int i = 0; i < len-1; i++)
{
for(int j = 0; j < len-1; j++)
{
Minor[i][j] = Matrix[i + (row <= i)][j + (col <= j)];
}
}
return Minor;
}
int Determinant(int **Matrix, int len)
{
int d = 0, t = 1;
if(len < 2)
{
return Matrix[0][0];
}
if(len < 3)
{
return Matrix[0][0] * Matrix[1][1] - Matrix[1][0] * Matrix[0][1];
}
else
{
for(int j = 0; j < len; j++)
{
t = j % 2 == 0 ? 1 : -1;
d += t*Matrix[0][j] * Determinant(Minor(Matrix,0,j,len),len-1);
}
}
return d;
}
int n;
cout << "Vnesete Dolzhina na matricata: " << endl;
cin >> n;
int **Matrix = CreateSquareMatrix(n);
ReadMatrix(Matrix, n);
PrintMatrix(Matrix,n);
cout << endl << endl;
cout << Determinant(Matrix,n) << endl;
#include <stdio.h>
const int HoursInDay = 24;
const int MinutesInHour = 60;
const int SecondsInMinute = 60;
int main () {
int seconds;
int minutes;
int hours;
int days;
int InSeconds;
scanf("%d", &InSeconds);
seconds = InSeconds % SecondsInMinute;
minutes = InSeconds / SecondsInMinute;
hours = InSeconds / (SecondsInMinute * MinutesInHour);
days = InSeconds / (SecondsInMinute * MinutesInHour * HoursInDay);
printf("%d sekundi se %d casovi, %d minuti i %d sekundi", InSeconds, hours, minutes, seconds);
return 0;
}
Додади го оваДобро шо е проблемов во задачава ? Зошто минутите не ми ги дава точно ?Ај помош...
Код:#include <stdio.h> const int HoursInDay = 24; const int MinutesInHour = 60; const int SecondsInMinute = 60; int main () { int seconds; int minutes; int hours; int days; int InSeconds; scanf("%d", &InSeconds); seconds = InSeconds % SecondsInMinute; minutes = InSeconds / SecondsInMinute; hours = InSeconds / (SecondsInMinute * MinutesInHour); minutes %= 60; // days = InSeconds / (SecondsInMinute * MinutesInHour * HoursInDay); printf("%d sekundi se %d casovi, %d minuti i %d sekundi", InSeconds, hours, minutes, seconds); return 0; }
Фала брат, никад нема да ми текнеше ова да го пробам.Додади го ова
minutes %= 60;
и денови не ти требаат затоа што не печатиш денови....