C/C++

Член од
21 ноември 2009
Мислења
29
Поени од реакции
11
Код:
#include <stdio.h>
int main ()
{
int max,broj,min,a;
int pozicijaMin = 0;
int brojac = 2;
printf("Za kraj da se vnese znak!\n");
scanf("%d\n",&broj);
min=broj;
while (scanf("%d\n",&broj))
{
if (broj<min)
{ 
  min=broj;
  pozicijaMin = brojac;
}
 brojac++;
}
printf("Minimum e %d, pozicijata e %d \n",min,pozicijaMin);
return 0;
}
 
Член од
17 октомври 2010
Мислења
10
Поени од реакции
0
2 НАПИШЕТЕ ЈА ПРОГРАМАТА
Да се напише програма која ќе ја печати аритметичката средина на првите 20 прости броеви.
3 НАПИШЕТЕ ЈА ПРОГРАМАТА
Од тастатура се внесуваат непознат број на цели броеви. Да се напише програма која за секој внесен број ќе формира нов, така што секоја цифра X во бројот ќе се замени со цифра Y, а цифрата Z ќе се испушта. Цифрите X, Y и Z се внесени од тастатура и се исти за сите броеви. Програмата на крај печати колку броеви биле внесени.
Пример: X=1 Y=3 Z=9
21941 => 2343



ja imama tretata a vtorata neznam kako da ja napravam bez funkcii

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

int main()
{
int x,y,z,broj,pom,brojac=0,cifra,novbr, mnoz;

printf("Koja cifra da se zamenuva "); scanf("%d",&x);
printf("So koja "); scanf("%d",&y);
printf("Koja cifra da se ispusta "); scanf("%d",&z);

printf("x=%d \t y=%d \t z=%d \n",x,y,z);
printf("Vnesuvajte broevi za kraj vnesete bukva\n");
while(scanf("%d",&broj))
{
brojac++;
novbr=0;
pom=broj;
mnoz=1;
while(pom)
{
cifra=pom % 10;
if(cifra!=z)
{
if(cifra==x)
cifra=y;
novbr=novbr+cifra*mnoz;
mnoz*=10;
}
pom/=10;
}
printf("%d ===> %d\n", broj,novbr);
}
printf("Vnesovte %d broja\n",brojac);
system("pause");
return 0;
}
ve molam za pomos na vtorata
 
Член од
22 август 2009
Мислења
30
Поени од реакции
5
2 НАПИШЕТЕ ЈА ПРОГРАМАТА
Да се напише програма која ќе ја печати аритметичката средина на првите 20 прости броеви.
3 НАПИШЕТЕ ЈА ПРОГРАМАТА
Од тастатура се внесуваат непознат број на цели броеви. Да се напише програма која за секој внесен број ќе формира нов, така што секоја цифра X во бројот ќе се замени со цифра Y, а цифрата Z ќе се испушта. Цифрите X, Y и Z се внесени од тастатура и се исти за сите броеви. Програмата на крај печати колку броеви биле внесени.
Пример: X=1 Y=3 Z=9
21941 => 2343



ja imama tretata a vtorata neznam kako da ja napravam bez funkcii

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

int main()
{
int x,y,z,broj,pom,brojac=0,cifra,novbr, mnoz;

printf("Koja cifra da se zamenuva "); scanf("%d",&x);
printf("So koja "); scanf("%d",&y);
printf("Koja cifra da se ispusta "); scanf("%d",&z);

printf("x=%d \t y=%d \t z=%d \n",x,y,z);
printf("Vnesuvajte broevi za kraj vnesete bukva\n");
while(scanf("%d",&broj))
{
brojac++;
novbr=0;
pom=broj;
mnoz=1;
while(pom)
{
cifra=pom % 10;
if(cifra!=z)
{
if(cifra==x)
cifra=y;
novbr=novbr+cifra*mnoz;
mnoz*=10;
}
pom/=10;
}
printf("%d ===> %d\n", broj,novbr);
}
printf("Vnesovte %d broja\n",brojac);
system("pause");
return 0;
}
ve molam za pomos na vtorata
Таа втората е јасно решена од bibil, ако не сакаш функција што е толку сложено да ја преправиш, ја внесуваш соржината на функцијата во while циклусот:

Код:
#include <stdio.h>

int main()
{
    int brojNaProsti=0, i=1, zbir=0;
    double aritSredina;
    while (brojNaProsti != 20)
    {
        int n=i;
        int delitel = 2;
        int prost = 1;
        if (n==1) prost=0; else
        {
        while (delitel*delitel <= n)
        {
            if (n%delitel == 0)
            {
                prost = 0; break;
            }
            delitel++;
        }
        }
        if (prost==1)
        {
            zbir += i;
            brojNaProsti++;
            printf("%d ", i);
        }
        i++;
    }
    aritSredina = (double)zbir/20;
    printf("\n%d\n%lf\n", zbir, aritSredina);
}
 

Jax Rebel

Navajo Rider
Член од
6 јули 2008
Мислења
5.260
Поени од реакции
2.254
Од тастатура се внесуваат непознат број цели броеви. Да се напише програма што ќе ги изброи и прикаже сите броеви чија најзначајна цифра е парна!

Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i,brojac=0;
    printf("vnesuvaj celi broevi:");
    while(scanf("%d",i))
    {
                       int pom=i,cifra;
                       pom=i;
                       while(pom)
                       {
                                    cifra=pom%10;
                                    pom/=10;
                       }
                       if(cifra%2==0)
                       {
                       printf("%d\n",i);
                       brojac++;
                       }
    }
    printf("%d",brojac);
    system("pause");
    return 0;
}
И не сака и не сака и не знам зошто......Ми ја компајлира, кога ќе ја извршам ми бара да внесувам вредности, ама кога ќе внесам некој број се гаси програмата(ми пише program has stopped working). Во Дев Ц++ компајлирам...
 
Член од
21 ноември 2009
Мислења
29
Поени од реакции
11
Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i,brojac=0;
    printf("vnesuvaj celi broevi:");
    [B]//while(scanf("%d",i)) треба да биде[/B]
    while(scanf("%d",&i)) [B]// испуштено ти е &[/B]
    {
                       int pom=i,cifra;
                       pom=i;
                       while(pom)
                       {
                                    cifra=pom%10;
                                    pom/=10;
                       }
                       if(cifra%2==0)
                       {
                       printf("%d\n",i);
                       brojac++;
                       }
    }
    printf("%d",brojac);
    system("pause");
    return 0;
}
 

Jax Rebel

Navajo Rider
Член од
6 јули 2008
Мислења
5.260
Поени од реакции
2.254
[/COLOR]Малку ќе замарам денес, ама утре ми е колоквиум па ако можете да помогнете арно:

1. Да се напише програма која од непознат број на цели броеви кои се внесуваат преку тастатура ќе ја испечати позицијата и вредноста на минималниот елемент.
(Пр. 8 4 6 8 10 5 7 3 5 9 6 4 11 - ќе испечати: позиција 8, вредност 3);

Ја имаме решено оваа на час во тетратка, сега не ми работи(ми бара ; пред else), ама помалку битно тоа, сакам да ми кажете што значат овие болдираните наредби, не ги разбирам:

Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int broj,brojac=0,poz,prv=1,min;
    printf("Vnesuvaj broevi od tastatura:\t");
    while(scanf("%d",&broj))
    brojac++;
   [B][SIZE="5"] if(prv)[/SIZE][/B]
    
    min=broj;
    poz=1;
    prv=0;
    else
    {
        if(broj<min)
        {
                    min=broj;
                    poz=brojac;
        }
    }

   [B][SIZE="5"] if(brojac)[/SIZE][/B]
    printf("%d%d",min,poz);
    system("pause");
    return 0;
}
2. Некој текст се внесува од тастатура знак по знак се додека не се внесе нов ред. Да се напише програма која на екран ќе ја прикаже позицијата на првата појава на буквата V, како и вкупниот број на појави на буквата V во текстот.

И оваа решена на час - не работи! И повторно го има тоа if(prv).....

Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    char znak;int brojac=0,poz,vkupno=0,prv=1;
    while(scanf("%c",&znak))
    {
    brojac++;
    if(znak=='\n') break;
    if(znak=='V')
    {
                 if(prv)
                 {
                        poz=brojac;prv=0;
                        vkupno++;
                 }
                 else vkupno++;
    }
}
    printf("%d%d",poz,vkupno);
    system("pause");
    return 0;
}
 
Член од
5 јуни 2008
Мислења
3.632
Поени од реакции
5.724
^
if(prv) ти е исто со if(prv!=0)
if(!prv) ти е исто со if(prv==0)

Ако има некој некаква идеја како би се решила задачава единствено со употреба на циклуси:
Од тастатура се внесува реченица (крајот е со '.' '!' или '?'). Да се напише програма која ќе изброи од колку зборови се состои реченицата. Размислував да ги брои празните места меѓу зборовите, но што кога има повеќе од едно празно место, пр: "Nadvor e mnogu ubavo vremeto!".
 
Член од
22 август 2009
Мислења
30
Поени од реакции
5
[/COLOR]Малку ќе замарам денес, ама утре ми е колоквиум па ако можете да помогнете арно:

1. Да се напише програма која од непознат број на цели броеви кои се внесуваат преку тастатура ќе ја испечати позицијата и вредноста на минималниот елемент.
(Пр. 8 4 6 8 10 5 7 3 5 9 6 4 11 - ќе испечати: позиција 8, вредност 3);

Ја имаме решено оваа на час во тетратка, сега не ми работи(ми бара ; пред else), ама помалку битно тоа, сакам да ми кажете што значат овие болдираните наредби, не ги разбирам:

Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int broj,brojac=0,poz,prv=1,min;
    printf("Vnesuvaj broevi od tastatura:\t");
    while(scanf("%d",&broj))
    brojac++;
   [B][SIZE=5] if(prv)[/SIZE][/B]
    
    min=broj;
    poz=1;
    prv=0;
    else
    {
        if(broj<min)
        {
                    min=broj;
                    poz=brojac;
        }
    }

   [B][SIZE=5] if(brojac)[/SIZE][/B]
    printf("%d%d",min,poz);
    system("pause");
    return 0;
}
2. Некој текст се внесува од тастатура знак по знак се додека не се внесе нов ред. Да се напише програма која на екран ќе ја прикаже позицијата на првата појава на буквата V, како и вкупниот број на појави на буквата V во текстот.

И оваа решена на час - не работи! И повторно го има тоа if(prv).....

Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    char znak;int brojac=0,poz,vkupno=0,prv=1;
    while(scanf("%c",&znak))
    {
    brojac++;
    if(znak=='\n') break;
    if(znak=='V')
    {
                 if(prv)
                 {
                        poz=brojac;prv=0;
                        vkupno++;
                 }
                 else vkupno++;
    }
}
    printf("%d%d",poz,vkupno);
    system("pause");
    return 0;
}
Еве ја првата задача малце модифицирана

Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int broj,brojac=0,poz,prv=1,min;
    printf("Vnesuvaj broevi od tastatura:\t");
    while(scanf("%d",&broj)[B]!=EOF[/B])
[B]     {[/B]
    brojac++;
    [SIZE=2]if(prv)[/SIZE]
    [B]{[/B]
    min=broj;
    poz=1;
    prv=0;
    [B]}[/B]
    else
    {
        if(broj<min)
        {
                    min=broj;
                    poz=brojac;
        }
    }
    [B]}[/B]
    [SIZE=2] if(brojac)[/SIZE] printf("%d%d",min,poz);
    system("pause");
    return 0;
}
Како и втората:

Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    char znak;int brojac=0,poz,vkupno=0,prv=1;
    while(scanf("%c",&znak)[B]!=EOF[/B])
    {
    brojac++;
    if(znak=='\n') break;
    if(znak=='V')
    {
                 if(prv)
                 {
                        poz=brojac;prv=0;
                        vkupno++;
                 }
                 else vkupno++;
    }
}
    printf("%d%d",poz,vkupno);
    system("pause");
    return 0;
}


--- надополнето ---


--- надополнето ---

^
if(prv) ти е исто со if(prv!=0)
if(!prv) ти е исто со if(prv==0)

Ако има некој некаква идеја како би се решила задачава единствено со употреба на циклуси:
Од тастатура се внесува реченица (крајот е со '.' '!' или '?'). Да се напише програма која ќе изброи од колку зборови се состои реченицата. Размислував да ги брои празните места меѓу зборовите, но што кога има повеќе од едно празно место, пр: "Nadvor e mnogu ubavo vremeto!".
Добра ти е идејата, број на зборови = број на празни места +1, со тоа што за секое празно место ќе проверуваш дали тоа пред него е исто празно место, ако е ништо, ако не е го сметаш за празно.
 
Член од
6 јуни 2009
Мислења
3.094
Поени од реакции
445
Ми треба помош околу header фајловите во Visual Studio....

Сакам да направам еден cpp фајл ко ќе ги содржи сите функции за основни операции на линеарно поврзани листи (внесување, печатење, бришење итн...), и ќе можам да го користам во програмите што ќе ги пишувам понатаму. Значи во другите програми ќе си содржи Main функција и некоја функција што ќе прави нешто со низите (во зависност од задачата)

Како треба да изледа header фајлот за датотекава?

Код:
#define MEMCHECK(x) if(x==NULL) {printf("Nema memorija!\n"); exit(-1);}

typedef int info_t;

typedef struct element
{
	info_t info;
	struct element *link;
} node; // definiranje na element vo linearna lista

typedef node * nodep; // definiranje na pokazuvac kon lista

node *mk_link_list()
{
	node *p=NULL, *q=NULL, *r=NULL;
	int n;
	while((scanf("%d",&n)||1)&&(getchar()!='`'))
	{
		r=(node *)malloc(sizeof(node));
		MEMCHECK(r);
		r->info=n;
		r->link=NULL;
		if(p==NULL) p=r;
		else q->link=r;
		q=r;
	}
	return p;
}

void print_list (node *p) // pecatenje na linearna lista
{
	while(p!=NULL)
	{
		printf("->%d",p->info);
		p=p->link;
	}
	putchar('\n');
}

void free_link_list(node *p) // osloboduvanje na memorijata zafatena so linearna lista (kompletno brisenje na listata)
{
	node *q;
	while(p!=NULL)
	{
		p=(q=p)->link;
		free(q); // brisenje na jazelot od memorija
	}
}
Со мало задоцнување.
Вака нешто
Код:
typedef int info_t;

typedef struct element
{
	info_t info;
	struct element *link;
} node, *pNode; //uste ovde mozi da se definira pointerot

node *mk_link_list();
void print_list (node *p);
void free_link_list(node *p);
 

old_School_mk

Програмер, гејмер, psy-trance уживател
Член од
11 август 2009
Мислења
6.152
Поени од реакции
5.918
Со мало задоцнување.
Вака нешто
Код:
typedef int info_t;

typedef struct element
{
	info_t info;
	struct element *link;
} node, *pNode; //uste ovde mozi da se definira pointerot

node *mk_link_list();
void print_list (node *p);
void free_link_list(node *p);
Ми јавува многу грешки сеа кога сакам да компајлирам...
Ај види дали добро го правам ова? Вака ми е кодот на новата датотека.
Код:
#include "Linearno Povrzana Lista.h"

int identicni (nodep a, nodep b)
{
	int brojac=0;
	nodep p=a;
	while(p!=NULL)
	{
		brojac++;
		if(a->info!=b->info)
			return brojac;
		a=a->sleden;
		b=b->sleden;
		p=p->sleden;
	}
	return 0;
}

int main()
{
	node *p1, *p2; /* pokazuvachi kon dvete listi i rezultantnata */
	node *mk_link_list(); /* funkcija za kreiranje na lista */
	int print_list(node *), free_link_list(node *); /* funkcii za pechatenje i brishenje na lista */
	node *slej(node *, node *); /* funkcija za kreiranje nova lista od postoechkite dve */
	int identicni (nodep a, nodep b);
	printf("Vnesi gi elementite od prvata lista\n");
	p1=mk_link_list();
	printf("Vnesi gi elementite od vtorata lista\n");
	p2=mk_link_list();
	printf("Prva lista\n");
	print_list(p1);
	printf("Vtora lista\n");
	print_list(p2);
	if(identicni(p1, p2)==0)
		printf("Listite se identicni\n");
	else printf("Listite NE se identicni. Prvata razlicna pozicija e %d\n", identicni(p1, p2));
	system("pause");
	return (0);
}
PS: во датотеката Linearno Povrzana Lista.cpp го неам ставено header фајлот, т.е. немам направено #include "Linearno Povrzana Lista.h". Да не треба да го вметнам и овде?
 
Член од
6 јуни 2009
Мислења
3.094
Поени од реакции
445
Ми јавува многу грешки сеа кога сакам да компајлирам...
Ај види дали добро го правам ова? Вака ми е кодот на новата датотека.
Код:
#include "Linearno Povrzana Lista.h"

int identicni (nodep a, nodep b)
{
	int brojac=0;
	nodep p=a;
	while(p!=NULL)
	{
		brojac++;
		if(a->info!=b->info)
			return brojac;
		a=a->sleden;
		b=b->sleden;
		p=p->sleden;
	}
	return 0;
}

int main()
{
	node *p1, *p2; /* pokazuvachi kon dvete listi i rezultantnata */
	node *mk_link_list(); /* funkcija za kreiranje na lista */
	int print_list(node *), free_link_list(node *); /* funkcii za pechatenje i brishenje na lista */
	node *slej(node *, node *); /* funkcija za kreiranje nova lista od postoechkite dve */
	int identicni (nodep a, nodep b);
	printf("Vnesi gi elementite od prvata lista\n");
	p1=mk_link_list();
	printf("Vnesi gi elementite od vtorata lista\n");
	p2=mk_link_list();
	printf("Prva lista\n");
	print_list(p1);
	printf("Vtora lista\n");
	print_list(p2);
	if(identicni(p1, p2)==0)
		printf("Listite se identicni\n");
	else printf("Listite NE se identicni. Prvata razlicna pozicija e %d\n", identicni(p1, p2));
	system("pause");
	return (0);
}
PS: во датотеката Linearno Povrzana Lista.cpp го неам ставено header фајлот, т.е. немам направено #include "Linearno Povrzana Lista.h". Да не треба да го вметнам и овде?
Овде во кодов за поинтер коритиш nodep тип, а јас го сменав во pNode. Второво почесто се користи. И да треба да го вметниш и таму, во имплементацијата, и од таму да ја избришеш структурата оти ја има веќе еднаш во хедерот.

Е сега, во C/C++ има една работа, компајлрот не прави разлика меѓу хедерите и сорсот, тој само ги компајлира .c/.cpp и ништо друго. Е сега препорцесорот во компајлерот ако сретни include, содржината од датотеката посочена во #include ја додава на тоа место, и всушност компајлерот на крајот добива еден голем .cpp. (тој голем цпп можи и рачно да се изпиши) Пример:

Код:
typedef struct element
{
	info_t info;
	struct element *link;
} node, *pNode; //uste ovde mozi da se definira pointerot

node *mk_link_list();
void print_list (node *p);
void free_link_list(node *p);

node *mk_link_list()
{
	....
	....
}

void print_list (node *p)
{
	....
	....
}
Што е финтава со два пати внесување на името на функцијата. Првото (со само точказапирка на крајот) е декларација и значи, ова име постои, резевирај го и најди ја дефиницијата на функцијата некаде, во истиот или во друг фајл. Значи дури ти и немора да го додаваш stdio.h на почток, туку можи да си декларираш printf(const char*, ...); и кодот ќе ти работи.

Финтава со функции можи да се примени и со променливи, се прави со пишување на зборот extern, Пример extern int najdiMeNadvor; Истото важи, променливата треба да е дефинирана (да зафаќа место во меморија) во истиот фајл подолу или во друг, само: int najdiMeNadvor;
Тоа extern дури можи и да се напиши пред декларацијата на функцијата, но нема потреба, екплицитно компајлерот го пишува ако не го ставиш и никој не го става во декларациите.

Значи декларации се пишуваат со extern и значат постојам негде, најди ме, најди ми ја дефиницијата каде има код. Кај декларации на функции за заштеда на време направиле да немора да се пишува extern.
Хедерите служат за пишување декларации, .cpp за дефиниции.

Уште една работа за структурите. Тие (најчесто) се декларираат (не е дефинирање оти нигде не зафаќа меморија ако само испишиш структура) во самите хедери затоа што функциите подолу декларирани во хедерот ја користат структурата.
 
A

apidrone

Гостин
2. Некој текст се внесува од тастатура знак по знак се додека не се внесе нов ред. Да се напише програма која на екран ќе ја прикаже позицијата на првата појава на буквата V, како и вкупниот број на појави на буквата V во текстот.

И оваа решена на час - не работи! И повторно го има тоа if(prv).....
Код:
#include <stdio.h>
#include <stdlib.h>

int main ()
{
	char t=0;
	int poz=0, pom, vk=0, br=0;
	printf("Vnesuvaj tekst \n");
	while(t!='\n')
	{
		scanf("%c", &t);
		br++;
		if(t=='V')
		{
			pom=br;
			vk++;
		}
		if(vk==1)
		{
			poz=pom;
		}
	}
	if(vk==0) printf("Nema V bukvi vo tekstot\n");
	else printf("Prvata pozicija na bukvata V e %d, a ima vkupno %d bukvi vo tekstot\n", poz, vk);
system("pause");
return 0;
}
 
Член од
12 април 2010
Мислења
491
Поени од реакции
143
#include <stdio.h>
int main() {
int n,i,m,suma=0;
printf("Vnesi gi n i m ");
scanf("%d %d ",&n,&m);
for (i=1;i<=n;i++) {
int p=1;
int j;
for(j = 1; j <= m; j++)
p*=i;
suma+=p;

}
printf("sumata e %d\n",suma);
return 0;
}

Ај некој да ми го објасни болдираното..
 
A

apidrone

Гостин
#include <stdio.h>
int main() {
int n,i,m,suma=0;
printf("Vnesi gi n i m ");
scanf("%d %d ",&n,&m);
for (i=1;i<=n;i++) {
int p=1;
int j;
for(j = 1; j <= m; j++)
p*=i;
suma+=p;

}
printf("sumata e %d\n",suma);
return 0;
}

Ај некој да ми го објасни болдираното..
int p=1;//se deklarira promenliva p od tipot int i se inicijalizira na 1
int j;//se deklarira promenliva j od tipot int
for(j=1;j<=m;j++)//nekoj brojac, vrti od 1 do m
p*=i;//ekvivalentno so p=p*i
suma+=p;//ekvivalentno so suma=suma+p

Не знам што се бара од кодот, иначе би пишал и зошто е така напишано.
 
Член од
12 април 2010
Мислења
491
Поени од реакции
143
int p=1;//se deklarira promenliva p od tipot int i se inicijalizira na 1
int j;//se deklarira promenliva j od tipot int
for(j=1;j<=m;j++)//nekoj brojac, vrti od 1 do m
p*=i;//ekvivalentno so p=p*i
suma+=p;//ekvivalentno so suma=suma+p

Не знам што се бара од кодот, иначе би пишал и зошто е така напишано.
Се бара сума: Untitledasd-1.jpg
m и n се внесуваат од тастатура..

не ми е јасно зошто се додаваат и за што служат p и j
 

Kajgana Shop

На врв Bottom