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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

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

Featured Replies

На таква среда ни учат,таква използвам ... иначе проблема с четенето и извеждането е вече решен ... благодаря за помоща *да речем*

  • Отговори 941
  • Прегледи 234,5k
  • Създадено
  • Последен отговор
благодаря за помоща *да речем*
Моля :D Успех с програмирането.

Да се състави програмана С, която организира работата на потребителя с програмата чрез меню, от което се избира едно от следните действия:

1 Чете от клавиатурата текст ( до въвеждане на CTRL/Z ) и го съхранява в текстов файл text.txt

2.прочита съдържанието на text.txt и извършва следните статистически обработки:

  • намира броя на думите ( думите са разделени с интервал или точка)
  • извежда думата с най-много символи ( най-дългата дума)
  • извежда всички думи с четири символа

Тези резултати програмата извежда на екрана на монитора.

3.Прочита съдържанието text.txt и записва нов файл text1.txt , в който всички думи от text.txt се записват на нов ред.

4. Прочита съдържанието на text1.txt и го извежда на екрана.

5.Край на работата с програмата.

 

Ако може молко помощ за тaзи ,че не я схащам вопще:

-извежда всички думи с четири символа

#include "stdafx.h"#include <stdlib.h>#include <string.h>#define TEXT "text.txt"#define	TEXT1 "text1.txt"int menu();int entertext();int nword();int lword();void copytext();int display();int _tmain(int argc, _TCHAR* argv[]){		int i;	FILE *file_ptr;	while(1) 	{		i=menu();		  switch (i)		  {			case 1:entertext();			break;			case 2:nword();lword();			break;   			case 3:copytext();			break; 			case 4:display();			break;  			case 5:exit(0);			default: printf("nNevaliden izbornn");break;		  } 	}  	return 0;}int menu(){	int i,choice;	  printf("**************************************************");	  printf("n*                      MENU                      *");	  printf("n*                                                *");	  printf("n* 1.Vavedete tekst                               *");	  printf("n* 2.Statisticheska obrabotka na teksta           *");	  printf("n* 3.Zapisvane na dumite na nov red               *");	  printf("n* vav fail text1.txt                             *");	  printf("n* 4.Izvejdane na sadarjanieto na text1.txt       *");	  printf("n* 5.Krai na rabotata s programata                *");	  printf("n*                                                *");	  printf("n**************************************************");	  printf("nnNapravete izbor:");	  scanf ("%d", &choice);	  printf("n");	return choice;}int entertext(){	int c;	FILE *file_ptr;	file_ptr = fopen(TEXT,"wb");	printf("Vavedete teksta(do vavejdaneto na CTRL/Z).nDumite otdeliate sas interval ili '.':n");			while ((c = getchar()) != 0x1a)				{ 					putc(c, file_ptr);			 				}											fclose(file_ptr);	return  printf("nTeksta e zapazen vav fail text.txtnn");}int nword(){  	int c,nw,state;	FILE *file_ptr;    file_ptr=fopen(TEXT,"r");  	        		state =0;		 nw =  0;		while ((c = fgetc(file_ptr))!= EOF) {			if (c == ' ' || c == '.' )			state = 0;			else if (state ==0) {			state = 1;			++nw;			}  		}		     fclose(file_ptr);  	return printf("Broia dumi e %d.nn",nw);}int lword(){	char a[500],b[200],c[200];	int i,j=0,l=0;	FILE *file_ptr;    file_ptr=fopen(TEXT,"r");	while(fgets(a,500,file_ptr)!=NULL){		for(i=0;i<=strlen(a);i++)		{			if(a[i]!=' ' && a[i]!='.' && a[i]!='0')				b[j++]=a[i];			else{				b[j]='0';							if(strlen(b)>l)				 {					strcpy(c,b);					l=strlen(b);				 }				 j=0;			}		}	}	fclose(file_ptr);	return printf("Nai-dalgata duma e %s.nn",c) ;}void copytext(){	int c=0;	FILE *file_ptr;	FILE *file_ptr1;	file_ptr=fopen(TEXT,"r");	file_ptr1=fopen(TEXT1,"w");	       	while ((c = fgetc(file_ptr))!= EOF) {		if(c==' ' || c=='.' )			fputc('n',file_ptr1);		else			 fputc(c,file_ptr1);     }		     fclose(file_ptr);         fclose(file_ptr1);	 printf ("Sadarjanieto na text.txt e zapisano v text1.txt.n");}int display(){ 	int c;	FILE *file_ptr1;	file_ptr1 = fopen( TEXT1 , "r");	printf("Sadarjanieto na text1.txt e:n");    while((c=getc(file_ptr1))!=EOF)		printf("%c",c);    fclose(file_ptr1);		return printf("nn");}

 

Благодаря предварително!

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

Ако може молко помощ за тaзи ,че не я схащам вопще: -извежда всички думи с четири символа
Е поне направи едното подусловие, между двата поста :) Макар, че това с копирането на цели думи си е свръхработа. Ето ти каквото искаш - разгледай я и виж ще се сетиш ли, как можеш да намериш най-дългата дума, много по-лесно:
int four_words(char *str){    char *p_str = str;    // дължина на текущата дума    int c_len = 0;    // брой думи досега с дължина 4 символа    int len_4 = 0;    // докато не стигнем края    while('0' != *p_str) {        if((' ' == *p_str) || ('.' == *p_str)){            // Ако е разделител проверяваме дали думата досега е 4 символа            // и ако да увеличаваме бройката            if(4 == c_len){                len_4++;            }            //новата дума ще почне от дължина 0            c_len = 0;        } else {            // не е разделител значи по условие е буква            // увеличаваме дължината с 1            c_len++;        }        // следващ символ        p_str++;    }        // ако последната дума е била с 4 символа и низа не завършва с точка или интервал    // трябва да я отчетем.    if(4 == c_len){        len_4++;    }    // Връщаме резултат    return (len_4);}
Забележка: К'ви са тия работи??? Вземи прочети пак за return в C, да не изгърмиш с двойка при все старанието ти...
return printf("nn");

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

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

int four_words(char *str){    char *p_str = str;    // дължина на текущата дума    int c_len = 0;    // брой думи досега с дължина 4 символа    int len_4 = 0;    // докато не стигнем края    while('0' != *p_str) {        if((' ' == *p_str) || ('.' == *p_str)){            // Ако е разделител проверяваме дали думата досега е 4 символа            // и ако да увеличаваме бройката            if(4 == c_len){                len_4++;            }            //новата дума ще почне от дължина 0            c_len = 0;        } else {            // не е разделител значи по условие е буква            // увеличаваме дължината с 1            c_len++;        }        // следващ символ        p_str++;    }        // ако последната дума е била с 4 символа и низа не завършва с точка или интервал    // трябва да я отчетем.    if(4 == c_len){        len_4++;    }    // Връщаме резултат    return (len_4);}
Забележка: К'ви са тия работи??? Вземи прочети пак за return в C, да не изгърмиш с двойка при все старанието ти...
return printf("nn");

 

Относно забележката

void display(){ 	int c;	FILE *file_ptr1;	file_ptr1 = fopen( TEXT1 , "r");	printf("Sadarjanieto na text1.txt e:n");    while((c=getc(file_ptr1))!=EOF)		printf("%c",c);    fclose(file_ptr1);		printf("nn");}

 

Какъв аргумент трябва да сложа на функцията four_words? Дава ми грешка too few arguments in function call .

Как мога да изкарам самите думи на екрана ,не само броя им ?

Извинете ме ако питам тъпи въпроси , но съм съвсем начинаещ в програмирането .

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

Извинямам се, незнам дали трябва да пиша тук... трябва ми помощ за курсова задача по информатика на тема : за двумерен масив с N реда и М стълба да се намери и изведе сумата на елементите по схемата

 

5 знака хоризонтално и 4 знака вертикално

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

Какъв аргумент трябва да сложа на функцията four_words? Дава ми грешка too few arguments in function call .

Как мога да изкарам самите думи на екрана ,не само броя им ?

Извинете ме ако питам тъпи въпроси , но съм съвсем начинаещ в програмирането .

Относно първия въпрос: Функцията приема низ като аргумент и връща броя на думите с 4 букви в него - мислех ,че е ясно от условието и от обясненията. В другите си функции(nword и lword), ти прочиташ първо файла в един голям низ, и после го обработваш. Е, по същия начин може да направиш трета функция, пак да си прочетеш така файла и с прочетения низ, да извикаш функцията, която ти написах, след това да изпечаташ това което връща като резултат.

Вторият въпрос. Ами виждаш как функцията ми добавя по 1 към една променлива за всяка буква, която открие. Промени кода така, че вместо това, да добавя поредната буква към един низ, който отначало и на първата не-буква правиш празен.

 

 

Извинямам се, незнам дали трябва да пиша тук... трябва ми помощ за курсова задача по информатика на тема : за двумерен масив с N реда и М стълба да се намери и изведе сумата на елементите по схемата

 

5 знака хоризонтално и 4 знака вертикално

Тук трябва, ама първо трябва да прочетеш това и това.

Относно първия въпрос: Функцията приема низ като аргумент и връща броя на думите с 4 букви в него - мислех ,че е ясно от условието и от обясненията. В другите си функции(nword и lword), ти прочиташ първо файла в един голям низ, и после го обработваш. Е, по същия начин може да направиш трета функция, пак да си прочетеш така файла и с прочетения низ, да извикаш функцията, която ти написах, след това да изпечаташ това което връща като резултат.

Вторият въпрос. Ами виждаш как функцията ми добавя по 1 към една променлива за всяка буква, която открие. Промени кода така, че вместо това, да добавя поредната буква към един низ, който отначало и на първата не-буква правиш празен.

По разрових се в интернет и открих тези две библиотеки <stddef.h> и <ctype.h>.

Нещо не извиквам провилно функцията four_words .Защото не изкарва нищто .

#include "stdafx.h"#include <stdlib.h>#include <string.h>#include <ctype.h>#include <stddef.h>#define TEXT "text.txt"#define	TEXT1 "text1.txt"int menu();int entertext();int nword();int lword();void copytext();int display();void four_words(char *s);int _tmain(int argc, _TCHAR* argv[]){		int i;	FILE *file_ptr;    file_ptr=fopen(TEXT,"r");	char c[500];	fgets(c, 500, file_ptr);		while(1) 	{		i=menu();		  switch (i)		  {			case 1:entertext();			break;			case 2:nword();lword();four_words(c); 			break;   			case 3:copytext();			break; 			case 4:display();			break;  			case 5:exit(0);			default: printf("nNevaliden izbornn");			break;		  } 	}  	return 0;}int menu(){	int i,choice;	  printf("**************************************************");	  printf("n*                      MENU                      *");	  printf("n*                                                *");	  printf("n* 1.Vavedete tekst                               *");	  printf("n* 2.Statisticheska obrabotka na teksta           *");	  printf("n* 3.Zapisvane na dumite na nov red               *");	  printf("n* vav fail text1.txt                             *");	  printf("n* 4.Izvejdane na sadarjanieto na text1.txt       *");	  printf("n* 5.Krai na rabotata s programata                *");	  printf("n*                                                *");	  printf("n**************************************************");	  printf("nnNapravete izbor:");	  scanf ("%d", &choice);	  printf("n");	return choice;}int entertext(){	int c;	FILE *file_ptr;	file_ptr = fopen(TEXT,"wb");	printf("Vavedete teksta(do vavejdaneto na CTRL/Z).nDumite otdeliate sas interval ili '.':n");			while ((c = getchar()) != 0x1a)				{ 					putc(c, file_ptr);			 				}											fclose(file_ptr);	return  printf("nTeksta e zapazen vav fail text.txtnn");}int nword(){  	int c,nw,state;	FILE *file_ptr;    file_ptr=fopen(TEXT,"r");  	        		state =0;		 nw =  0;		while ((c = fgetc(file_ptr))!= EOF) {			if (c == ' ' || c == '.' )			state = 0;			else if (state ==0) {			state = 1;			++nw;			}  		}		     fclose(file_ptr);  	return printf("Broia dumi e %d.nn",nw);}int lword(){	char a[500],b[200],c[200];	int i,j=0,l=0;	FILE *file_ptr;    file_ptr=fopen(TEXT,"r");	while(fgets(a,500,file_ptr)!=NULL){		for(i=0;i<=strlen(a);i++)		{			if(a[i]!=' ' && a[i]!='.' && a[i]!='0')				b[j++]=a[i];			else{				b[j]='0';							if(strlen(b)>l)				 {					strcpy(c,b);					l=strlen(b);				 }				 j=0;			}		}	}	fclose(file_ptr);	return printf("Nai-dalgata duma e %s.nn",c) ;}void copytext(){	int c=0;	FILE *file_ptr;	FILE *file_ptr1;	file_ptr=fopen(TEXT,"r");	file_ptr1=fopen(TEXT1,"w");	       	while ((c = fgetc(file_ptr))!= EOF) {		if(c==' ' || c=='.' )			fputc('n',file_ptr1);		else			 fputc(c,file_ptr1);     }		     fclose(file_ptr);         fclose(file_ptr1);	 printf ("Sadarjanieto na text.txt e zapisano v text1.txt.n");}int display(){ 	int c=0;	FILE *file_ptr1;	file_ptr1 = fopen( TEXT1 , "r");	printf("Sadarjanieto na text1.txt e:n");    while((c=getc(file_ptr1))!=EOF)		printf("%c",c);     fclose(file_ptr1);		return c;}void four_words(char *s){ 		char *p = s;	char *start;	ptrdiff_t len; 		while (*p) {		  		while (*p && isspace(*p))     			++p;		start = p;				while (*p && !isspace(*p))      			++p;		        		len = p - start;		if (len == 4) {			    			printf("%.*sn", len, start);       		}	}	}

 

 Пробвах отделно и работеше.

#include "stdafx.h"#include <ctype.h>#include <stddef.h>#include <stdio.h>int main(){	char *s = "Tova e programa koiato izkarva vsichki dumi s 4 bukvi dada dada";	char *p = s;	char *start;	ptrdiff_t len; 	while (*p) {		  				while (*p && isspace(*p))       			++p;		start = p; 				while (*p && !isspace(*p))      			++p;		        		len = p - start;		if (len == 4) {			   			printf("%.*sn", len, start);        }	}	return 0;}

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

Здравейте. Искам малко помощ за курсовата си задача по С++. И по-точно как да организирам класовете. Това е условието. Въпросът ми е за удебелената част от условието.

 

Да се дефинира базов клас за студент зададен с име, факултетен номер, номер на група и курс. Да се дефинира производен клас за успех зададен с динамичен масив от оценките по всички дисциплини до момента (дължината на масива зависи от курса – счита се, че за семестър броят на оценките е 5). Класовете да включват  конструктори без параметри за попълване на член -променливите в диалог. Да се определят и извеждат средният  успех за всеки студент и максималния среден успех за зададена група. Да се извежда пълната информация за всеки студент и за студент, зададен с факултетния си номер. Да се предефинира операцията <<, която да се  използва за извеждане на данните. Данните да се съхраняват във файл.

 

Това е моята структура на кода за начало

#include <stdafx.h>#include <iostream>#include <string>#include <vector>#include <list>using namespace std;class student{	string name;	int fnum;	int group;	int course;public:	student();	string get_name() {return name;}	int get_num()     {return fnum;}	int get_group()   {return group;}	int get_course()  {return course;}	void show();};student::student(){	cout<<"Enter name: ";	cin>>name;	cout<<"Enter fnum: ";	cin>>fnum;	cout<<"Enter group: ";	cin>>group;	cout<<"Enter course: ";	cin>>course;}class uspeh : public student{	vector<int> v;public:		uspeh() : student()	{ 		int p;		for(int i=1; i<6; i++)		{		    cout<<"Vuvedede ocenka po predmet nomer "<<i<<": ";			cin>>p;			v.push_back(p);		}	}};class students : public uspeh{	list<student> lst;public:};

 

Мисля да го направя като въведа име първо да провери има ли досега такъв. Ако няма добавям нов, ако има добавям само оценки(не съм сигурен като код как трябва да стане). 

И последният ми въпрос е: трябва ли да използвам списък в тази задача?

По разрових се в интернет и открих тези две библиотеки <stddef.h> и <ctype.h>.
Иииии за какво са ти?
Нещо не извиквам провилно функцията four_words .Защото не изкарва нищто .
Мда... все пак тя очаква: първо в c да има нещо смислено - помисли какво има във файла когато прочиташ c..., та ти дори не си писал още в него. Отделно, като отваряш файл, е хубаво и да го позатваряш от време на време, преди да го отвориш пак... Второ, като върне резултат, някой да направи нещо с него; например:  
    int words;    words = four_words( c );    cout << "Words with 4 letters: " << words << endl;
Здравейте. Искам малко помощ за курсовата си задача по С++. И по-точно как да организирам класовете. Това е условието. Въпросът ми е за удебелената част от условието. ... Мисля да го направя като въведа име първо да провери има ли досега такъв. Ако няма добавям нов, ако има добавям само оценки(не съм сигурен като код как трябва да стане). И последният ми въпрос е: трябва ли да използвам списък в тази задача?
Значи, за бой са тези, които съставят такива задачи... Това е направо ужасно... Издъно погрешно е, да се създава клас "Успех", като наследяващ клас на "Студент". Идеята на наследяването е уеднаквяване на интерфейс. Тоест наследника трябва да е "вид наследен". "Успех"-ът да не е вид "Студент"? Това само в интерес на теорията... Очевидно е, че за теб няма да е приемливо, да спориш с преподавателя си, макар че, аз в този случай бих. Това е все едно да те учи че 2 + 2 = 5... Правилно, примерно, би било да има наследници от рода на "Студент по икономика" "Студент по нещо-си-друго" т.н, в базовия клас да има методи за среден успех и изкарване на данни, които да се предефинират от наследниците в зависимост от предметите... Сега, по задачата, приемаме че ще се водие по акъла на автора - ами, както е зададена - си изпълнил правилно класовете, с една забележка: Клас students - няма смисъл да правиш клас студенти, само заради контейнера. После, като контейнера е от студенти, няма да можеш да достъпваш полетата от uspeh (което очевидно доказва колко идиотска е задачата) Направи си просто един контейнер studenti от uspeh. Дали трябва да е списък - зависи от преподавателя ти. Но чисто технически динамичен масив е или нещо от рода на :
int n;// тук някъде въвеждаш колко е nuspeh *students = new uspeh(n)// накраяdelete[] students;
или вектор.

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

^^^ Да, условието е изключително глупаво, което ме обърква допълнително. 

Благодаря за съветите. :) 

  • 2 седмици по-късно...

Здравейте!

От няколко дена се мъча над няколко задачи,но така и не достигах до решение.

Ако е възможно моля ви за помощ.

 

 

 

1.http://prikachi.com/images/602/5696602a.jpg

 

 

#include<stdio.h>
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#define OVER 1



char Num_Gen(void)
{  char gen;
 srand (time(NULL) );
 gen = rand() % 1000 + 1;
 return gen;

}


void main()
{
 int sum,zalog,counter;
 counter=Num_Gen();

 do{
   do{
   cout<<"n Enter money to play the game(max 200 levas) :";
   cin>>sum;}while(sum<1 || sum>200);
   do{
   cout<<"n Enter amount of money for the current round(0 to 10) :";
   cin>>zalog;}while(zalog<1 || zalog>10);
 
   if(counter == 000){
   cout<<"n You Won!";

   }
   if(counter == 111){
   cout<<"n You Won!";
   sum+=zalog;
   cout<<"n You have(levas) :"<<sum;
   cin>>sum;
   }
   if(counter == 222){
   cout<<"n You Won!";
   sum+=zalog;
   cout<<"n You have(levas) :"<<sum;
   cin>>sum;
   }
   if(counter == 333){
   cout<<"n You Won!";
   sum+=zalog;
   cout<<"n You have(levas) :"<<sum;
   cin>>sum;
   }
   if(counter == 444){
   cout<<"n You Won!";
   sum+=zalog;
   cout<<"n You have(levas) :"<<sum;
   cin>>sum;
   }
   if(counter == 555){
   cout<<"n You Won!";
   sum+=zalog;
   cout<<"n You have(levas) :"<<sum;
   cin>>sum;
   }
   if(counter == 666){
   cout<<"n You Won!";
   sum+=zalog;
   cout<<"n You have(levas) :"<<sum;
   cin>>sum;
   }
   if(counter == 777){
   cout<<"n You Won!";
   sum+=zalog;
   cout<<"n You have(levas) :"<<sum;
   cin>>sum;
   }
   if(counter == 888){
   cout<<"n You Won!";
   sum+=zalog;
   cout<<"n You have(levas) :"<<sum;
   cin>>sum;
   }
   if(counter == 999){
   cout<<"n You Won!";
   sum+=zalog;
   cout<<"n You have(levas) :"<<sum;
   cin>>sum;
   }
   else {
   cout<<"n You Lost!";
   sum-=zalog;
   cout<<"n You have(levas) :"<<sum<<endl;
   cin>>sum;
   }
   
 }while(sum<OVER);
 getch();
 
}

 

 

 

 

2.При тази задача имам проблем в изчистването на грешките.При компилиране ми дава 5 грешки във функциите.

 

 

 

#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 30

FILE *fp;

void load();
void save();
int menu();
void enter();
void display(int n);
void search();
void list();


struct student
{    char name[20];
   char fn[10];
   float sru;
}st[MAX];
int top=0;


void main()
{
 int choice;
 load();
 do{
 choice=menu();
 switch(choice)
 {
 case 1:enter();save();break;
 case 2:search();
 case 3:list();
}}while(choice!=3);
}



int menu()
{int ch;
cout<<"nt Menu";
cout<<"n 1.Vuvedi danni:";
cout<<"n 2.Tursi po fak nomer:";
cout<<"n 3.Spisuk:";
cout<<"n 4.Izhod";
do{cout<<"n Izberi:";
cin>>ch;}while(ch<1 || ch>3);
return(ch);
}




void enter()
{int cnt=0,i,ost=MAX-top;
if(ost>0){
 cout<<"n Ostavat za vuvejdane"<<ost;
 do{cout<<"n Kolko novi studenta:";
 cin>>cnt;}while(cnt<0 || cnt>ost);
 for(i=top;i<top+cnt;i++)
 {cout<<"n Ime:";cin>>st.name;
 cout<<"n Fakulteten nomer:";
 cin>>st.fn;
 cout<<"n Sreden uspeh:";cin>>st.sru;
}top=i;}else
cout<<"n Nqma mqsto v grupata";



void display(int n)

{
 cout<<st[n].name<<endl;
cout<<st[n].fn<<endl;
cout<<st[n].sry<<endl;
}





void search(void)

{
 int found=0;
 char fnom[10];
 cout<<"n Vuvedete tursen fakulteten nomer";
 cin>>fnom;
 for(i=0;i<top;i++)
 {if(!strcmp(fnom,st.fn))}
   {display(i);found=1;}
   if(!found)cout<<"n Nqma otkrit student";
}


void load()
{
 if((fp==fopen("my.dat","rb"))==NULL)return;
 fread(&top,sizeof top,1,fp)!=1)
 {cout<<"n Greshka pri chetene";exit(1);}
 if(fread(st,sizeof st,1,fp)!=1)
 {cout<<"n Greshka pri chetene na masiva";exit(1);}
 fclose(fp);
}




void save()

{
 if(fopen("my.dat","wb"))==NULL)
 {
   cout<<"n Greshka pri otvarqne na:";exit(1)};
   if(fwrite(&top,sizeof top,1,fp)!=1)
   {cout<<"n Greshka pri zapis";exit(1);}
   if(fwrite{st,sizeof st,1,fp)!=1)
   {cou<<"n Greshka pri zapis";exit(1);}
   fclose(fp);
 }
}


void list()
{
 for(int i=0;i<top;i++)
 display(i);
}
}
 

 

И двете програми са писани на Visual Studio 6.0.

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

Здравейте!

От няколко дена се мъча над няколко задачи,но така и не достигах до решение.

Ако е възможно моля ви за помощ.

 

И двете програми са писани на Visual Studio 6.0.

За първата програма. Не трябва толкова рано да вземаш произволно число и първият ти цикъл е грешен. Трябва да е след този за въвеждане на сумата - тоест идеята е:

въвеждаш обща сума - както си го направил.

в цикъл (докато има пари)

 питаш за залог - както си го направил

 в цикъл (докато потребителя не натисне клавиш (това как ще го реализираш зависи как са ви учили)) вземаш произволно число и го печаташ

проверяваш дали числото има 3 еднакви цифри и актуализираш сумата.

Това е.

За втората програма: функцията enter няма една затваряща скоба. във функцията display си написал член sry,вместо sru, във функцията search трябва да си дефинираш i и след първия if затварящата скоба е грешна, а for-a пък няма. Във функцията load, нещо си изтървал един if преди fread. във функцията save, скобите и кръгли, и фигурни са слагани, както ти падне - оправи за всяка отваряща, да има затваряща на правилно място... след функцията list има излишна скоба - бе повечко са от 5...

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

1.Дадена е матрицата A(M,N). Пресметнете произведението на елементите без тези от j-тия стълб. 2.Даден е масив и числото В. Определете най-малкия елемент от масива, който е по-голям от числото В. ако може да помогнете с тези двете програми....

Здравейте, много спешно ми трябва помощ за курсова работа. Заданието ми е следното: Да се напише програма, която: Получава целочислен масив от 100 елемента и извежда на екрана въведения масив. Записва в масив1 максималното от всеки 2 числа, а в масив2 индексите на тези числа. Сортира в нарастващ ред масив1. Индексите записани в масив2 да бъдат на същите позиции, както съответстващите им числа в масив1. Програмата да има текстово меню, от което потребителят да избира дали да въвежда масив или да обработва вече въведен такъв. Мерси, дано се намери някой да помогне, че е много кофти положението.

Моля за малко помощ за една задача:

 

Да се дефинира базов клас за студент зададен с име, факултетен номер, номер на група и курс. Да се дефинира производен клас за успех зададен с динамичен масив от оценките по всички дисциплини до момента (дължината на масива зависи от курса – счита се, че за семестър броят на оценките е 5). Класовете да включват  конструктори без параметри за попълване на член -променливите в диалог. Да се определят и извеждат средният  успех за всеки студент и максималния среден успех за зададена група. Да се извежда пълната информация за всеки студент и за студент, зададен с факултетния си номер. Да се предефинира операцията <<, която да се  използва за извеждане на данните. Данните да се съхраняват във файл.

 

Всичко работи, но имам проблем с менюто в main();

Kогато натисна 1 за да добавя Студент, програмата не ме изчаква да му въведа името, а продължава със следващата функция(явно нещо остава в буфера) . Ако пък в менюто напиша getline(cin,choice), вместо cin<<choice , се въвеждат правилно но пак остава нещо в буфера и менюто излиза 2пъти

Може ли малко помощ как с минимални промени да я оправя.(Казаха ми да преобразувам всички cin>> конструкции в getline, но не ми изглежда добре)

VS 2008

#include <iostream>#include <vector>#include <string>#include <ctime>#include <new>#include <fstream>using namespace std;class Student{	string name;	int fnum;	int group;	int course;public:	Student();	~Student() { cout << "Destructing!" << endl; }	int writeStudentsIntoFile();	void setName();	string getName(){return name;}		void setFnum();	int getFnum(){return fnum;}		void setGroup();	int getGroup(){return group;}		void setCourse();	int getCourse(){return course;}};Student::Student(){	setName();	setFnum();	setGroup();	setCourse();}void Student::setName(){        cout<<"Vuvedete ime: ";	getline(sin, name);}void Student::setFnum(){	cout<<"Vuvedete f. nomer: ";	cin>>fnum;}void Student::setGroup(){	cout<<"Vuvedete grupa: ";	cin>>group;}void Student::setCourse(){	cout<<"Vuvedete curs: ";	cin>>course;}class Ocenki: public Student{	vector <int> ocenkii;	static vector<Ocenki*> students;public:	Ocenki();	~Ocenki(){ cout << "Destructing!" << endl; }	void setOcenki();	static void sr_uspeh();	static int addStudent();		friend void max_uspeh();    friend void showInfoForStudent();	friend ostream &operator<<(ostream &stream, Ocenki &ob);	friend int writeStudentsIntoFile();    friend void showInfo();};vector<Ocenki*>Ocenki::students;vector <int> ocenkii;void Ocenki::setOcenki(){	int a;	unsigned int z=2*5*getCourse();	while(ocenkii.size() < z )	{		cout<<"Vuvedete ocenki: ";		cin>>a;		ocenkii.push_back(a);	}}Ocenki::Ocenki():Student(){	setOcenki();}int Ocenki::addStudent(){	Ocenki *ob;	try{		ob = new Ocenki;		Ocenki::students.push_back(ob);		return 0;	}	catch(bad_alloc ba) {		cout << "Allocation failure." << endl;		return 1;	}}//namira sredniq uspeh na vseki studentvoid Ocenki::sr_uspeh(){		if(Ocenki::students.size() == 0) 	{		cout << "Students array is empty." << endl;		return;	}	for(unsigned int i=0; i<Ocenki::students.size(); i++)	{		double m=0;		for(unsigned int j=0; j<Ocenki::students[i]->ocenkii.size(); j++)		{			m+= students[i]->ocenkii[j];		}		cout<<"Sredniq uspeh na student "<<i<<" e: "<< m/(double) Ocenki::students[i]->ocenkii.size();			}}//namira maximalniq sreden uspehvoid max_uspeh(){ 	int n;	double max=0;	if(Ocenki::students.size() == 0) 	{		cout << "Students array is empty." << endl;		return;	}	cout<<"Vuvedete grupa: ";	cin>>n;	for(unsigned int i=0; i<Ocenki::students.size(); i++)	{		if(Ocenki::students[i]->getGroup() == n)		{			double m=0;			for(unsigned int j=0; j<Ocenki::students[i]->ocenkii.size(); j++)			{				m+=Ocenki::students[i]->ocenkii[j];			}			if(max<m/(double)Ocenki::students[i]->ocenkii.size())				max=m/(double)Ocenki::students[i]->ocenkii.size();		}	}	cout<<"Maksimalniq sreden uspeh v "<<n<<" grupa e: "<<max;}//informaciq za vsi4ki studentivoid showInfo(){	for(unsigned int i=0; i<Ocenki::students.size(); i++)	{		cout<<"n Ime: "<<Ocenki::students[i]->getName()<<"n Fakulteten nomer: "<<Ocenki::students[i]->getFnum()<<"n Kurs: "<<Ocenki::students[i]->getCourse();		cout<<"n Grupa: "<<Ocenki::students[i]->getGroup();		for (unsigned int j=0; j<Ocenki::students[i]->ocenkii.size(); j++)		{			cout<<"n"<<Ocenki::students[i]->ocenkii[j];		}	}}//Informaciq za konkreten studentvoid showInfoForStudent(){	int n;	cout<<"Vuvedete fakulteten nomer: ";	cin>>n;	for(unsigned int i=0; i<Ocenki::students.size(); i++)	{		if(Ocenki::students[i]->getFnum()==n)		{			cout<<"n Ime: "<<Ocenki::students[i]->getName()<<"n Fakulteten nomer: "<<Ocenki::students[i]->getFnum()<<"n Kurs: "<<Ocenki::students[i]->getCourse();			cout<<"n Grupa: "<<Ocenki::students[i]->getGroup();			for(unsigned j=0; j<Ocenki::students[i]->ocenkii.size() ;j++)			{				cout<<"n Ocenkata po predmet nomer "<<j+1<<" e "<<Ocenki::students[i]->ocenkii[j];			}		}	}}ostream &operator<<(ostream &stream, Ocenki &ob){	stream << "Ime: " << ob.getName() << endl;	stream << "F.nomer: "<< ob.getFnum() << endl;	stream << "Kurs: "<< ob.getCourse() << endl;	stream << "F.nomer: "<< ob.getGroup() << endl;	for(unsigned int i = 0; i < ob.ocenkii.size(); i++)	{		stream << ob.ocenkii[i] << endl;	}	return stream;}int writeStudentsIntoFile(){	if(Ocenki::students.size() == 0) {		cout << "Students array is empty." << endl;		return 1;	}		ofstream out("students.txt");	if(!out) {		cout << "Cannot open output file." << endl;		return 1;	}	for(unsigned int i=0; i < Ocenki::students.size(); i++)	{		out << *Ocenki::students[i];		out << "n";	}	return 0;}int main(){	string choice;	int ch;	while(true) {		cout << "n----------------------------- MENU -----------------------------" << endl;		cout << "1. Dobavi student." << endl;		cout << "2. Show result of execution of the predefined opeartor <<." << endl;		cout << "3. Zapazi studentite vuv fail." << endl;		cout << "4. Izvejdane na informaciq za vsi4ki studenti." << endl;		cout << "5. Izvejdane na informaciq za konkreten student." << endl;		cout << "6. Izvejdane na sredeniq uspeh na vseki student." << endl;		cout << "7. Izvejdane na nai-visokiq sreden uspeh za zadadena grupa." << endl;		cout << "Type "quit" for exit." << endl;		cout << "----------------------------------------------------------------" << endl;		cout << "Enter your choice: ";		cin>>choice;		if(choice == "quit") break;		ch = atoi(choice.c_str());		switch(ch) {		case 1: {			if(!Ocenki::addStudent())				cout << "Student successfully added!" << endl;			else cout << "Student wasn't added!" << endl;				}			break;		case 2: {			Ocenki ob;			cout << "Showing information about student using <<." << endl;			cout << ob;				}			break;		case 3: {			if(!writeStudentsIntoFile())				cout << "Students successfully writed into file!" << endl;			else cout << "Students unsuccessfully writed into file!" << endl;				break;				}		case 4: {			showInfo();			break;				}		case 5: {			showInfoForStudent();				break;				}		case 6: {			Ocenki::sr_uspeh();				break;				}		case 7: {			max_uspeh();			break;				}		default: cout << "Wrong choice!" << endl;		}	};	return 0;}	

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

Моля за малко помощ за една задача:

 

 

Всичко работи, но имам проблем с менюто в main();

Kогато натисна 1 за да добавя Студент, програмата не ме изчаква да му въведа името, а продължава със следващата функция(явно нещо остава в буфера) . Ако пък в менюто напиша getline(cin,choice), вместо cin<<choice , се въвеждат правилно но пак остава нещо в буфера и менюто излиза 2пъти

Може ли малко помощ как с минимални промени да я оправя.(Казаха ми да преобразувам всички cin>> конструкции в getline, но не ми изглежда добре)

VS 2008

....

 

getline чете абсолютно всичко , включително и знак за нов ред 'n'  След като въведеш 1 и натиснеш Ентер за въвеждане на нов студент , знакът за нов ред се буферира, и getline(cin,choice) чете точно този знак за нов ред.  Може да го оправиш като си декларираш една променлива от тип char , и да четеш знака за новия ред с тази променлива:

 

#include <iostream>#include <vector>#include <string>#include <ctime>#include <new>#include <fstream>using namespace std;class Student{string name;int fnum;int group;int course;public:Student();~Student() { cout << "Destructing!" << endl; }int writeStudentsIntoFile();void setName();string getName(){return name;}void setFnum();int getFnum(){return fnum;}void setGroup();int getGroup(){return group;}void setCourse();int getCourse(){return course;}};Student::Student(){setName();setFnum();setGroup();setCourse();}void Student::setName(){char c;cin.get(c);cout<<"Vuvedete ime: ";getline(cin, name);}void Student::setFnum(){cout<<"Vuvedete f. nomer: ";cin>>fnum;}void Student::setGroup(){cout<<"Vuvedete grupa: ";cin>>group;}void Student::setCourse(){cout<<"Vuvedete curs: ";cin>>course;}class Ocenki: public Student{vector <int> ocenkii;static vector<Ocenki*> students;public:Ocenki();~Ocenki(){ cout << "Destructing!" << endl; }void setOcenki();static void sr_uspeh();static int addStudent();friend void max_uspeh();friend void showInfoForStudent();friend ostream &operator<<(ostream &stream, Ocenki &ob);friend int writeStudentsIntoFile();friend void showInfo();};vector<Ocenki*>Ocenki::students;vector <int> ocenkii;void Ocenki::setOcenki(){int a;unsigned int z=2*5*getCourse();while(ocenkii.size() < z ){cout<<"Vuvedete ocenki: ";cin>>a;ocenkii.push_back(a);}}Ocenki::Ocenki():Student(){setOcenki();}int Ocenki::addStudent(){Ocenki *ob;try{ob = new Ocenki;Ocenki::students.push_back(ob);return 0;}catch(bad_alloc ba) {cout << "Allocation failure." << endl;return 1;}}//namira sredniq uspeh na vseki studentvoid Ocenki::sr_uspeh(){if(Ocenki::students.size() == 0) {cout << "Students array is empty." << endl;return;}for(unsigned int i=0; i<Ocenki::students.size(); i++){double m=0;for(unsigned int j=0; j<Ocenki::students[i]->ocenkii.size(); j++){m+= students[i]->ocenkii[j];}cout<<"Sredniq uspeh na student "<<i<<" e: "<< m/(double) Ocenki::students[i]->ocenkii.size();}}//namira maximalniq sreden uspehvoid max_uspeh(){ int n;double max=0;if(Ocenki::students.size() == 0) {cout << "Students array is empty." << endl;return;}cout<<"Vuvedete grupa: ";cin>>n;for(unsigned int i=0; i<Ocenki::students.size(); i++){if(Ocenki::students[i]->getGroup() == n){double m=0;for(unsigned int j=0; j<Ocenki::students[i]->ocenkii.size(); j++){m+=Ocenki::students[i]->ocenkii[j];}if(max<m/(double)Ocenki::students[i]->ocenkii.size())max=m/(double)Ocenki::students[i]->ocenkii.size();}}cout<<"Maksimalniq sreden uspeh v "<<n<<" grupa e: "<<max;}//informaciq za vsi4ki studentivoid showInfo(){for(unsigned int i=0; i<Ocenki::students.size(); i++){cout<<"n Ime: "<<Ocenki::students[i]->getName()<<"n Fakulteten nomer: "<<Ocenki::students[i]->getFnum()<<"n Kurs: "<<Ocenki::students[i]->getCourse();cout<<"n Grupa: "<<Ocenki::students[i]->getGroup();for (unsigned int j=0; j<Ocenki::students[i]->ocenkii.size(); j++){cout<<"n"<<Ocenki::students[i]->ocenkii[j];}}}//Informaciq za konkreten studentvoid showInfoForStudent(){int n;cout<<"Vuvedete fakulteten nomer: ";cin>>n;for(unsigned int i=0; i<Ocenki::students.size(); i++){if(Ocenki::students[i]->getFnum()==n){cout<<"n Ime: "<<Ocenki::students[i]->getName()<<"n Fakulteten nomer: "<<Ocenki::students[i]->getFnum()<<"n Kurs: "<<Ocenki::students[i]->getCourse();cout<<"n Grupa: "<<Ocenki::students[i]->getGroup();for(unsigned j=0; j<Ocenki::students[i]->ocenkii.size() ;j++){cout<<"n Ocenkata po predmet nomer "<<j+1<<" e "<<Ocenki::students[i]->ocenkii[j];}}}}ostream &operator<<(ostream &stream, Ocenki &ob){stream << "Ime: " << ob.getName() << endl;stream << "F.nomer: "<< ob.getFnum() << endl;stream << "Kurs: "<< ob.getCourse() << endl;stream << "F.nomer: "<< ob.getGroup() << endl;for(unsigned int i = 0; i < ob.ocenkii.size(); i++){stream << ob.ocenkii[i] << endl;}return stream;}int writeStudentsIntoFile(){if(Ocenki::students.size() == 0) {cout << "Students array is empty." << endl;return 1;}ofstream out("students.txt");if(!out) {cout << "Cannot open output file." << endl;return 1;}for(unsigned int i=0; i < Ocenki::students.size(); i++){out << *Ocenki::students[i];out << "n";}return 0;}int main(){string choice;int ch;while(true) {cout << "n----------------------------- MENU -----------------------------" << endl;cout << "1. Dobavi student." << endl;cout << "2. Show result of execution of the predefined opeartor <<." << endl;cout << "3. Zapazi studentite vuv fail." << endl;cout << "4. Izvejdane na informaciq za vsi4ki studenti." << endl;cout << "5. Izvejdane na informaciq za konkreten student." << endl;cout << "6. Izvejdane na sredeniq uspeh na vseki student." << endl;cout << "7. Izvejdane na nai-visokiq sreden uspeh za zadadena grupa." << endl;cout << "Type "quit" for exit." << endl;cout << "----------------------------------------------------------------" << endl;cout << "Enter your choice: ";cin>>choice;if(choice == "quit") break;ch = atoi(choice.c_str());switch(ch) {case 1: {if(!Ocenki::addStudent())cout << "Student successfully added!" << endl;else cout << "Student wasn't added!" << endl;}break;case 2: {Ocenki ob;cout << "Showing information about student using <<." << endl;cout << ob;}break;case 3: {if(!writeStudentsIntoFile())cout << "Students successfully writed into file!" << endl;else cout << "Students unsuccessfully writed into file!" << endl;break;}case 4: {showInfo();break;}case 5: {showInfoForStudent();break;}case 6: {Ocenki::sr_uspeh();break;}case 7: {max_uspeh();break;}default: cout << "Wrong choice!" << endl;}};return 0;}

Здравейте, бихте ли ми помогнали с ето тази задача, защото нямам понятие от база данни , а и  това, че C++ да се използва кода му в базата данни. До сега не съм се занимавал с програми които да обслужват бази данни. Изучвал съм до циклите "do while" и т.н. и не знам откъде да започна. 

 

 

Напишете програма,която обслужва Sql база данни (insert,select,update,delete), която съдържа произволни продукти (наименование, вид, цена). Програмата да изпълнява следните задачи: Да въвежда нов продукт. Да се провери дали съществува вече такъв запис. Ако съществува – да изведе съобщение, че този продукт вече съществуват в системата. Ако не съществува – да ги въведе в базата данни. Да извежда средно аритметично от цените на продуктите в базата данни по тип. Да има възможност за редактиране на продукт. Езика за програмиране: за предпочитане С,С++,C# или Java, по възможност ООП. Базата данни – MySql.

Моля ви помогнете ми с следната задача...

 

Да се състави програма за обработка на масива A[N,N],където данните са цели числа в интервала [-500;1000].Програмата да извърши следните действия:

*отпечатване на условието на задачата;

*отпечатване на имената на автора на програмата; *въвеждане на входните данни; *отпечатване на входните данни; *а)да се образува едномерен масив C[N],елементите на който са минималните елементи от вкяка колона на масива А; *б)полученият масив да се сортира по големина; *отпечатване на получените резултати след обработка а) и след обработка б)

 

Опитвах не веднъж да я направя,но изобщо не ми е понятна програмата "dev-c++" затова наистина ви моля помогнете ако можете :)

 

Благодаря предварително!!!

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

След като прегледах всички мнения си помислих дали няма да ми се смеете  ако бих помолил някои да  постне обикновен часовник на ц++.  :)

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

  • 2 седмици по-късно...

Здравейте,
трябва да направя курсова работа на C++, но проблема е че нищо не разбирам от програмиране. Започнах да я правя, но без успех. Стигнах до тук:
#include <iostream.h>
int main()
{
int a[5],i;
for(i=1;i<=5;i++)
{
cout<<"a["<<i<<"]=";
cin>>a;
}

return 0;
}

условието е: В едномерен масив да се въведат стойности естествени числа. Да се създаде и изведе масив, съдържащ само елементите с нечетен индекс които са четни числа.

Ще бъда много благодарен, ако някой ми помогне!

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

Имам нужда от помощ. С тия задачи на C++ много не се разбираме и ще съм много благодарна ако някой ми помогне :( трябва да се направи блок схема и да се реши задачата :(  Задачата е: В едномерен масив да се въведе стойности, естествени числа. Всички четни елементи на масива, разположени преди елемента с минимална стойност, да се умножат с тази стойност.Предполага се, че този елемент е единствен. Да се изведе новият масив.

Това е задачата. Благодаря предварително.

P.S. Това ми е курсовата задача

Редактирано от Мария Иванова_184846 (преглед на промените)

Имам нужда от помощ. С тия задачи на C++ много не се разбираме и ще съм много благодарна ако някой ми помогне :( трябва да се направи блок схема и да се реши задачата :( 

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

Това е задачата. Благодаря предварително.

P.S. Това ми е курсовата задача

 

 

Имам нужда от помощ. С тия задачи на C++ много не се разбираме и ще съм много благодарна ако някой ми помогне :( трябва да се направи блок схема и да се реши задачата :( 

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

Това е задачата. Благодаря предварително.

P.S. Това ми е курсовата задача

Със задачата ми помогнаха сега остана само блок схемата. Много моля за помощ. Благодаря предварително! :)

Ето я:

 

#include <iostream>
#include <iomanip>
 
using namespace std;
 
int main(void)
{
    int a[100];
    int n;
    int min=0;
    int i;
 
    do {
        cout<<"nKolko sa chislata? ";
        cin>>n;
    } while(n<1||n>100);
 
    for (i=0;i<n;i++){
        cout<<"nChisloto na "<<i<<" mqsto e ";
        cin>>a;
    }
 
    min=a[0];
    for(i=1;i<n;i++){
        if(a<min){
            min=a;
        }
    }
    cout << "Minimalnoto chislo e:" << min << endl;
 
    for(i=0;i<n;i++){
        if(a%2==0 && a[i+1]==min){
            a=a*min;
        }
    }
 
    cout << "Chislata sa" << endl;
    for(i=0;i<n;i++){
        cout<< a << endl;
    }
 
    return 0;
}

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

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

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

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

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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