Премини към съдържанието
  • Добре дошли!

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

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

     

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


Препоръчан отговор

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

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

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

Линк към коментара
Сподели в други сайтове

Трябва ми помощ за една курсова задача по системно програмиране. Пише се на 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;}
Линк към коментара
Сподели в други сайтове

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

Линк към коментара
Сподели в други сайтове

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

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 (преглед на промените)
Линк към коментара
Сподели в други сайтове

Добавете отговор

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

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване