Форум программистов, компьютерный форум CyberForum.ru

Помогите подкорректировать! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ что с Компилятором http://www.cyberforum.ru/cpp-beginners/thread19938.html
привет) я конечно понимаю что вопрос нубский но всетаки:p у меня есть 2 компилятора VC++ 5.0 VC++ 6.0 бывает я компилю ,а он раз и как-бы зависает приходится Alt+Ctrl+Del чтобы снять зависон) скажите что это такое? или у меня бракованый компилятор?:rtfm:
C++ Нарисовать солнечную систему У меня есть вопрос по программированию на C++, надо нарисовать Солнечную систему в плоскостном отображении, в динамике, с чего следует начать, и как это сделать, просто я мало знакома с этой программой и её языком. Помогите, пожалуйста. Заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread19937.html
C++ Помогите сделать dll-ку
Люди вот у меня есть файлы исходники.мне нужно сделать из них Dll/ как?
Тексты(строки) в с++ C++
Помогите пожалуйста решить задачу на с++, просто не догоняю как это можно реализовать..., на паскале понятно, с помощью функций ord() и char(), но как реализовать это на С++ не понимаю Дан текст. Если первый символ текста не является малой латинской буквой, то оставить его без изменения. Если же это малая латинская буква, но за начальной группой малых латинских букв не следует цифра, то также...
C++ Помогите вывести 2 окно http://www.cyberforum.ru/cpp-beginners/thread19919.html
#include <Windows.h> LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM, LPARAM); char szWinName="IiaIeii"; int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpszArgs, int nWinMode)
C++ ansi c. Методы борьбы. Есть сканер(термнал сбора данных). Прошива на ANSI. Прошиву писали сами. Все нормально, но при обращении к БД аппарат виснет.Ошибку нйти не можем!!!!Листнг прилагаеся. подробнее

Показать сообщение отдельно
Monmorensi
0 / 0 / 0
Регистрация: 08.12.2008
Сообщений: 21

Помогите подкорректировать! - C++

28.12.2008, 14:34. Просмотров 459. Ответов 1
Метки (Все метки)

Код
//---------------------ZADANIE -------------------------
//	Dany natural'noe chislo N, deystvitel'nye chisla
//	a[1], ... , a[n]. Poluchit' max (a[1],...,a[n]) 
//	Vi4islit' (a[1]^2+...+a[n]^2)
//	----------------------------------------------------


#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <ctype.h>
#include <math.h>

void vvod(int N, float *a);
int uslovie(int N, float *a, int nmax, int F);
float zashita (int min,int max);

int main()
{
const int maxNat=1000;	//ограничение на ввод количества элементов массива
  float *a;
  int N,F=0,nmax=0;

    char ch;
		printf("\n---------------------ZADANIE -------------------------\n");
		printf("\nDany natural'noe chislo N, deystvitel'nye chisla");
		printf("\n a[1], ... , a[n]. Poluchit' max (a[1],...,a[n]) ");
		printf("\n          Vi4islit' (a[1]^2+...+a[n]^2)");
		printf("\n");
		printf("------------------------------------------------------");
 
	do
	{
	   printf("\n");
	   do
	   {
	       printf ("\nVvedite razmer massiva N(1 ... %d)=",maxNat);		
		  N=zashita(1,maxNat);
		  if(N>maxNat)
		  {
		  	printf("\nVi vveli nepravil'noe chislo.");
			printf("\nNazhmite na lubuy klavishu.");
			_getch();
		  }
	    }
	   while (N>maxNat);


   a=(float*)malloc(N*sizeof(float));
	   

	   vvod( N, a);
	   uslovie( N, a,nmax,F);

   
	   printf("\n");
	   printf ("\nDo you want to continue?(Y/N)\n");
	   ch = toupper(_getch());
     }
	while (ch != 'N');

  printf("\n");
  printf("\n");
  printf("                       <<<Rabota programmy zavershena>>>");
  

  _getch();
}

/////////////////////////// ВВОД МАССИВА //////////////////////////

void vvod(int N, float *a)
{
  const float maxInt=(3.4e38);
  int i;

  printf("\nVvedite elementy massiva a[%d] (-%g ...%g)", N,maxInt,maxInt);		
  for (i=0;i<N;i++)
  {
     do
     {
	   printf("\n");
	   printf("a[%d] = ",i);	
	   a[i]=zashita(-maxInt,maxInt);
	   if(a[i]<-maxInt||a[i]>maxInt)
	   {
	      printf("\nVi vveli nepravil'noe chislo.");
		 printf("\nNazhmite na lubuy klavishu.");
		 _getch();
	   }
	}
	while (a[i]<-maxInt||a[i]>maxInt);	
  }
	
  printf("\n");
  printf("\nN = %d",N);
  printf("\n");
  printf("\nIshodniy massiv a[%d]:",N);     //вывод заданного массива a[N]
  printf("\n");
	
  for(int i=0;i<N;i++)
  {
     printf("a[%d] = %5.2f",i,a[i]);
     printf("\n");
  }
  printf ("\n");
}



/////////////////////// УСЛОВИЕ ЗАДАНИЯ /////////////////////////////

int uslovie(int N, float *a,int nmax, int F)
{
	int G=0;
	for (int F=0, i = 0; i <N; i++)							//нахождение максимального элемента
	{
		if ((a[i]) > (a[nmax])) nmax= i;								
							
		
		
	}
	for (int i=0; i<N;i++)
	{
	F+=(a[i] * a[i]);
	
	}
	printf("\n\nznachenie max elementa = ");
	printf("%5.2f",a[nmax]); 
	printf("\n\nvi4islenie zna4enija funkcii");
	printf("\n F = " );
	printf("%d", F);
	


return 0;
}

////////////////////////// ФУНКЦИЯ ЗАЩИТЫ ///////////////////////////

float zashita(int min,int max)
{
	const int N=3;
	char ch;
	char str[100], str1[100];

	int i=0, cntPtr=0, cntE=0, cntNeg=0;

	do
	{
		ch=(char)getch();
		
		if((ch=='-')&&(cntNeg==0)&& min!=1)		// '-'
		{
			str[i++]=ch;
			putch(ch);
			cntNeg++;
		}

		

		if((ch=='e'||ch=='E')&&(cntE==0)&& min!=1)		// 'e'
		{
			str[i++]=ch;
			putch(ch);
			cntE++;
		}
		
		if((ch=='.')&&(i>0)&&(!cntPtr)&& min!=1)		// '.'
		{
			str[i++]=ch;
			putch(ch);
			cntPtr++;
		}
		
		if((ch>='0')&&(ch<='9'))			// 
		{
			str[i++]=ch;
			putch(ch);
		}
		
		if((ch=='\b')&&(i>0))				// работа BackSpace
		{
			i--;
			printf("\b \b");
		}		
						if((i==(N+1))&&(i>0)&&(min==1)||(i==(N+3))&&(i>0)&&(min!=1))
		{
			i--;
			printf("\b \b");
		}
	}
	while(ch!='\r');
	

		str[i]='\0';			//преобразование числа с е в float
		bool f=0;
		for(int k=0;k<i;k++)
			if(str[k]=='e')
			{
				f=1;
				break;
			}
		if(f)
		{
			float bas=1,
			      degree=0;
			int k=0;

			while(str[k]!='e')
			{
				str1[k]=str[k];
				k++;
			}
			str1[k]='\0';
			bas=atof(str1);	

		

if(!bas)bas=1;			
k++;
			int k1=0;
			while(str[k]!='\0')
			{
				str1[k1]=str[k];
				k++;
				k1++;
			}
			str1[k1]='\0';
			degree=atof(str1);
			return(bas*pow(10,degree));
		}
		
		for(int j=i;j>0;j--)
			printf("\b\b");
		printf("%d",atof(str));
		return atof(str);
}
нужно при вводе элементов массива увеличит колличество вводимых символов (вводится 5, нужно хотя бы 10)
и еще если я ввожу точк или число е,затем удаляю, оно больше не вводится:'(
ПОМОГИТЕ ПОЖАЛУЙСТА!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru