Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Формирование нового массива из элементов данного массива, кратных трем https://www.cyberforum.ru/ cpp-beginners/ thread195171.html
формировать новый массив из элементов кратных 3 (на языке Си) заранее спасибо)
Сортировка вектора C++
Подскажите, пожалуйста, как можно отсортировать вектор, заполненный структурами DataStruct, используя алгоритмы сортировки stl? Критерий сортировки - поле key1, например. struct DataStruct { int key1; int key2; string key3; }
C++ Добрый день!(а точнее вечер) Немогли бы объяснить почему зацикливается программа? Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dX. F= a*x*x +b*x +c(при a<0 и с не равном 0) F=-a/(x-c)(при a>0 и с=0) F=a(x+c)(в остальных случаях) где а,b, с — действительные числа. Функция F должна принимать действительное значение, если выражение Ац И (Вц ИЛИ Сц) не равно нулю, и целое значение в противном случае. Через Ац, Вц и... https://www.cyberforum.ru/ cpp-beginners/ thread195166.html C++ Работа с Heap Помогите найти ошибку а то я что-то уже зае**** Так работает if(!data){//первый вызов функции if(data=(uchar*)my::malloc(newDataSize)){ my::memcpy(data,newData,newDataSize); dataSize=newDataSize,totalAllocSize=newDataSize; } } https://www.cyberforum.ru/ cpp-beginners/ thread195158.html
Есть текст. Требуется(мне) написать программу для вывода каждого слова в столбик и рядом, чтоб было написано, сколько раз упоминается в тексте C++
Мои очередные жалкие попытки написать код: #include <sstream> #include <iostream> #include <string> #include <fstream> #include <stdio.h> using namespace std; int main() { ifstream ifs("x.txt");
C++ Отсортировать слова в строке! Есть множество слов, упорядочить их так, чтобы буква, на которую слово заканчивается, начинало следующее https://www.cyberforum.ru/ cpp-beginners/ thread195148.html
C++ метод-доступа, класс, объекты из книги С++ за 21 день Джесса Либерти Если объявить класс Cat с закрытым членом itsAge, а затем определить два объекта Cat с именами Frisky и Boots, то может ли объект Boots получить доступ к переменной-члену itsAge объекта Frisky? Да. Закрытые данные доступны для функции-членов класса, и различные экземпляры одного класса могу обращаться к данным друг друга. Иными словами, если Frisky и... https://www.cyberforum.ru/ cpp-beginners/ thread195146.html Вывод числа в столбик (без использования строковых переменных) C++
Дано натуральное число N. Не используя строковые переменные, вывести в столбик это число. Для решения использовать функции целочисленного деления и вычисления остатка от деления целых чисел.
C++ Найти сумму дополнительных чисел побочной диагонали матрицы Всем привет Ну для начала хотелось бы сказать, что это лучший сайт и форум который я когда-либо видел и всем кто мне помагал и остальным хотелось бы сказать огромное спасибо):) А теперь вернёмся к моей проблеме нужно сделать 3 задачки Они таковы 1. Найти максимальный элемент массива и его индекс (двумерный массив) https://www.cyberforum.ru/ cpp-beginners/ thread195142.html C++ Критично ли использование goto при выходе из циклов? #include <conio.h> #include <iostream.h> void main() { int a,n,i,s=0; cout<<"\tInput n<=20"<<endl; cin>>n; cout<<"\n\t Massiv A"<<endl; for(i=0;i<n;i++) { https://www.cyberforum.ru/ cpp-beginners/ thread195140.html
Текст из файла переводить в строку C++
1. Как переводить текст из файла в строку, для работы потом, как со строкой? fstream x; x.open("x.txt"); char a; //а потом что?
C++ Выход из бесконечного цикла по нажатию кнопки. Привет всем. как можно выйти из такого цикла по нажатию какой любой кнопки (например Esc) int main(){ while(1){ cout << "Text"; } return 0; https://www.cyberforum.ru/ cpp-beginners/ thread195126.html
213 / 137 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
0

Почему после выполнения команды cprintf значения строк затираются? - C++ - Ответ 1130281

22.11.2010, 00:23. Показов 1126. Ответов 5
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте. Помогите пожалуйста, что это может быть, что вот уже больше дня играюсь с билдером и он непонятно что творит. Например, написана функция для ввода текста в многострочном поле определенной длины:
Код
int InputSMS(char *str, int lim, float pric)
{
	char cyrilic[]="АБВГґДЕЄЖЗИЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯабвгдеєжзиїйклмнопрстуфхцчшщьюя";
	int charCount=0,x,y,i,k,n,z;
	//for(i=0;i<=lim;i++) str[i]='\0';
	x=wherex(); y=wherey();
    lim--;
	//str[0]=0;str[lim]=0;
	int key=0,tmp=0,tmp2=0,del=70;
    gotoxy(59,6);
	textbackground(7);
	cprintf("0");
	gotoxy(59,7);
	cprintf("1  ");
	gotoxy(59,8);
	cprintf("%1.2f ",pric);
	textbackground(3);
	gotoxy(x,y);
	for(i=0;key!=13;i++)
	{
		key=getch();
		if(key>=32 || key<=-3)
		{
			if(charCount>lim)
			{
				i--;continue;
			}
			tmp=str[i];
			for(int j=i;j<lim-1;j++)
			{
				tmp2=str[j+1];
				str[j+1]=tmp;
				tmp=tmp2;
			}
			str[i]=key;
			charCount++;
			gotoxy(59,6);
			textbackground(7);
			z=strlen(str);
			cprintf("%i  ",z);
			if(z){
				if(strpbrk(str,cyrilic)==NULL) del=160;
				else del=70;
				gotoxy(59,7);
				cprintf("%i  ",z/del+1);
				gotoxy(59,8);
				cprintf("%1.2f",(z/del+1)*pric);
			}
			textbackground(3);
			if(strlen(str)>36){
				k=(z-1)/36;
				gotoxy(x,y+k);
				for(n=k*36;n<=z-1;n++)
					cprintf("%c",str[n]);
				gotoxy(x+i+1-k*36,y+k);
			}else{
				gotoxy(x,y);
				cprintf("%s",str);
				gotoxy(x+i+1,y);
			}

			continue;
		}

		if(key==8)
		{
			if(wherex()==x)
			{
				i--;continue;
			}
			k=(strlen(str)-1)/36;
			gotoxy(x+charCount-1-k*36,y+k);
			cprintf(" ");		
			gotoxy(wherex()-1-k*36,wherey()+k);
			tmp=str[charCount-1];
			for(int j=charCount-1;j!=i-1;j--)
			{
				tmp2=str[j-1];
				str[j-1]=tmp;
				tmp=tmp2;
			}
			charCount--;
			str[charCount]=0;
			gotoxy(59,6);
			textbackground(7);
			cprintf("%i  ",strlen(str));
			if(strlen(str)){
				if(strpbrk(str,cyrilic)==NULL) del=160;
				else del=70;
				gotoxy(59,7);
				cprintf("%i  ",strlen(str)/del+1);
				gotoxy(59,8);
				cprintf("     ");
				gotoxy(59,8);
				cprintf("%1.2f",(strlen(str)/del+1)*pric);
			}
            i-=2;
			textbackground(3);
			if(strlen(str)>36){
				k=(strlen(str)-1)/36;
				gotoxy(x,y+k);
				for(n=k*36;n<=strlen(str)-1;n++)
					cprintf("%c",str[n]);
				gotoxy(x+i+1-k*36,y+k);
			}else{
				gotoxy(x,y);
				cprintf("%s",str);
				gotoxy(x+i+1,y);
			}
			continue;
		}

		if (key==13)
		{
			if(!i)
			{
                key=0;
				i--;
				continue;
			}
			str[charCount]=0;
			break;
		}

		if(key==27) return 27;

		if(key==0xE0)
		{
			i--;
			continue;				
		}
	if(key==0){
		key=getch();
		if(key==75)
		{
			if(wherex()==x)
			{
				if(wherey()==y){
					i--;
					continue;
				}else{
					gotoxy(wherex()+35,wherey()-1);
					i-=2;
					continue;
				}
			}
			gotoxy(wherex()-1,wherey());
			i-=2;
			continue;
		}

		if(key==77)
		{
			if(wherex()==lim+5 || charCount==i)
			{
				i--;
				continue;
			}
			gotoxy(wherex()+1,wherey());
			continue;
		}
	}
		i--;continue;
	}
}
Эта функция в пятницу у меня еще благополучно работала и благополучно вводила текст. Но со вчерашнего вечера непонятно по каким законам и с какого чуда тупо перетала работать. Вот к примеру вот в этом месте:
Код
			str[i]=key;
			charCount++;
			gotoxy(59,6);
			textbackground(7);
			z=strlen(str);
			cprintf("%i  ",z);
при i=0 str[0] благополучно получает значение key. Но как только выполняется команда cprintf("%i ",z) - так значение str[0] стает равным 0 С какого чуда и с какого перепуга и по каким законам природы такое случается?

Это только один глюк... А если продолжить рассказ:
Код
z=strlen(str);
			cprintf("%i  ",z);
			if(strlen(str)){
				if(strpbrk(str,cyrilic)==NULL) del=160;
				else del=70;
				gotoxy(59,7);
				cprintf("%i  ",z/del+1);
				gotoxy(59,8);
				cprintf("%1.2f",(z/del+1)*pric);
			}
			textbackground(3);
			if(strlen(str)>36){
				k=(z-1)/36;
				gotoxy(x,y+k);
				for(n=k*36;n<=z-1;n++)
					cprintf("%c",str[n]);
				gotoxy(x+i+1-k*36,y+k);
			}else{
				gotoxy(x,y);
				cprintf("%s",str);
				gotoxy(x+i+1,y);
			}
После выполнения z=strlen(str) значение z=1. Значит strlen(str) тоже равно 1. Но как только доходим до if(strlen(str)), так программа игнорирует то, что внутри оператора условия и идет на else. С какого перепуга условие if не выполняется, если strlen(str)==1 !?:megashok:

И таких глюков в программе еще пару десятков.

Например, есть такой случай:

Код
void MyFunction()
{
тут куча кода...
куча кода...
Window(1,2,79,24,1,0,'n'); //эта команда выполняется и после нее ничего нет.
//А значит управление должно перейти в главную функцию. Но... смотрите в int main
}

int main()
{
куча функций и команд...
куча функций и команд...
куча функций и команд...
MyFunction();
команда после функции //эта команда не выполняется!!...
}

Я долго ломал голову, от чего же это так, пока в пошаговом исполнении программы я случайно не поставил брекпойнт на закрывающую скобку функции MyFunction(). И как оказалось, после выполнения последней команды в функции управление переходит на нее. Я нажимаю Play(для продолжения работы программы после остановки на брекпойнте), после чего программа снова отсаовилась на скобке. Я снова нажимаю Play - она снова на скобке. Я взял и поставил брекпойнты тупо на всех строчках кода, и как оказалось, после выполнения вот этой функции программа переходит на скобку } и выполняется на ней бесконечно

Я тупо в ауте. И это я не все глюки перезвал. Уже больше года имею дело с средами программирования и самим программированием, но такие чудеса, которые не вкладываются ни в какие законы физики, математики или программирования я вижу впервые :megashok:

Что это может такое быть?:'( Помогите пожалуйста, очень прошу. У меня уже просто идеи кончились и я смотрю в монитор квадратными глазами и не знаю что делать. Другое дело, если бы знать причину глюков, а так ведь они эти глюки появляются там, где такое вообще невозможно практически, и программа работает по каким-то аномальным законам

Вернуться к обсуждению:
Почему после выполнения команды cprintf значения строк затираются? C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2010, 00:23
Готовые ответы и решения:

Как и почему меняется содержимое регистров после выполнения очередной команды
Как и почему меняется содержимое регистров после выполнения очередной команды?

Получение значения ключевого поля после выполнения команды TableAdapter.Insert()
Использую типизированный датасет в котором заданы DataTable и TableAdapter к ним. Не могу понять...

После выполнения определённой команды не выполняются последующие команды
Объясните, пожалуйста, почему может останавливаться выполнение второй и далее комманд? cd...

Выполнения команды после завершения предыдущей
Добрый день, Требуется выполнить команду rmdir после завершения удаления программы. Переменная...

5
22.11.2010, 00:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2010, 00:23
Помогаю со студенческими работами здесь

Перезапуск скрипта, после выполнения команды
Здравствуйте, я начинающий кодер, столкнулся с проблемой. Есть один прекрасный модуль uuid, он...

Не обновляется daragrid после выполнения SQL команды
выполняю команду удаления по нажатию кнопки но датагрид не обновляется после выполнения команды ...

Требуется произвести дебаг после выполнения команды
5) Сохраните следующий код в файле Debug_Test.m: function =Debug_Test(x) xmu=mean(x);...

Вывести направление робота после выполнения полученной команды
Робот может перемещаться в четырех направлениях (&quot;С&quot;-север,&quot;З&quot;-запад,&quot;Ю&quot;-юг, &quot;В&quot;-восток) и...

Вывести направление робота после выполнения полученной команды
Помогите с задачей на delphi Робот может перемещаться в четырех направлениях («С» — север, «З» —...

Вывести направление работа после выполнения полученной команды
Робот может перемещаться в четырех направлениях («С» — север, «З» — запад, «Ю» — юг, «В» — восток)...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru