C/C++

  • Креатор на темата Креатор на темата Драган
  • Време на започнување Време на започнување
Дечки имам проблем со една задачка во C
Значи имам матрица А[N][N] која има интервал на вредности -1000 до 1000. Значи од int тип.
Треба да се образува нова матрица C[N] чиишто елементи ќе бидат сумата од соодветната колона од А.
Кој е кодот кој треба да се внесе во for циклусот, дали треба да се дефинираат други вариабли освен sum?
Би ви бил многу благодарен ако ме упатите кон решението. :)
Вака, кај овие задачи со матрица, најлесно е да земеш и да нацрташ на лист, за некој пример и гледај како треба да ти работи циклусот. Ќе претпоставам дека ова C[N] ти е низа.
Значи имаш една матрица А[N][N]. Креираш нова низа од C[N]. И сега гледаш според примерот, првиот елемент во Ц треба да биде сума од елементите во првата колона од матрицата. Вториот елемент во Ц треба да ти биде сума од втората колона на матрицата. Тоа значи дека наместо како што стандардно ја изминуваш матрицата, ред по ред, сега ќе ја изминуваш колона по колона.Значи циклусите ќе ти бидат малку поразлични. Инаку воопшто не ти се потребни дополнителни променливи, па ни sum :).
 
Дечки имам неколку прашања за вас ако можете да ми ги одговорите.
1. Што ќе се прикаже по извршувањето на следниот програмски сегмент
int niza[]={4, 3, 1, 6, 8, 2, 5};
int x=niza[0];
for (int i=1; i<n; i++)
{
if (niza>x)
x=niza;
}
cout<<x;

2. Што се пресметува со следниот дел од програмата?
I=2;
While (i<11)
{
S=s+a;
J=i+2;
}


3. Определи кој резултат ќе се прикаже по извршувањето по следнио програмски сегмент?
Include <iostream>
Using namespace std;
Int main ()
{
Int niza[]={0, 2, 4, 6, 7, 5, 3}
Int n, rezultat=0;
For (n=0; n<5; n++)
{
Result +=niza[n]
}
Cout<<result;
Return 0;
}
 
Дечки имам неколку прашања за вас ако можете да ми ги одговорите.
1. Што ќе се прикаже по извршувањето на следниот програмски сегмент
int niza[]={4, 3, 1, 6, 8, 2, 5};
int x=niza[0];
for (int i=1; i<n; i++)
{
if (niza>x)
x=niza;
}
cout<<x;

2. Што се пресметува со следниот дел од програмата?
I=2;
While (i<11)
{
S=s+a;
J=i+2;
}

3. Определи кој резултат ќе се прикаже по извршувањето по следнио програмски сегмент?
Include <iostream>
Using namespace std;
Int main ()
{
Int niza[]={0, 2, 4, 6, 7, 5, 3}
Int n, rezultat=0;
For (n=0; n<5; n++)
{
Result +=niza[n]
}
Cout<<result;
Return 0;
}
Знаеш кога ти пишува што ќе се добие откако ќе се изврши програмскиот код, тоа значи дека треба да го извршиш и да видиш. Мислам ископирај го и изврши го во некоја развојна околина....[DOUBLEPOST=1415297721][/DOUBLEPOST]
го најдов решението другар
for (i=0;i<N;i++)
{
sum=0;
{
for(j=0;j<N;j++)
sum=sum+A;
C=sum;
}}

Работата беше сумата на сите редици од матрицата А да бидат елементи на C.
Фала у секој случај :)
Не па види, што е разликата ако напишеш C=C+A[j]
Ти викаш sum=sum+A
C=sum
Што е исто со C=C+A, ако C го поставиш на нула. Како и да е, браво, ти си еден од ретките кој бараше насока на решавање, обично сите бараат готов код.
 
Последно уредено:
Знаеш кога ти пишува што ќе се добие откако ќе се изврши програмскиот код, тоа значи дека треба да го извршиш и да видиш. Мислам ископирај го и изврши го во некоја развојна околина....[DOUBLEPOST=1415297721][/DOUBLEPOST]
Не па види, што е разликата ако напишеш C=C+A[j]
Ти викаш sum=sum+A
C=sum
Што е исто со C=C+A, ако C го поставиш на нула. Како и да е, браво, ти си еден од ретките кој бараше насока на решавање, обично сите бараат готов код.
Хах, до некаде си во право со ова. второто :D Не ми се чека ептен на готово, сакам малку да ја мозгам задачата :D
Иначе пошто не се разбираме, сакам да ти дадам пример
Матрицата А од 3х3 го има следниот формат
3 4 6
8 5 1
9 2 4

Сумата sum ќе биде збирот на вредностите на редиците
C[1]=18
C[2]=14
C[3]=15
Во твојот случај матрицата С само ќе ги земаше вредностите на редиците од матрицата А. :)
 
Хах, до некаде си во право со ова. второто :D Не ми се чека ептен на готово, сакам малку да ја мозгам задачата :D
Иначе пошто не се разбираме, сакам да ти дадам пример
Матрицата А од 3х3 го има следниот формат
3 4 6
8 5 1
9 2 4

Сумата sum ќе биде збирот на вредностите на редиците
C[1]=18
C[2]=14
C[3]=15
Во твојот случај матрицата С само ќе ги земаше вредностите на редиците од матрицата А. :)
Па како што кажа некој погоре, само така се учи програмирање, од готов код ништо.
Само ова C ти е низа така, не е матрица? Инаку јас мислев се бараат вредност на сума по колони,на пример во C[0] да имаш 3 + 8 +9, затоа што така пишуваше во твоето објаснување : "Треба да се образува нова матрица C[N] чиишто елементи ќе бидат сумата од соодветната колона од А."
Значи C[1] треба да биде сума на елементи од првата колона
тоа би било вака
притоа секој елемент од низата C е еднаков на 0.
for(i=0;i<n;i++)
for(j=0;j<n;j++)
C[ i ]=C[ i ]+A[j][ i ];
 
Еве го точното
for (j=0;j<N;j++)
{
sum=0;
for(i=0;i<N;i++)
{
sum=sum+A[j];
C[j]=sum;
}}
Сега го тестирав, ова ми е решение на задачата. Можеби лошо сум ти го кажал условот, па затоа не се совпаѓаат :)
 
Еве го и кодот, некој да каже да грешам ? :confused:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, broj, cifra, sumaKraj=0, sumaP=0, sumaN=0, zbir1=0, zbir2=0;
while(scanf("%d", &n))
{
cifra=n%10;
if(cifra>0)
{

if(cifra%2==0)
sumaP+=cifra;
if(cifra%2!=0)
sumaN+=cifra;
n/=10;
}
if(sumaP>5)
zbir1++;

if(sumaN<=5)
zbir2++;
}
printf("Broevi so zbir pogolem od 5: %d\n", zbir1);
printf("Broevi so zbir pomal ili ednakov od 5: %d", zbir2);

return 0;
}
 

Attachments

  • strukturnoVezbi.png
    strukturnoVezbi.png
    32,1 KB · Прегледи: 14
Еве го и кодот, некој да каже да грешам ? :confused:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, broj, cifra, sumaKraj=0, sumaP=0, sumaN=0, zbir1=0, zbir2=0;
while(scanf("%d", &n))
{
cifra=n%10;
if(cifra>0)
{

if(cifra%2==0)
sumaP+=cifra;
if(cifra%2!=0)
sumaN+=cifra;
n/=10;
}
if(sumaP>5)
zbir1++;

if(sumaN<=5)
zbir2++;
}
printf("Broevi so zbir pogolem od 5: %d\n", zbir1);
printf("Broevi so zbir pomal ili ednakov od 5: %d", zbir2);

return 0;
}

#include<stdio.h>
int main() {
int a, sump=0, sumn=0, cifra, bp=0, bn=0;
while(scanf("%d", &a)) {
sump=0;
sumn=0;
while(a>0) {
cifra=a%10;
a=a/10;
if(cifra%2==0)
sump=sump+cifra;
else
sumn=sumn+cifra;
}
if(sump>5)
bp++;
if(sumn<=5)
bn++;
}
printf("Broevi so zbir pogolem od 5: %d\n", bp);
printf("Broevi so zbir pomal ili ednakov od 5: %d", bn);
return 0;
}
 
дечки помош...
Учевме за -Еднодимензионално поле- и проф. ни даде две задачи за дома а тоа се
1. Одреди го најголемиот елемент во низата 3 7 12 4 8 5 и отпечати ја неговата вредност и позиција.
2. Подреди ја следната низата во растечки редослед : 8 3 7 6 12 5

треба како програма да се напишат не само онака блок дијаграм логички...
ми треба до утре до 12ч на пладне кој може да ми решии, фалаа :)
 
дечки помош...
Учевме за -Еднодимензионално поле- и проф. ни даде две задачи за дома а тоа се
1. Одреди го најголемиот елемент во низата 3 7 12 4 8 5 и отпечати ја неговата вредност и позиција.
2. Подреди ја следната низата во растечки редослед : 8 3 7 6 12 5

треба како програма да се напишат не само онака блок дијаграм логички...
ми треба до утре до 12ч на пладне кој може да ми решии, фалаа :)
Нема да ти ги решам задачите, ептен се едноставни само треба малце да седнеш и да размислиш.
Зошто не се обидеш да напишеш код, па да ни кажеш каде си заглавил, за да можеме да ти помогнеме?
За првата задача. Треба да ја изминуваш низата, и нон стоп да правиш проверка кој ти е најмал член
Значи ќе имаш две помошни променливи maxValue и maxIndex, во кој ќе ја чуваш најголемата вредност до сега и нејзиниот индекс во низата.
На пример за почетна вредност во maxValue ја ставаш првата вредност од низата, во случајот на
3 7 12 4 8 5 тоа е 3. maxIndex исто го ставаш на прва позиција (нулта позиција во низата).
Сега го гледаш следниот член. Дали следниот член е поголем од моменталниот најголем ( во случајов тоа е 3)? Да ? Епа тогаш сега моментално најголем (maxValue) е еднакво на 7, а позицијата е еднаква на 2. И така натаму до крајот на низата. Кога ќе ја изминеш низата, во maxValue ќе ти биде најголемата вредност, a vo maxIndex ќе ти биде позицијата на која се наоѓа тој елемент.

За втората задача. Ова е типичен пример на сортирање, да си прогуглал малце ќе видиш дека има 100215112512519 алгоритми за сортирање на низа. Еве на пример можеш да го искористиш кодот од погоре и да го правиш следното. Најди го најголемиот елемент во низата и замени му го местотото со последниот елемент во низата. Сега знаеш дека на крајот на низата ти се наоѓа најголемиот елемент. Сега пак гледај ја истата низа, ама без последниот елемент. Пак најди го најголемиот и стави го последен. Да речеме, сортот за оваа низа би одел вака.
Почнуваме од 8 3 7 6 12 5
После првата замена ќе биде 8 3 6 7 5 12
После втората замена ќе биде 5 3 6 7 8 12
После третата замена ќе биде 5 3 6 7 8 12
после четвртата замена ќе биде 5 3 6 7 8 12
после петтата замена че биде 3 5 6 7 8 12
Тука завршува алгоритмот.
 
Нема да ти ги решам задачите, ептен се едноставни само треба малце да седнеш и да размислиш.
Зошто не се обидеш да напишеш код, па да ни кажеш каде си заглавил, за да можеме да ти помогнеме?
За првата задача. Треба да ја изминуваш низата, и нон стоп да правиш проверка кој ти е најмал член
Значи ќе имаш две помошни променливи maxValue и maxIndex, во кој ќе ја чуваш најголемата вредност до сега и нејзиниот индекс во низата.
На пример за почетна вредност во maxValue ја ставаш првата вредност од низата, во случајот на
3 7 12 4 8 5 тоа е 3. maxIndex исто го ставаш на прва позиција (нулта позиција во низата).
Сега го гледаш следниот член. Дали следниот член е поголем од моменталниот најголем ( во случајов тоа е 3)? Да ? Епа тогаш сега моментално најголем (maxValue) е еднакво на 7, а позицијата е еднаква на 2. И така натаму до крајот на низата. Кога ќе ја изминеш низата, во maxValue ќе ти биде најголемата вредност, a vo maxIndex ќе ти биде позицијата на која се наоѓа тој елемент.

За втората задача. Ова е типичен пример на сортирање, да си прогуглал малце ќе видиш дека има 100215112512519 алгоритми за сортирање на низа. Еве на пример можеш да го искористиш кодот од погоре и да го правиш следното. Најди го најголемиот елемент во низата и замени му го местотото со последниот елемент во низата. Сега знаеш дека на крајот на низата ти се наоѓа најголемиот елемент. Сега пак гледај ја истата низа, ама без последниот елемент. Пак најди го најголемиот и стави го последен. Да речеме, сортот за оваа низа би одел вака.
Почнуваме од 8 3 7 6 12 5
После првата замена ќе биде 8 3 6 7 5 12
После втората замена ќе биде 5 3 6 7 8 12
После третата замена ќе биде 5 3 6 7 8 12
после четвртата замена ќе биде 5 3 6 7 8 12
после петтата замена че биде 3 5 6 7 8 12
Тука завршува алгоритмот.
ok fala mnogu
 
Moze li mala pomos so zadacata? Znam da ja resam bez funkcija ama so funkcija ne odi...
Да се напише функција која дадена низа ќе ја промени така што сите елементи ќе ги премести во лево за n места (n се внесува од тастатура) така што најлевите елементи ќе се додадат на крајот на добиената низа. Потоа да се напише главната програма која ќе ја испроба работата на оваа функција. Главна програма треба да дозволи внесување на низа од целобројни елементи и притоа ќе ја испечати променетата низа на екран.
 
Moze li mala pomos so zadacata? Znam da ja resam bez funkcija ama so funkcija ne odi...
Да се напише функција која дадена низа ќе ја промени така што сите елементи ќе ги премести во лево за n места (n се внесува од тастатура) така што најлевите елементи ќе се додадат на крајот на добиената низа. Потоа да се напише главната програма која ќе ја испроба работата на оваа функција. Главна програма треба да дозволи внесување на низа од целобројни елементи и притоа ќе ја испечати променетата низа на екран.
Како така без функција можеш, а со функција не можеш? Во main ќе се внесува низата и n, потоа n и низата ги праќаш како параметри на функцијата која го содржи кодот што си го напишал и ќе ја враќа променетата низа. Читни тука за функции: http://www.tutorialspoint.com/cprogramming/c_functions.htm :)

Ќе имаш нешто како...

char* поместување(char* низа, int n) {
код за поместување на низата во нованиза;
return нованиза;
}

main () {
scanf низа и n;
финална = поместување(низа, n);
printf финална;
}

П.С. внатре во функцијата нованиза мора да ти биде алоцирана со malloc(); на heap бидејќи во спротивно кога ќе заврши функцијата со извршување се губи поинтерот ИЛИ да ја дефинираш во main и да ја пратиш како параметар. :)
 
Последно уредено:

Kajgana Shop

Back
На врв Bottom