C/C++

  • Креатор на темата Креатор на темата Драган
  • Време на започнување Време на започнување
Мислиш нешто вака:
11911617.png


?

Да
 
Код:
for(i=0;i<3;i++)
      {
        printf("\n\n\n");
        for(j=0;j<3;j++)
 
            if(i==j)
                printf("    ");
            else
                printf("%d    ",a[i][j]);
 
 
      }
 
Не ми беше тоа поентата на дијагоналата да ми даде празни места. Сакам елементите над и под главната дијагонала да ги испечатам посебно.
 
Не ми беше тоа поентата на дијагоналата да ми даде празни места. Сакам елементите над и под главната дијагонала да ги испечатам посебно.
Па ок затоа те прашав дали тоа сакаш да ти печати.
Другата варијанта печати следното:
39840939.png




Код:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int a[20][20],i,j;
    int n=4,s=0;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
 
 
      for(i=0;i<n;i++)
      {
        printf("\n\n\n");
        for(j=0;j<n;j++)
        {
            if(i>0&&i>j)
            s=1;
            else
            s=0;
            if(s)
            printf("    ");
            if(i<j)
            printf("%d  ",a[i][j]);
        }
      }
    for(i=0;i<n;i++)
      {
 
        for(j=0;j<n;j++)
        {
            if(i>0&&i<j)
            s=1;
            else
            s=0;
            if(s)
            printf("    ");
            if(i>j)
            printf("%d  ",a[i][j]);
        }
        printf("\n\n\n");
      }
}
 
Имам еден проблем.
Креирајте датотека за евиденција на статистиката за еден ракометен
натпревар. Двете екипи имаат максимум 15 играчи во тимот. Секој играч во
датотеката има свој запис (record) кој се состои од следните полиња:
Опис на полето Тип на податок Макс. должина на поле
Име на играчот string 15
Презиме на играчот string 15
Име на тимот string 25
Број на дрес int 1 ≤ број ≤ 15
Постигнати голови / Одбрани int
Удари int
Време поминато на терен int 0 ≤ време ≤ 60

Креирајте датотека за евиденција на статистиката за еден ракометен
натпревар. Двете екипи имаат максимум 15 играчи во тимот. Секој играч во
датотеката има свој запис (record) кој се состои од следните полиња:
Опис на полето Тип на податок Макс. должина на поле
или ранг на вредности
Име на играчот string 15
Презиме на играчот string 15
Име на тимот string 25
Број на дрес int 1 ≤ број ≤ 15
Постигнати голови / Одбрани int
Удари int
Време поминато на терен int 0 ≤ време ≤ 60

1. При внесување на влезните податоци да се прави валидација
23
2. Датотеката се сортира (подредува) по Презиме, Име и постигнати
голови/успешни одбрани. На тој начин се формира датотеката “Sort.dat”.
3. Датотеката “Sort.dat” да се користи како влезна датотека за добивање на
конечниот резултат на мечот како збир на постигнатите голови за секоја
екипа посебно. Треба да се одреди и најдобриот играч на натпреварот:
- ако играчот со најмногу голови има повеќе од 10 гола тој е играч на
натпреварот.
- доколку играчот со најголем број голови има постигнато помалку од 10
гола, треба да се провери просекот на одбрани (одбрани/удари*100) на
голманите и доколку тој е поголем од 40% тогаш голманот со најголем
просек е играч на натпреварот
4. Излезниот податок за извршената надградба:
Конечен резултат: Тим1 : Тим 2
Играч на натпреварот: Име Презиме, број на дрес
Постигнато голови/процент на одбрани:

И сега, кодов некако не ми штима :S


Код:
#include<iostream>
#include <fstream>
using namespace std; 
struct igrac{
    char ime [15];
    char prezime [15];
    char tim [25];
    int broj_na_dres;
    int golovi_odbrani;
    int udari;
    int vreme;
    }; 
 
int main()
{
    struct igrac i1 [15];
    struct igrac i2 [15];
    ofstream dat("sord.txt");
    fstream zapisuva("sord.txt");
    cout<<"vnesete podatoci za prviot tim"<<endl;
    for(int i=0;i<15;i++)
    {
        cout<<"-------------------------"<<endl;
        cout<<i+1<<". Igrac"<<endl;
        cout<<"ime: ";
        cin>>i1[i].ime;
        cout<<"prezime: ";
        cin>>i1[i].prezime;
        cout<<"tim: ";
        cin>>i1[i].tim;
        cout<<"broj na dres (1<x<15): ";
        cin>>i1[i].broj_na_dres;
        cout<<"golovi/odbrani: ";
        cin>>i1[i].golovi_odbrani;
        cout<<"udari: ";
        cin>>i1[i].udari;
        cout<<"vreme: ";
        cin>>i1[i].vreme;       
    }
    for(int i=15;i>0;--i)
    {
            for(int j=0;j<i-1;++j)
            {
                    if(i1[j-1].broj_na_dres>i1[j].broj_na_dres)
                    {
                            struct igrac tmp = i1[j-1];
                            i1[j-1]=i1[j];
                            i1[j]=tmp;                                                   
                    }
            }
    } 
    cout<<"vnesete podatoci za vtorio tim"<<endl;
    for(int i=0;i<15;i++)
    {
        cout<<"-------------------------"<<endl;
        cout<<i+1<<". Igrac"<<endl;
        cout<<"ime: ";
        cin>>i2[i].ime;
        cout<<"prezime: ";
        cin>>i2[i].prezime;
        cout<<"tim: ";
        cin>>i2[i].tim;
        cout<<"broj na dres (1<x<15): ";
        cin>>i2[i].broj_na_dres;
        cout<<"golovi/odbrani: ";
        cin>>i2[i].golovi_odbrani;
        cout<<"udari: ";
        cin>>i2[i].udari;
        cout<<"vreme: ";
        cin>>i2[i].vreme;       
    }   
    for(int i=15;i>0;--i)
    {
            for(int j=0;j<i-1;++j)
            {
                    if(i2[j-1].broj_na_dres>i2[j].broj_na_dres)
                    {
                            struct igrac tmp = i1[j-1];
                            i2[j-1]=i2[j];
                            i2[j]=tmp;                                                   
                    }
            }
    }   
    zapisuva<<"brojNaDres  prezime  Ime  tim    golovi/odbrani  udari      vreme "<<endl;
    zapisuva<<"------------------------------------------------"<<endl;
    zapisuva<<"------------------------------------------------"<<endl;
    zapisuva<<"Prv tim"<<endl;
    zapisuva<<"----------------"<<endl;   
    for(int i=0;i<15;i++)
    {
            zapisuva<<i1[i].broj_na_dres<<" "<<i1[i].prezime<<" "<<i1[i].ime<<" "<<i1[i].tim<<" "<<i1[i].golovi_odbrani<<" "<<i1[i].udari<<" "<<i1[i].vreme<<endl;
             
    }
    zapisuva<<"Vtor tim"<<endl;
    zapisuva<<"----------------"<<endl;
    for(int i=0;i<15;i++)
    {
            zapisuva<<i2[i].broj_na_dres<<" "<<i2[i].prezime<<" "<<i2[i].ime<<" "<<i2[i].tim<<" "<<i2[i].golovi_odbrani<<" "<<i2[i].udari<<" "<<i2[i].vreme<<endl;
             
    }
    zapisuva.close();
    int z1=0,z2=0,tmp1,tmp2;
    struct igrac k1,k2;
    tmp1=i1[0].golovi_odbrani;
    tmp2=i2[0].golovi_odbrani;
    for(int i=0;i<2;i++)
    {
            z1=z1+i1[i].golovi_odbrani;
            z2=z2+i2[i].golovi_odbrani;
            if(tmp1<i1[i].golovi_odbrani)
            {
              tmp1=i1[i].golovi_odbrani;
              k1=i1[i];
            }
           
            if(tmp2<i2[i].golovi_odbrani)
            {
              tmp2=i2[i].golovi_odbrani;
              k2=i2[i];
            }
    }
    int w;
    struct igrac pr;
    if(tmp1>tmp2)
    {
   
          w=tmp1;
          pr=k1;
          }
    else{
          w=tmp2;
          pr=k2;
          }
    cout<<"Konecen rezultat: "<<z1<<" : "<<z2<<endl;
    cout<<"Igrac na natprevarot: ";
    if(w>10)
    {
    cout<<pr.ime<<" "<<pr.prezime<<" "<<pr.broj_na_dres<<endl;
    cout<<"Golovi: "<<w<<endl;
    }
    else{
          float j= w/pr.udari*100;
          if(j>40)
          {
                  cout<<pr.ime<<" "<<pr.prezime<<" "<<pr.broj_na_dres<<endl;
                  cout<<"Procent: "<<j<<endl;
          }
    }   
                 
    system("pause");
    return 0;
}

Помош?
 
Ако може мала помош околу C, сакам од дадена датотека елементите да ги сместам во стринг, пробав на неколку начини ама не успеав:(?
 
Ако може мала помош околу C, сакам од дадена датотека елементите да ги сместам во стринг, пробав на неколку начини ама не успеав:(?
Какви елементи? Да најде некој збор и да ги копира во стринг, или цела дадотека?
 
Ако може мала помош околу C, сакам од дадена датотека елементите да ги сместам во стринг, пробав на неколку начини ама не успеав:(?

Сo fgets.
Се користи: fgets(променлива на стрингот, број на колку карактери да земе, поинтерот на датотека)

Код:
#include <stdio.h>
#define MAX 100
 
int main() {
    FILE *dat;
    char s[MAX];
 
    if((dat = fopen("tekst.txt", "r")) == NULL) {
        printf("Ne otvara.");
        return -1;
    }
 
    while(fgets(s,100,dat) != NULL) {
            printf("%s", s);
    }
 
return 0;
}
 
Програмата го одредува победникот на некоја трка со автомобили. Натпреварувањето се состои од 26 возачи поделени во 13 екипи.

1. При внесување на влезните податоци да се прави валидација

2. Датотеката се сортира (подредува) по Име, Презиме и Име на тимот. На тој
начин се формира датотеката “Trka.dat”.

3. Датотеката “Trka.dat” да се користи како влезна датотека за добивање на
победникот на трката и другите освојувачи на бодови. Бодувањето е според
пласманот на следниот начин:
- прво место 10 бода
- второ место 6 бода
- трето место 4 бода
- четврто место 3 бода
- петто место 2 бода
- шесто место 1 бод

4. Излезот на екран треба да го испечати резултатот од трката со тоа што ќе
го каже заостанувањето на другите возачи во однос на победникот. Ако
некој возаш има 7 круга помалку од победникот, на местото од
завршувањето на трката треба да се испише „не ја заврши трката„.

Излезот треба да е во следниот облик:
Пласман на возачите
Стартен број Име Презиме Време на завршување

5. На крајот од излезот потребно е да се испечати и бодовното салдо на
шестте возачи со најмногу бодови, при што треба да се вклучат бодовите
освоени на трката:
Генерален пласман на возачите
Име Презиме Бодови

--------------------------------------------------------------------------------------------------------------------------------------------
Програмата добро работи се до сортирањето, т.е во датотеката "sort.dat" се запишуваат податоците на возачите подредени според нивното време на завршување но не сите туку преку еден ??????

Ај ако може помош за сортирањето натака ке пробам сам да ја доправам :)

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <iomanip>
using namespace std;
struct podatoci
{
int start_br;
string ime_vozac;
string prezime_vozac;
string ime_tim;
int vr_na_zavrsuvanje;
int pom_krugovi;
int bod_pred;
int bod_potoa;
}
t[26], vozac[26];
void sort(int);

int main()
{
int Khh,Kmm,Kss;
int i,min=0;
char p='|';
ofstream fout("trka.txt");


for (i=1;i<=5; i++)
{

cout<<"Vnesi gi podatocite za "<<i<<"-ot vozac: "<<endl;

// vnesuvanje na imeto na vozacot vozac
cout<<"Vnesi go imeto na "<<i<<"-ot vozac: "<<endl;
do
{
cin>>vozac.ime_vozac;

if((vozac.ime_vozac).length()>30)

{
cout<<"Vnesovte ime na vozac koe e podolgo od 30 bukvi."<<endl;
cout<<"Vnesi go imeto na "<<i<<"-ot vozac"<<endl;
}
}
while((vozac.ime_vozac).length()>30);



// vnesuvanje na prezimeto na vozacot

cout<<"Vnesi go prezimeto na "<<i<<"-ot vozac: "<<endl;
do
{
cin>>vozac.prezime_vozac;

if((vozac.prezime_vozac).length()>30)

{
cout<<"Vnesovte prezime na vozac koe e podolgo od 30 bukvi."<<endl;
cout<<"Vnesi go prezimeto na "<<i<<"-ot vozac"<<endl;
}
}
while((vozac.prezime_vozac).length()>30);



// vnesuvanje na timot za koj vozi vozacot

cout<<"Vnesi go imeto na timot za koj vozi "<<i<<"-ot vozac"<<endl;
do
{
cin>>vozac.ime_tim;

if((vozac.ime_tim).length()>30)

{
cout<<"Vnesovte ime na tim koe e podolgo od 30 bukvi"<<endl;
cout<<"Vnesi go imeto na timot za koj vozi "<<i<<"-ot vozac."<<endl;
}
}
while((vozac.ime_tim).length()>30);



// vnesuvanje na startniot broj na vozacot vozac

cout<<"Vnesi go startniot broj na "<<i<<"-ot vozac."<<endl;
do
{
cin>>vozac.start_br;

if((vozac.start_br<1)||(vozac.start_br>26) )

{
cout<<"Vnesovte broj koj ne e vo granicite 1-26."<<endl;
cout<<"Vnesi go startniot broj na "<<i<<"-ot vozac."<<endl;
}
}
while((vozac.start_br<1)||(vozac.start_br>26));



// vnesuvanje na vremeto na zavrsuvanje na trkata za vozacot vozac

cout<<"Vnesi go vremeto na zavrsuvanje na "<<i<<"-ot vozac (HHMMSS)."<<endl;
do
{
cin>>vozac.vr_na_zavrsuvanje;

Khh=vozac.vr_na_zavrsuvanje/10000;

Kmm=(vozac.vr_na_zavrsuvanje%10000)/100;

Kss=vozac.vr_na_zavrsuvanje%100;

t.vr_na_zavrsuvanje=(Khh*60*60)+(Kmm*60)+Kss;

//pretpostavka deka trkata ne bi traela povekje od 99/59/59
if(((vozac.vr_na_zavrsuvanje)<000000)||((vozac.vr_na_zavrsuvanje)>995959))

{
cout<<"Vnesovte nevalidno vreme na zavrsuvanje,"<<endl;
cout<<"Vnesi go vremeto na zavrsuvanje na "<<i<<"-ot vozac (HHMMSS)."<<endl;
}

else if(((Khh>99)||(Khh<0))||((Kmm)>59||(Kmm<0))||((Kss)>59||(Kss<0)))
{
cout<<"Vnesovte nevalidno vreme na zavrsuvanje,"<<endl;
cout<<"Vnesi go vremeto na zavrsuvanje na "<<i<<"-ot vozac (HHMMSS)."<<endl;
cout<<" vo sledniov format HHMMSS"<<endl;
}
}
while((((vozac.vr_na_zavrsuvanje)<000000)||((vozac.vr_na_zavrsuvanje)>995959))||(((Khh>99)||(Khh<0))||((Kmm)>59||(Kmm<0))||((Kss)>59||(Kmm<0))));



// vnesuvanje na brojot na izminati krugovi na vozacot

cout<<"Vnesi go brojot na izminati kruogovi na "<<i<<"-ot vozac (0-80)."<<endl;
do
{
cin>>vozac.pom_krugovi;

if(((vozac.pom_krugovi)<0)||((vozac.pom_krugovi)>80))

{
cout<<"Vnesovte nevaliden broj na krugovi,"<<endl;
cout<<"Vnesi go brojot na izminati kruogovi na "<<i<<"-ot vozac (0-80)."<<endl;
}
}
while(((vozac.pom_krugovi)<0)||((vozac.pom_krugovi)>80));



// vnesuvanje na brojot na bodovi na vozacot pred pocetokot na trkata

cout<<"Vnesi go brojot na bodovi na "<<i<<"-ot pred pocetokot na trkata (0-180)."<<endl;
do
{
cin>>vozac.bod_pred;

if(((vozac.bod_pred)<0)||((vozac.bod_pred)>180))

{
cout<<"Vnesovte nevaliden broj na bodovi."<<endl;
cout<<"Vnesi go brojot na bodovi na "<<i<<"-ot pred pocetokot na trkata (0-180)."<<endl;
}
}
while(((vozac.bod_pred)<0)||((vozac.bod_pred)>180));

cout<<endl<<endl;
}

// Zapisuvanje na podatocite vo trka.txt

for (i=1;i<=5;i++)
{

fout<<vozac.ime_vozac<<setw(30);

fout<<vozac.prezime_vozac<<setw(30);

fout<<vozac.ime_tim<<setw(30);

fout<<vozac.start_br<<setw(30);

fout<<vozac.vr_na_zavrsuvanje<<" "<<t.vr_na_zavrsuvanje<<"s"<<setw(30);

fout<<vozac.pom_krugovi<<setw(30);

fout<<vozac.bod_pred<<endl;

}
cout<<"Podatocite se zapisani vo datotekata "<<endl;;
fout.close();


/////// DO OVDE E TOCNA NADOLE NE....


// Funkcija za vcituvanje i sortiranje
sort(5);

}


void sort(int n)
{
//Otvaranje i proveruvanje dali datotekata e otvorena
ifstream fin("trka.txt");
ofstream fout("sort.txt");
if((!fin)||(!fout))
{
cout<<"Cannot open the file!"<<endl;
}
struct podatoci vozac1[n];
//Vcituvanje od datoteka trka.txt
int i;
for (i=1;i<=n;i++)
{
fin>>vozac1.ime_vozac;

fin>>vozac1.prezime_vozac;

fin>>vozac1.ime_tim;

fin>>vozac1.start_br;

fin>>vozac1.vr_na_zavrsuvanje;

fin>>vozac1.pom_krugovi;

fin>>vozac1.bod_pred;

}
//Sortiranje
int min,j,k;
struct podatoci pom;
for (i=1;i<=n;i++)
{
min=vozac1.vr_na_zavrsuvanje;

k=i;
for(j=i;j<n;j++)
{
if(vozac1[j].vr_na_zavrsuvanje<min)
{
min=vozac1[j].vr_na_zavrsuvanje;
k=j;
}
pom=vozac;

vozac1=vozac1[k];

vozac1[k]=pom;
}
}

//Pecatenje

for(i=1;i<n;i++)
{
fout<<fixed<<setprecision(3)<<setw(30)<<vozac1.ime_vozac<<setw(30)<<vozac1.prezime_vozac<<setw(30)<<vozac1.ime_tim<<setw(30)<<vozac1.start_br;

fout<<setw(30)<<vozac1.vr_na_zavrsuvanje<<setw(30)<<vozac1.pom_krugovi<<setw(30)<<vozac1.bod_pred<<endl;

}
fout.close();
fin.close();
}
--- надополнето: 22 јануари 2012 во 02:53 ---
trka.txt е добра, sort.txt се преку еден :confused:
 

Attachments

  • trka.txt
    trka.txt
    965 bytes · Прегледи: 4
  • sort.txt
    sort.txt
    848 bytes · Прегледи: 4
Дали некој може да ми помогни за една задача програмирање.... не можам да ја дорешам :(
Еве ја задачата : Да се креира класа Фигура со празен конструктор, конструктор за инцијализација и виртуални методи (ф-ции) за пресметување на периметар и плоштина на фигураta. Од оваа класа да се креираат изведени класи Квадрат (страна а и бројач bk) и Правоаголник (страни а,b и бројач bp), кои покрај наследените методи ќе имаат и метода за наследување на бројачот.
Да се напише главна функција која ќе ги користи овие класи, тка што корисникот ќе има мени за избор и во зависност од избраната опција (квадрат или правоаголник) да се печатат соодветните податоци за избраниот објект. На крај програмата да печати колку пати корисникот избрал Квадрат,а колку Правоаголник.
Напомена: податочните членови бројач и методата за промена на бројачот се статички членови на класите.
 
Аман овде нема ништо сложено, отвори книгата за ОО и поминија уште еднаш. Ако ова неможеш да го направиш што остана за понатака. Ако ти е целта во иднина да си програмер послушај ме.
 
Код:
#include <stdio.h>
 
int broi(char *str,char num)
{
    int vkupno=0;
    while(*str != '\0')
    {
        vkupno=vkupno+(*str==num);
        str++;
    }
 
    return vkupno;
}
 
int main(){
 
char s[100],znak;
printf("Vnesi niza: ");
gets(s);
printf("Vnesi znak: ");
znak=getchar();
printf("ZNakot %s se pojavuva %d pati.",znak,broi(s,znak));
return 0;
}

Што не е во ред со кодов ?Инаку програмата треба да брои појавувања на знак во стринг.
 

Kajgana Shop

Back
На врв Bottom