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

Помогите! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Что бы с одного файла считавалось в бинарном режиме а в другой записывалось в виде 0 и 1? http://www.cyberforum.ru/cpp-beginners/thread19588.html
Что бы с одного файла считавалось в бинарном режиме а в другой записывалось в виде 0 и 1?
C++ Пользовательские функции, передача параметров Есть следующее боевое задание..)) 1.Составить программу вычисления значений функции (x,y) при заданных x, y. Для вычисления (x,y) и f(,) создать пользовательские функции. Полученные значения аргументов и функции вывести на экран (Таблица 1). 2.Составить программу, в которой с помощью пользовательской функции осуществить обработку заданного массива (Таблица 2). Размерности массива передавать... http://www.cyberforum.ru/cpp-beginners/thread19587.html
C++ Ханойские башни, вывод решения по шагам
Помогите мне пожалуйста!У меня есть готовый исходник решения этого алгоритма!Необходимо сделать вывод по шагам( с наглядным изображением состояния дисков) Вот исходник #include <stdio.h> #include <conio.h> char a,b,c; int num;
C++ Матрица, выделение динамической памяти
В общем у меня такая проблема: нужно решить задачу двумя способами, сначала без выделения динамической памяти , потом с её выделением . задача звучит так : Дана матрица 7х7 найти сумму всех отрицательных элементов этой матрицы , результат вывести на экран . ну я вроде бы без выделения динамической памяти сделал. (как-то так): #include <stdio.h> #include <iostream.h> #include <math.h>...
C++ Если кватрат второго числа меньше квадрата первого числа, то увеличить второе число в 3 раза http://www.cyberforum.ru/cpp-beginners/thread19574.html
1.Даны два числа.Если кватрат второго числа меньше квадрата первого числа, то увеличить второе число в 3 раза,а первое уменьшить на 2. 2.Даны вещественные числа С1,С2,...,С3.Верно ли, что кол-во положителных чисел не превышает 5. 3.Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dX { -ax-c ghb c<0 & x<>0 (не ранво нулю) F= ...
C++ Определить, будут ли точки расположены на одной прямой Помогите пожалуйста надо срочно решить эти задачки: 1. Дано натуральное число n. Среди чисел 1, ..., n найти такие, запись которых совпадает с последующими цифрами записи их квадратов (например 6*6(6 в квадрате)=36 5*5 (5 в квадрате)=25) 2. Даны 3 точки A(x1,y1), B(x2,y2), C(x3,y3) Определить, будут ли они расположены на одной прямой, если нет то вычислить угол ABC 3. Задан массив,... подробнее

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

Помогите! - C++

24.12.2008, 20:17. Просмотров 484. Ответов 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 ("Do you want to continue?(Y/N)\n");
	   ch = toupper (_getch ());
     }
	while (ch != 'N');

  printf("\n");
  printf("\n");
  printf("                       <<<Rabota programmy zavershena>>>");
  printf("\n-------------------------------------------------------");
  printf("\n                Rabotu vypolnila studentka gruppy PS-11");
  printf("\n                                       Skopina Kristina");
  printf("\n");

  _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("N = %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)
{
	
	for (int F=0, i = 0; i <N; i++)							//нахождение максимального элемента
	{
		if ((a[i]) > (a[nmax])) nmax= i;								
							
		
		
	}
	for (int i=0; i<N;i++)
	{
	F=F+(a[i] * a[i]);
	}
	printf("\n\nznachenie max elementa = ");
	printf("%5.2f",a[nmax]); 
	printf("\n\nvi4islenie zna4enija funkcii");
	printf("\n F = " );
	printf("%5.2f", 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+2))&&(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);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru