C/C++

M

Mr.InF3ction

Гостин
Код:
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]);
 
 
      }
 
Г

Грејвдигер

Гостин
Не ми беше тоа поентата на дијагоналата да ми даде празни места. Сакам елементите над и под главната дијагонала да ги испечатам посебно.
 
M

Mr.InF3ction

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




Код:
#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");
      }
}
 
Член од
14 јануари 2011
Мислења
19
Поени од реакции
0
Имам еден проблем.
Креирајте датотека за евиденција на статистиката за еден ракометен
натпревар. Двете екипи имаат максимум 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;
}
Помош?
 
Член од
27 април 2009
Мислења
217
Поени од реакции
13
Ако може мала помош околу C, сакам од дадена датотека елементите да ги сместам во стринг, пробав на неколку начини ама не успеав:(?
 
M

Mr.InF3ction

Гостин
Ако може мала помош околу 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;
}
 
Член од
8 јануари 2008
Мислења
2
Поени од реакции
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

Член од
22 јануари 2012
Мислења
5
Поени од реакции
1
Дали некој може да ми помогни за една задача програмирање.... не можам да ја дорешам :(
Еве ја задачата : Да се креира класа Фигура со празен конструктор, конструктор за инцијализација и виртуални методи (ф-ции) за пресметување на периметар и плоштина на фигураta. Од оваа класа да се креираат изведени класи Квадрат (страна а и бројач bk) и Правоаголник (страни а,b и бројач bp), кои покрај наследените методи ќе имаат и метода за наследување на бројачот.
Да се напише главна функција која ќе ги користи овие класи, тка што корисникот ќе има мени за избор и во зависност од избраната опција (квадрат или правоаголник) да се печатат соодветните податоци за избраниот објект. На крај програмата да печати колку пати корисникот избрал Квадрат,а колку Правоаголник.
Напомена: податочните членови бројач и методата за промена на бројачот се статички членови на класите.
 

deXterche

тадаммм
Член од
12 февруари 2006
Мислења
4.920
Поени од реакции
942
Аман овде нема ништо сложено, отвори книгата за ОО и поминија уште еднаш. Ако ова неможеш да го направиш што остана за понатака. Ако ти е целта во иднина да си програмер послушај ме.
 
Член од
22 јуни 2008
Мислења
457
Поени од реакции
52
Код:
#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

На врв Bottom