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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

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

Featured Replies

Как да проверя дали въведенето е число тип инт?

Ако е да се запази ако не да се въведе наново. нещо идея си нямам

[*]Записваш входните данни в char масив или направо в string.

[*]Пускаш цикъл, който да обхожда всички елементи на масива. Целта му е да провери дали всички символи са валидни, т.е. цифрите от 0 до 9.

[*]Ако входните данни са валидни - конвертираш стринга в integer и го записваш в променлива.

[*]Ако входните данни са невалидни - изписваш грешка и въвеждаш отново.

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

Здравейте, трябва ми спешно задача, която демонстрира създаването на файлове с пряк достъп или по точно:
Да се създаде програма - информационна система за авиокомпания с която се въвеждат
-номер на полет
-местоназначение
-брой продадени билети
-цена на билет
-максимален брой места
Да се напишат функции за създаване на файл, за извеждане на цялата информация и функция за добавяне на данни. 
Мерси предварително ;]]

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

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

повтарящи се числа.

#include <stdio.h>#include <stdlib.h>#include <time.h>#define MaxRazmer 100    int mas[MaxRazmer];    void consecutivesNUM(int mas[], int razmer){     int f, s, t, br=0;        for (f = 0; f < razmer; f++)        for (s = 0; s < razmer; s++)            if (mas[f]+1==mas[s])                 for (t=0; t < razmer; t++)                     if (mas[s]+1==mas[t]) {                         printf("nFound 3 consecutive numbers #%dn", ++br);                                         printf("array[%d]=%dn", f, mas[f]);                         printf("array[%d]=%dn", s, mas[s]);                         printf("array[%d]=%dnn", t, mas[t]);                         }    if (br==0) printf("nNot found 3 consecutive numbersn");                         }int main () {    int i;    srand(time(NULL));    for (i=0; i<MaxRazmer; i++)         mas[i]=rand()%1000;    consecutivesNUM(mas, MaxRazmer);    system("pause");    return 0;}

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

 

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

повтарящи се числа.

#include <stdio.h>#include <stdlib.h>#include <time.h>#define MaxRazmer 100    int mas[MaxRazmer];    void consecutivesNUM(int mas[], int razmer){     int f, s, t, br=0;        for (f = 0; f < razmer; f++)        for (s = 0; s < razmer; s++)            if (mas[f]+1==mas[s])                 for (t=0; t < razmer; t++)                     if (mas[s]+1==mas[t]) {                         printf("nFound 3 consecutive numbers #%dn", ++br);                                         printf("array[%d]=%dn", f, mas[f]);                         printf("array[%d]=%dn", s, mas[s]);                         printf("array[%d]=%dnn", t, mas[t]);                         }    if (br==0) printf("nNot found 3 consecutive numbersn");                         }int main () {    int i;    srand(time(NULL));    for (i=0; i<MaxRazmer; i++)         mas[i]=rand()%1000;    consecutivesNUM(mas, MaxRazmer);    system("pause");    return 0;}

 

 

Получи се, благодаря. :)

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

Не си записах  условията,затова ще импровизирам:1)Въвежда се дума.След това число n(n<=30).Изписват се n на брой числа,който показват до коя буква да се замени с #.Ако въведеното число е по-голямо от броя на буквите в думата,да замени всички букви с #.

ВХОД :

AVATAR

3

1 4 8

ИЗХОД:

#VATAR

####AR

######

#include <iostream>#include <string>using namespace std;int main(){	string S;	getline(cin, S);	int a[30],n,i,m;	cin >> n;	m = S.size();	for (i = 0; i <= n; i++) cin >> a[i];	for (i = 0; i <= m; i++){		if (a[i] > m) S.replace(0, m, "#");		else S.replace(0, a[i], "#");		cout << S;	}	system("pause");	return 0;}
#include <iostream>#include <string)using namespace std;int main(){	string S,s1="";	getline(cin, S);	int i, m, n, p,max=0,A[10];	n = S.size();	for (i = 0; i <= n; i++){		while (S[i] = " "){			s1 = S.substr(0, i);			S.erase(0, i);			p = s1.size();			if (p >= max)  p = max;			s1 = "";		}	}		cout << max;		return 0;	} 

Не знам как да запаметя думите.Предполагам с масив?

2)Написани са няколко думи,разделени с интервал.Програмата да изведе най-дългата дума броят на буквите им.(Ако например най-дългата дума е 5 букви и има други 5-буквени,да изведе и тях).

ВХОД: qwer prst asd mn

Изход: 4

           qwer

           prst

ПС: Ако може да я направите с низове и масиви,защото това е изискването. 

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

...

Как правилно да поискаме помощ за C/C++

 

Приложете кода, който сте разработил до момента и ние ще Ви насочваме и помагаме.

 

Поздрави !

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

#include <iostream>#include <string>using namespace std;int main(){    string S;    getline(cin, S);    S += ' ';    int m=0, max=0;    for (int i = 0; i < S.size(); i++)         if (S[i]==' ') {            if (m > max) max=m;            m = 0;        } else m++;		    cout << max<<endl;    m = 0;    for (int i = 0; i  < S.size(); i++)         if (S[i]==' ') {            if (m == max)                 cout << S.substr(i-max, max)<<endl;            m = 0;        } else m++;    system("pause");    return 0;	}

[edit]

гледам че си пуснал и кода за първата задача, само дето и там имаш същия проблем - разваляш стринга S и 

програмата ти ще дава правилни резултати само ако числата в a[] нарастват 

#include <iostream>using namespace std;int main(){    string S;    getline(cin, S);    int n, m;    cin >> n;    for (int i = 0; i < n; i++){        cin >> m;	for (int j=0; j<S.size(); j++)	    cout<<((j<m)?'#':S[j]);        cout<<endl;    }    system("pause");    return 0;	} 

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

Мерси :) .Просто изискването от госпожата е да използваме низове и техните основни функции/сравняване,копиране.Затова по такъв начин се опитвам да ги напиша.

Ами увеличаваш размера на ffileNAME 

Иначе при fgets има колко символа максимално да зареди ама като отрежеш името няма гаранция че изобщо ще може да запише файла

      fgets(ffileNAME,50,stdin);      fflush(stdin);      ffileNAME[strlen(ffileNAME)-1]=0;
[edit]

@AxCx - само дето "лесното" си има цена - 20 килобайтова програмка на С набъбва с над 500 килобайта ако е на C++

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

Откриха ми пропуск. Ето ми я функцията, трябва да направя така, че да не ми запълни буфера и да крашне, ако се зададе име на файла повече от 50 символа.

 

Не знам защо използваш методи от класическото C, а не използваш file stream-овете от C++. Най-лесното за мен решение е просто да запазваш името на файла в string.

#include "stdafx.h"// добавяш следните библиотеки#include <iostream>#include <string>using namespace std;void PrintSaveFile(int arr[], int size){	FILE *pont;        // използваш string вместо char масив	string ffileNAME;	int i;	fflush(stdin);	printf("Set file name:");        // играе ролята на gets()	getline(cin, ffileNAME);	        // проверка за прекалено дълго име на файл	if (ffileNAME.length()>255)	{		printf("Error! The file name is too long (>255 symbols).");		return;	}	pont = fopen(ffileNAME.c_str(), "w");	if (pont == NULL)	{		printf("This file can't be openn");		return;	}	for (i = 0; i < size; i++)	{		fprintf(pont, "%dn", arr[i]);	}	fclose(pont);	printf("Saved!n");}

 

Мисля, че трябва да се получи както ined спомена с "fgets" - да се записва част от името, но нещо не мога да го напасна. Тия стрингове не съм ги ползвал  до сега и не ги умея, затова и не ги използвам.

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

Мисля, че трябва да се получи както ined спомена с "fgets" - да се записва част от името, но нещо не мога да го напасна. Тия стрингове не съм ги ползвал  до сега и не ги умея, затова и не ги използвам.

Като ще се пише на C++ ги както ти предложиха ползвай iostream и fstream и после просто ползваш стандартните потоци cin/cout и файла, като пренасочваш стринговете, които ти трябват с << .Примерни в нета колкото искаш точно за такива ротинни задачи.

scanf("%49s", &fileName); fflush(stdin);

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

Другия вариант е с fgets, там може да има и интервали в името но трябва да махнеш символа за нов ред ако символите са които са въведени за името са по-малко от 49

      fgets(fileName,50,stdin);      fileName[strlen(fileName)-1]=0;      fflush(stdin); 

.

 

 

 

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

http://prikachi.com/images.php?images/279/7555279E.jpghttp://prikachi.com/images.php?images/282/7555282k.jpgМОЛЯ ВИ,ПОМОГНЕТЕ ЗА НЯКОЯ ЗАДАЧА,ВАЖНО МИ Е 

1. Викате

2. Започнете сама, напишете нещо, ние ще помагаме

3. Направете си труда поне да препишете условията и да ги публикувате като текст

1. Викате

2. Започнете сама, напишете нещо, ние ще помагаме

3. Направете си труда поне да препишете условията и да ги публикувате като текст

Извинявам се,наистина задачите са лесни,но съм начинаеща и не мога да се справя сама,ще препиша задачите,надявам се наистина на помощ :)  

1.Променливите необходими за изчисляване на разходите,направени

за един ден ( с точност до стотинка),при зададена обща сума за разходите

и броя дни.

2.Променлива от тип double и указател към константа от тип double,иниацилизиран.

3.Двумерен масив с размер 4 x 2 ,иниацилизиран.

10.Напишете  програма ,която чете от клавиатурата положителни цели числа и

определя броя на  четните числа и броя на нечетните.Цикълът да се организира

чрез проверка на коректност на операцията по въвеждане на числото.

11.Декларирайте едномерен масив от цели числ,като го иниацилизирате.

Определете сумата и броя на елементите на масива,които попадат в диапазона [10,20]

(на елементите със значения: 10<=значение<=20).

12.Направена е декларация int a=0, b=1, c.Какво ще бъде значението на a,b,c  след

изпълнението на израза :

c= 2* a++  +  ++b/2;

15.Какво ще изведе кода?Представете схематично променливите в паметта

int a=10, b=20, c=30;

Int *p1=&a, *p=&c;

Cout<<p1-p2<<endl;

16.double * p1, *p2;

P2=new double(11);

P2=new double;

P2=p1;

Cout<<”*p1=”<<*p1<<” *p2=”<<*p2<<endl;

*p2=5;

Cout<<”*p1=”<<*p1<<” *p2”<<*p2<<endl;

1.Променливите необходими за изчисляване на разходите,направени

за един ден ( с точност до стотинка),при зададена обща сума за разходите

и броя дни.

2.Променлива от тип double и указател към константа от тип double,иниацилизиран.

3.Двумерен масив с размер 4 x 2 ,иниацилизиран.

10.Напишете  програма ,която чете от клавиатурата положителни цели числа и

определя броя на  четните числа и броя на нечетните.Цикълът да се организира

чрез проверка на коректност на операцията по въвеждане на числото.

11.Декларирайте едномерен масив от цели числ,като го иниацилизирате.

Определете сумата и броя на елементите на масива,които попадат в диапазона [10,20]

(на елементите със значения: 10<=значение<=20).

12.Направена е декларация int a=0, b=1, c.Какво ще бъде значението на a,b,c  след

изпълнението на израза :

c= 2* a++  +  ++b/2;

15.Какво ще изведе кода?Представете схематично променливите в паметта

int a=10, b=20, c=30;

Int *p1=&a, *p=&c;

Cout<<p1-p2<<endl;

16.double * p1, *p2;

P2=new double(11);

P2=new double;

P2=p1;

Cout<<”*p1=”<<*p1<<” *p2=”<<*p2<<endl;

*p2=5;

Cout<<”*p1=”<<*p1<<” *p2”<<*p2<<endl;

ДОбре, хайде да започнем да разсъждаваме. Примерно задача 1. Имаме сумата на разходите и броя на дните. Как ще получим ежедневния разход? Как ще получим ежедневния разход със стотинки?

16.double * p1, *p2;
P2=new double(11);
P2=new double;
P2=p1;
Cout<<”*p1=”<<*p1<<” *p2=”<<*p2<<endl;
*p2=5;
Cout<<”*p1=”<<*p1<<” *p2”<<*p2<<endl;
17 Какво ще изведе кода ,кратки пояснения
char ch;
int num;
while(true){
cin.get (ch);
if(isdigit(ch)) {
cin.unget();
cin>>num;
break;
}
}
cout<<"num="<<num<<endl;
18.
const int SIZE=10;
int array ={3, 11, -34, 42, 12, -8, 51, 44, 9, 3};
int s=22;
bool flag=false;
for(int i=0; i< SIZE; i+-){
if (array ==s) {
flag=true;
break;
}
}
cout<<flag<<endl;
19.int a[] [3]=(1,2,3,4,5,6,7,8,9);
int nr=sizeof (a)/sizeof (int[3]);
*(a+2)=*a*2;
for (int i=0; i<nr, i++){
for (int j=0, j<3, j++)
cout<<a <<" ";
cout<<endl;

ДОбре, хайде да започнем да разсъждаваме. Примерно задача 1. Имаме сумата на разходите и броя на дните. Как ще получим ежедневния разход? Как ще получим ежедневния разход със стотинки?

На 3та мисля ,че е   int b[4,2] Наистина ми е трудно..Щом искам помощ,значи не мога да се справя сама :(

На 3та мисля ,че е   int b[4,2] 

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

Не, хайде малко математика. Как от сума и брой дни ще получим дневна сума?

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

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

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

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

Дарение

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

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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