Вопрос по С++

Пух

كنت بلهاء
Модератор
sps принцип понял

но думаю что размерность m*n нуна будет выдвигать приглашение ввести размерность, а потом и сами массивы:x
тогда нужно создавать большие массивы (например 100 на 100 или больше).
Код:
int n,m;
scanf("%d%d",&n,&m);
int a[n][m];
работать не будет в Си.
 
Или же динамически выделив память под указатель:

#include <calloc.h>

int **a;
int n,m;
a=(int**)malloc(n*m*sizeof(int));
Или как-то так. Давно не работал с malloc, да и с С вообще, так что прошу извинить если ошибся где-то. В основном работаю в C++ и выделяю память через new
 

Пух

كنت بلهاء
Модератор
Или же динамически выделив память под указатель:



Или как-то так. Давно не работал с malloc, да и с С вообще, так что прошу извинить если ошибся где-то. В основном работаю в C++ и выделяю память через new
Код:
#include <stdlib.h>

int main(){
   int *a, n = 5, m = 6;
   a = (int*)malloc(n*m*sizeof(int));
   return 0;
}
int **a - это уже указатель на указатель и он тут не нужен. Тогда уже лучше массив указателей описать и для каждого элемента массива выделить m*sizeof(int) памяти

можно выделить участок память длинной m*n, и имитировать работу с двумерным массивом.
 
Останнє редагування:

lordъ

jerk it out
как записать нахождение интеграла, значение которого при увеличении верхней границы стремится в отрицательную область значений?
Код:
......
      dobule v, t1=298;
..... 
	for(t2=299;v>0;t2++)
		{
		h=(t2-t1)/n;
		for (i=0; i<n; i++)
		s+=f(t1+i*h+h/2);
		v=h*s;
      }
 

dreamer

Member
как записать нахождение интеграла, значение которого при увеличении верхней границы стремится в отрицательную область значений?
Код:
......
      dobule v, t1=298;
..... 
	for(t2=299;v>0;t2++)
		{
		h=(t2-t1)/n;
		for (i=0; i<n; i++)
		s+=f(t1+i*h+h/2);
		v=h*s;
      }
Формула интеграла при этом не меняется. Только у вас там бесконечный цикл. Это нормально?
 

lordъ

jerk it out
не издевайтесь над бедным химиком, вот код весь
Kichrum посмотрел у него были замечания. но программа всеравно отказывается считать.
 

dreamer

Member
не издевайтесь над бедным химиком, вот код весь
Kichrum посмотрел у него были замечания. но программа всеравно отказывается считать.
А-а, ну вы не так сформулировали. Кстати цикл не бесконечный, недоглядел я. А как отказывается? Кричит «не буду считать!» и выключает комп? :)
 

lordъ

jerk it out
тонко. нет, конечно можно сделать дебаг по считаемым переменным но мне и так по загрузке проца видно что после ввода переменным цикл выполняется но результата нет. хотя 2 года назад считал по таким же данным в эксель, как то все получилось.
 

dreamer

Member
тонко. нет, конечно можно сделать дебаг по считаемым переменным но мне и так по загрузке проца видно что после ввода переменным цикл выполняется но результата нет. хотя 2 года назад считал по таким же данным в эксель, как то все получилось.
Добавьте в цикл строку вида
Код:
printf("I[%lf : %lf] = %lf\n", t1, t2, v);
вам будет проще.
Вы знаете примерно на каком t2 интеграл должен стать отрицательным?
Может вы слишком далеко от этой точки?
 

Ashtaret

Филаретовый пизироq
есть структура sz
Код:
struct SZ { char name[10];
				int amount;
				double price; } sz;
мы считываем с 1 файла это все дело и должны записать во второй файл только если слова начинаются на "Monitor":

while (true) {
nread=myFile.Read(&sz,sizeof(SZ));
if (nread!=sizeof(SZ)) break;
if (sz.name[0]=='M')
if (sz.name[1]=='o')
if (sz.name[2]=='n')
if (sz.name[3]=='i')
if (sz.name[4]=='t')
if (sz.name[5]=='o')
if (sz.name[6]=='r')
myFile1.Write(&sz,sizeof(SZ));
}
но когда допустим нужно найти минимальную цену
Код:
min=999999;
while (true) {
		nread=myFile.Read(&sz,sizeof(SZ));
		if (nread!=sizeof(SZ)) break;
			if (sz.name[0]=='M')
		if (sz.name[1]=='o')
		if (sz.name[2]=='n')
		if (sz.name[3]=='i')
		if (sz.name[4]=='t')
		if (sz.name[5]=='o')
		if (sz.name[6]=='r')
                if(sz.price<min){
                min = sz.price; //min мы используем в другой ф-ции, просто нужно покачто получить минимальную цену
			myFile1.Write(&sz,sizeof(SZ));}
		}
то в 2 файл незаписывает нечего, вообще несоберусь в чем проблема.
 
Зверху