Вопрос по С++

Ashtaret

Филаретовый пизироq
Код:
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#define N 3


void main ()
{
// описання структури
struct tovar
{
char imya[5];
int kolvo;
int cena1;
float cena2;
int srok;
int obwcena1;
int obwcena2;
}x[N];
int i;
float cenna2;
int maxs,mins,maxc,minc;
float maxc2,minc2;
clrscr();
maxs=0;
mins=0;
maxc=0;
minc=0;
maxc2=0;
minc2=0;
for (i=0;i<N; i++)
{
printf(" imya tovara:\n ");
scanf("%s",&x[i].imya);
printf("\n cena do ycenki:\n ");
scanf("%i",&x[i].cena1);
printf("\n srok hranen:\n ");
scanf("%i",&x[i].srok);
}
   fflush(stdin);

     for(i=0;i<N;i++){
   if(x[i].srok>2)
     cenna2=x[i].cena1/2;
     x[i].cena2=cenna2;

   printf("------------------\n");
   printf("imya tovara - %s\n cena do ycenki - %i\n cena posle ycenki - %7.2f \n, srok hraneniya %i\n",x[i].imya,x[i].cena1,cenna2,x[i].srok);

   }
     for(i=0;i<N;i++)
     if(maxs<x[i].srok){maxs=x[i].srok;  }
     if(mins>x[i].srok){mins=x[i].srok;  }
     		printf("maximalnui srok = %i \n",maxs);
     		printf("minimalnui srok = %i \n",mins);

                                              
      if(maxc<x[i].cena1){maxc=x[i].cena1;  }
      if(minc>x[i].cena1){minc=x[i].cena1;  }
         printf("maximalna cena do ycenki = %i \n",maxc);
     		printf("minimalna cena do ycenki = %i \n",minc);

         
      if(maxc2<cenna2){maxc2=cenna2;  }
      if(minc2>cenna2){minc2=cenna2;  }
      	printf("maximalna cena pislia ycenki = %f \n",maxc2);
     		printf("minimalna cena pislia ycenki = %f \n",minc2);


getch();
}
Торговый склад производит уценку хранящейся продукции. Если продукция хранится на складе дольше п месяцев, то она уценивается в 2 раза, а если срок хранения превысил т(т< п) месяцев, но не достиг п, то — в 1,5 раза. Ведомость уценки товаров должна содержать следующую информацию: наименование товара, количество товара, цена товара до уценки, срок хранения товара, цена товара после уценки, общая стоимость товара до уценки, общая стоимость товаров после уценки. Выяснить максимальный и минимальный сроки хранения товаров на складе; максимальную и минимальную цену товаров до уценки и после уценки.
а теперь вопрос , задачу почти сделал, только в конце непойму почему у меня ненаходит минимальный срок, минимальную ценпосле , и максимальную и минимальную цену до уценки.
всё остальное находит и работает правельно.
 
Останнє редагування:

Пух

كنت بلهاء
Модератор
Код:
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#define N 2


void main ()
{
// описання структури
struct tovar
{
char imya[5];
int kolvo;
int cena1;
float cena2;
int srok;
int obwcena1;
int obwcena2;
}x[N];
int i;
float cenna2;
int maxs,mins,maxc,minc;
float maxc2,minc2;
clrscr();
maxs=0;
mins=32000;
maxc=0;
minc=32000;
maxc2=0;
minc2=32000;
for (i=0;i<N; i++)
{
printf(" imya tovara:\n ");
scanf("%s",&x[i].imya);
printf("\n cena do ycenki:\n ");
scanf("%i",&x[i].cena1);
printf("\n srok hranen:\n ");
scanf("%i",&x[i].srok);
}
   fflush(stdin);

     for(i=0;i<N;i++){
   if(x[i].srok>2){
     cenna2=x[i].cena1/2;
     x[i].cena2=cenna2;
       }
   printf("------------------\n");
   printf("imya tovara - %s\n cena do ycenki - %i\n cena posle ycenki - %7.2f \n, srok hraneniya %i\n",x[i].imya,x[i].cena1,cenna2,x[i].srok);

   }
     for(i=0;i<N;i++){
     if(maxs<x[i].srok)
	    maxs=x[i].srok;
     if(mins>x[i].srok)
	    mins=x[i].srok;

      if(maxc<x[i].cena1)
	    maxc=x[i].cena1;
      if(minc>x[i].cena1)
	     minc=x[i].cena1;

      if(maxc2<x[i].cena2)
	     maxc2=x[i].cena2;
      if(minc2>x[i].cena2)
	    minc2=x[i].cena2;
   }
	printf("maximalna cena pislia ycenki = %f \n",maxc2);
		printf("minimalna cena pislia ycenki = %f \n",minc2);
	 printf("maximalna cena do ycenki = %i \n",maxc);
		printf("minimalna cena do ycenki = %i \n",minc);
	printf("maximalnui srok = %i \n",maxs);
		printf("minimalnui srok = %i \n",mins);
getch();
}
так работает всё...
 

Ashtaret

Филаретовый пизироq
Код:
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#define N 2


void main ()
{
// описання структури
struct tovar
{
char imya[5];
int kolvo;
int cena1;
float cena2;
int srok;
int obwcena1;
int obwcena2;
}x[N];
int i;
float cenna2;
int maxs,mins,maxc,minc;
float maxc2,minc2;
clrscr();
maxs=0;
mins=32000;
maxc=0;
minc=32000;
maxc2=0;
minc2=32000;
for (i=0;i<N; i++)
{
printf(" imya tovara:\n ");
scanf("%s",&x[i].imya);
printf("\n cena do ycenki:\n ");
scanf("%i",&x[i].cena1);
printf("\n srok hranen:\n ");
scanf("%i",&x[i].srok);
}
   fflush(stdin);

     for(i=0;i<N;i++){
   if(x[i].srok>2){
     cenna2=x[i].cena1/2;
     x[i].cena2=cenna2;
       }
   printf("------------------\n");
   printf("imya tovara - %s\n cena do ycenki - %i\n cena posle ycenki - %7.2f \n, srok hraneniya %i\n",x[i].imya,x[i].cena1,cenna2,x[i].srok);

   }
     for(i=0;i<N;i++){
     if(maxs<x[i].srok)
	    maxs=x[i].srok;
     if(mins>x[i].srok)
	    mins=x[i].srok;

      if(maxc<x[i].cena1)
	    maxc=x[i].cena1;
      if(minc>x[i].cena1)
	     minc=x[i].cena1;

      if(maxc2<x[i].cena2)
	     maxc2=x[i].cena2;
      if(minc2>x[i].cena2)
	    minc2=x[i].cena2;
   }
	printf("maximalna cena pislia ycenki = %f \n",maxc2);
		printf("minimalna cena pislia ycenki = %f \n",minc2);
	 printf("maximalna cena do ycenki = %i \n",maxc);
		printf("minimalna cena do ycenki = %i \n",minc);
	printf("maximalnui srok = %i \n",maxs);
		printf("minimalnui srok = %i \n",mins);
getch();
}
так работает всё...
спасибо большое, а теперь вопрос почему именно :
Код:
maxs=0;
mins=32000;
maxc=0;
minc=32000;
maxc2=0;
minc2=32000;
ну для себя пригодится на будущее )
 

Cris

Member
спасибо большое, а теперь вопрос почему именно :
Код:
maxs=0;
mins=32000;
maxc=0;
minc=32000;
maxc2=0;
minc2=32000;
ну для себя пригодится на будущее )
чтобы найти минимальное/максимальное число надо же с чего то начинать считать, часто в таких случаях для минимальных ставят какоето большое число, для максимальных - какое то маленькое число, второй выход - присвоить им значения по первым входяшим данным - в нашем случае первый товар что попадется
 

Ashtaret

Филаретовый пизироq
Дана матриця A(N,N) цілих чисел. Знайти в ній суму елементів, що містяться нижче від головної діагоналі, і добуток елементів, що містяться вище від побічної.
помогите плз, точней хотяб обьясните как эт все делается, думаю расписать в си смогу сам ))) не учил на вышке матрицы теперь жалею ;((
 

Пух

كنت بلهاء
Модератор
помогите плз, точней хотяб обьясните как эт все делается, думаю расписать в си смогу сам ))) не учил на вышке матрицы теперь жалею ;((
погугли
каждый элемент типа Aij (i-строка, j-столбец, начинаются с 0).
если i>j - элементы ниже главной диагонали
если j<n-i-1 - элементы выше побочной диагонали (n - размерность матрицы)
всё, больше тут знать про матрицы ничего не нужно.
 
Останнє редагування:

Ashtaret

Филаретовый пизироq
погугли
каждый элемент типа Aij (i-строка, j-столбец, начинаются с 0).
если i>j - элементы ниже главной диагонали
если j<n-i-1 - элементы выше побочной диагонали (n - размерность матрицы)
всё, больше тут знать про матрицы ничего не нужно.
спасибо получилось
 

Cris

Member
есть вопрос:
сейчас я делаю сервер на с++, на данный момент просто принимаю данные от однго клиента и рассылаю их всем остальным - некий чат
я использую пул потоков, то есть:
основной потом принимает новые подключения и просматривает сокеты - есть ли данные
если приходят данные, то данный сокет я передаю в следующий поток для распределения нагрузки(в этом потоке может накапливатся очередь дял обработки)
этот поток ищет пустой рабочий и передает ему сокет который надо обработать
проблема заключается в том, что для передачи данных между сокетами я делал так: есть некая глобальная строка - я добавляю в нее данные которые надо передать, и был евент которым я блокировал потом если ему нечего делать, когда нужно - сбрасиваю евент и поток просипается, по 1 евенту на поток
это все работало в винде, теперь я перешел на ubuntu и как сделать такое сдесь? всмысле заменить эти евенты?
 
Зверху