Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Помощ за задачи на C/C++ (merged)

Featured Replies

Трябва ми помощ за една курсова задача по системно програмиране. Пише се на C под linux. Условието е: 

Дайте идеи за първата част от задачата. И от къде мога да прочета повече по темата?

отваряте сесия до ИП адрес към порт 80 и проверявате дали ви отговаря

  • Отговори 941
  • Прегледи 234,5k
  • Създадено
  • Последен отговор

Трябва ми помощ за една курсова задача по системно програмиране. Пише се на C под linux. Условието е: 

Дайте идеи за първата част от задачата. И от къде мога да прочета повече по темата?

Да, лесен вариант е да си напишеш порт скенер като ползваш сокети, опитваш се да вържеш към съответен порт или портове на отдалечената машина от писъка. Ако трябва да си убеден, че насреща слуша web server ще трябва да го "питаш" по някакъв начин през сокета. За целта можеш да разгледаш сорса на nmap, мисля, че ще ти бъде от полза.

Да, лесен вариант е да си напишеш порт скенер като ползваш сокети, опитваш се да вържеш към съответен порт или портове на отдалечената машина от писъка. Ако трябва да си убеден, че насреща слуша web server ще трябва да го "питаш" по някакъв начин през сокета. За целта можеш да разгледаш сорса на nmap, мисля, че ще ти бъде от полза.

Мисля си че това със сорса на nmap ще му дойде много. Питащия не знае на кой порт слушат обикновено уеб сървърите :)

Да се напише програма, която въвежда от

клавиатурата цяло трицифрено число и проверява дали

цифрата на единиците и стотиците е една и съща.

Извежда Да ако е изпълнено условието и Не ако не е изпълнено.

:)

Виж оператора % ( остатък от целочислено деление), в комбинация с / (делено) ще намериш кое е единици и кое е стотици ( вземаш остатъка и делиш на 10 в цикъл и си правиш провери ). Задачата е елементарна разгледай и ще и я направиш за 5 минути сам.

За съжаление от с++ нищо не разбирам.

Лошата новина е, че ако ти напишем наготово домашната, това ще продължи да е така...

Трябва ми помощ за една курсова задача по системно програмиране. Пише се на C под linux. Условието е: Напишете програма, която открива всички уеб сървъри измежду списък с IP адреси, който е записан във файл и подаден като аргумент на програмата.

Ако адресите са записани в текстов файл, разделени с интервал или запетая как да ги отделям един от друг?

Ако адресите са записани в текстов файл, разделени с интервал или запетая как да ги отделям един от друг?

като при четене четете думи, не символи.

 

Нещо такова ?

char addr_buffer[15]FILE *file = fopen("asd.txt", "r");fgets(addr_buffer, 15, file)

Не, освен ако записите не са с фиксирана дължина

Нещо такова би било на С

char buf[MAXLENGTH];FILE *f;f=fopen("My_text_file.txt","r");while (!feof(f)){fscanf(f,"%s",buf);/*Store the word elsewhere*/...}fclose(f);

или ползвайте getw функцията

Направих нещо което би трябвало да работи(използвах пример който намерих в интернет). 

Но не мисля, че работи правилно, защото независимо от ип адресите които подавам(дори невалидни), казва че е уеб сървър. 

#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <stdio.h>#include <netdb.h>#include <stdlib.h>#include <string.h>#include <unistd.h>int main(int argc, char *argv[]){	   u_short port=80;            /* user specified port number */   short int sock = -1;        /* the socket descriptor */   struct hostent *host_info;  /* host info structure */   struct sockaddr_in address; /* address structures */   char addr[1023];   char buf[20];   char *filename;   filename=argv[1];   FILE *file = fopen( filename, "r" );        while (!feof(file))	{	fscanf(file,"%s",buf);	strncpy(addr, buf, 1023);			port = atoi(argv[1]);	bzero((char *)&address, sizeof(address));	address.sin_addr.s_addr = inet_addr(addr);	address.sin_port = htons(port);               	sock = socket(AF_INET, SOCK_STREAM, 0);	if (sock == -1) {		fprintf(stderr, "Error: could not assign master socketn");		exit (1);	}	if(connect(sock,(struct sockaddr *)&address,sizeof(address)) == 0)		printf("%s e web servern", addr);	else                 printf("%s ne e web servern", addr);	close(sock);			}	   return 0;}

А въвеждате ли нещо като аргумент на програмата. Защото според това, което виждам тя очаква първия аргумент да е порт. Защо не присвоите просто стойността на порта?

Стартирам я така 

gcc prog.c -o prog

./prog asd.txt

asd.txt е предварително създаден файл. А стойност на порта мисля че съм присвоил. u_short port=80;

Стартирам я така 

asd.txt е предварително създаден файл. А стойност на порта мисля че съм присвоил. u_short port=80;

Да, но по-късно в кода правите това:

    port = atoi(argv[1]);	bzero((char *)&address, sizeof(address));	address.sin_addr.s_addr = inet_addr(addr);	address.sin_port = htons(port);

И ако първия аргумент е име на файл, то тогава функцията atoi се опитва да интерпретира името на файла като число и мисля че в този случай връща нула

  • 2 седмици по-късно...

Здравейте трябва ми помощ за курсова работа.Много ми е важна ,ще съм много благодарен ако ми помогнете!
Ето я и задачата :

За колите във голям областен град  в КАТ се пази следната информация: марка, модел, име и фамилия на собственик, цвят, година на производство. Напишете програма с използването на структури, която предлага на потребителя следните възможности:

а) създава масив, съдържащ информация за N коли ;

 б) намира колко човека притежават “Ауди”, модел А8 с цвят бял и отпечатва имената им.

в) пресмята средната възраст на наличните коли;
 г) определя колко коли са от преди 1992г.

д)  Подрежда колите по година на производство .

е) Разпечатва масива.

Програмата да се оформи с меню за избор, като всяка подточка бъде отделна функция .

Данните за попълване на масива да са в отделна функция и да са предварително зададени, за да не се губи време за въвеждане при всяко стартиране.

Здравейте трябва ми помощ за курсова работа.Много ми е важна ,ще съм много благодарен ако ми помогнете!

Ето я и задачата :

 

http://www.kaldata.com/forums/topic/188001-%D0%BA%D0%B0%D0%BA-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BD%D0%BE-%D0%B4%D0%B0-%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0%D0%BC%D0%B5-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89-%D0%B7%D0%B0-cc/

 

като цяло работи, т.е тръгва но после ми дава грешка след компилиране, което не мога да разбера! Благодаря на отзовалите се!!!

 

И грешките са?

И грешките са?

Debug Assertion Failed

Expression:(Stream!=Null)

 

 

След което Press Retry to debug Application ! и нищо не става ,а първоначално не ми открива никакви грешки!

Здравейте! Трябва ми помощ относно функция за стек или опашка, която намира всички елементи от ... до ... и ги записва в един брояч.

 

Така съм започнал, но нямам идеи как да продължа. Благодаря, ако някой помогне!

 

void finds(stack s, int &br)

{br=0; int t=3, x; ...

Така съм започнал, но нямам идеи как да продължа. Благодаря, ако някой помогне!   void finds(stack s, int &br) {br=0; int t=3, x; ...

Почнал си грешно. Някъде от началото на някой учебник за C за начинаещи ще е по-добре. Лошата новина е, че стековете и опашките са по- към края...

Редактирано от flare (преглед на промените)

извинете искам да ПОМОЛЯ разбира се, ако не затруднявам никого, да ми обясните къде имам грешки в следната програма .Условието е :За N студента са дадени ФН и оценки по математика, физика и ПИК. Да се въведат данните и да се изведе средния успех по математика, физика и ПИК. Да се използват динамични масиви (с указатели) БЛАГОДАРЯ МНОГО НА ОТЗОВАЛИТЕ СЕ!!!

 

 CODE /CODE

 

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

void main()

{ int N,i;

        printf("Broqt na studentite e: ");

        scanf("%d",&N);

          int *stud=new int [N];

          float **oc;

 oc=new float*[N];

  for(i=0;i<N;i++)

  for(int k=0;k<4;k++)

  oc=new float[k];

  if(!stud){printf("Masivite ne sa syzdadeni !n"); return;}

 for(int i=0;i<N;i++)

        {

        printf("Vavedete FN na %d-q student: ",i+1);

scanf("%f",&stud);

 }

for(i=0;i<N;i++)

{

         printf("Vavedete  ocenka na %d-q student po Matematika ",i+1);

         scanf("%f",&oc[1]); 

printf("Vavedete  ocenka na %d-q student po Fizika ",i+1);

        scanf("%f",&oc[2]); 

 printf("Vavedete  ocenka na %d-q student po PIK ",i+1);

 scanf("%f",&oc[3]);

 }

for(int i=0;i<N;i++)

{float sumMath=0,srMath=0,sumFiz=0,sumPIK=0,srFiz=0,srPIK=0;int br=0;

for(i=0;i<N;i++){br++;{

sumMath+=oc[1]; 

srMath=sumMath/br;

sumFiz+=oc[2];

srFiz=sumFiz/br;

  sumPIK+=oc[3];

  srPIK=sumPIK/br;}

}

  printf("Sredniqt uspeh po matematika na studentite e: %4.2f",srMath);

  scanf("%4.2f",&srMath);

       printf("Sredniqt uspeh po fizika na studentite e: %4.2f",&srFiz);

   printf("Sredniqt uspeh po PIK na studentite e: %4.2f",&srPIK);

}

delete []stud;

delete []oc;

 

}

 

ПС:работя с Visual Studio 2012 ,проблема е че ми извежда единствено средния успех по математика ,без този по Физика и ПИК

Редактирано от Kamen Veliov (преглед на промените)

Не разбирам ама не трябва ли да е нещо подобно

double sum = 0;for(int i=0; i<N; i++) #n e брая на студентите ти{    sum += N[i][disciplina];}cout<<"Sreden uspeh po disciplinata"<<sum/n;

Чакай flare да се включи той ще ти каже :)

Редактирано от tux (преглед на промените)

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.