Audiotele - zadanie z matury rozszerzonej 2007
Kod był wyświetlany 1629 razy.
    /*
  Name: Audiotele - zadanie z matury rozszerzonej 2007
  Copyright: GPL GNU
  Author: Aleksander Koćwin
  Date: 20-05-10 17:50
  Description: 
*/
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    int tabtel[1000];
    int i=0,liczba=0;
    ifstream odczyt("telefony.txt");
    ofstream zapis("zad_6.txt");
    while(!odczyt.eof()) //zapisywanie do tabeli wszystkich telefonów
    {odczyt>>tabtel[i];
    i++;}
    odczyt.close();
    
    for(i=0;i<1000;i++) //liczenie ilosci polączeń z numeru 504669045
    {if(tabtel[i]==504669045)
    liczba++;}
    zapis<<"a) "<<liczba<<"\n";
    
    int powtorka[1000];
    int j,max=0,maxrazy=0;
    for(i=0;i<1000;i++)  //liczenie powtorzen numeru dla kazdego połączenia
    {powtorka[i]=0;
    for(j=0;j<1000;j++)
    {if(tabtel[j]==tabtel[i])
    powtorka[i]++;}}
    for(i=0;i<1000;i++) // odnajdywanie najczęsciej powtarzającego sie numeru
    if(powtorka[i]>max)
    {max=powtorka[i]; 
     maxrazy=tabtel[i];}
    zapis<<"\n b) "<<maxrazy<<" - "<<max<<" razy \n";
    
    int powtorzenia=0; //odnajdywanie ilosci polaczen dal numerów zaczynajacych sie od 511
    for(i=0;i<1000;i++)
    {if(tabtel[i]/1000000==511)
    powtorzenia++;}
    zapis<<"\n c) "<<powtorzenia<<"\n";
    
    int tabtel2[1000];
    int tabtel3[1000];
    int n=0;
    for(i=0;i<1000;i++)  //robienie kopii listy telefonów
    tabtel2[i]=tabtel[i];
    for(i=0;i<1000;i++) //zastępowanie zerem powtorzen
    for(j=i+1;j<1000;j++)
    if(tabtel2[j]==tabtel2[i])
    tabtel2[j]=0;
    for(i=0;i<1000;i++) //tworzenie tabeli z niepowtarzajacymi sie numerami
    if(tabtel2[i]!=0)
    {tabtel3[n]=tabtel2[i];
    n++;}
    
    int suma[1000];
    int tabcyf[1000][9];
    long int f=1000000000;
    for(i=0;i<(n);i++) //ttworzenie dwuwymiarowej tablicy poszczególnych
    {f=1000000000;     //cyfr kazdego niepowtarzajacego sie numeru
    for(j=0;j<9;j++)
    {tabcyf[i][j]=(tabtel3[i]%f)/(f/10);
    f=f/10;}}
    
    for(i=0;i<(n-1);i++) //sumowanie podzielnych przez 2 cyfr
    {suma[i]=0;
    for(j=0;j<9;j++)
    if(tabcyf[i][j]%2==0)
    suma[i]=suma[i]+tabcyf[i][j];}
    int h=0;
    for(i=0;i<(n);i++)
    if(suma[i]>42)
    h++;
    zapis<<"\n d) "<<h<<"\n";
    
    int wystap[1000];
    h=0;
    for(i=0;i<(n);i++) //liczenie wystąpień cyfry 1 w kazdym numerze
    {wystap[i]=0;
    for(j=0;j<9;j++)
    if(tabcyf[i][j]==1)
    wystap[i]++;}
    for(i=0;i<(n);i++) //liczenie wszystkich numerow z 4 jedynkami
    if(wystap[i]>=4)
    h++;
    zapis<<"\n e) "<<h<<"\n";
    
    h=0;
    int tabcyf2[1000][9];
    for(i=0;i<(n);i++)  //robienie kopii tablicy cyfr
    for(j=0;j<9;j++)
    tabcyf2[i][j]=tabcyf[i][j];
    int k=0,b=0;
    for(i=0;i<(n);i++)
    for(k=0;k<8;k++)
    for(j=0;j<8;j++)
    if(tabcyf2[i][j]>tabcyf2[i][j+1]) //sortowanie cyfr kazdego numeru
    {b=tabcyf2[i][j];
    tabcyf2[i][j]=tabcyf2[i][j+1];
    tabcyf2[i][j+1]=b;}
    
    for(i=0;i<(n);i++)
    {if(tabcyf[i][8]==2) //liczenie numerów o podanych warunkach
    if(tabcyf2[i][4]%3==0)
    h++;}
    zapis<<"\n f) "<<h<<"\n";
    
    int z[1000];
    int p[1000];
    b=0;
    for(i=0;i<1000;i++)
    {z[i]=0;
    wystap[i]=0;}
    for(i=0;i<(n);i++)  //liczenie połaczen kazdego numeru
    for(j=0;j<1000;j++)
    if(tabtel[j]==tabtel3[i])
    z[i]++;
    for(i=0;i<(n);i++) //jezeli numer polaczyl sie wiecej niz 2 razy
    if(z[i]>=2)        //jest on zapisywany tak jak i jego pozycja 
    {wystap[b]=tabtel3[i];
    p[b]=i;
    b++;}
    zapis<<"\n g) ";  //zapisanie wsyzstkich numerow z dwomai lub wiecej poł.
    for(i=0;i<b;i++)  //oraz konkretnej liczby tych polaczen
    zapis<<"\n "<<wystap[i]<<" - "<<z[p[i]]<<"\n";
    
    zapis.close();
    
    getchar();
    cin.ignore();
    return 0;    
}
    
Pobierz plik tekstowy
Administrator WJL
PHP&SQL coded by NOVA-IT