Ĺadny brzuch
Witam. Czy byłby ktoś w stanie napisać mi kilka programów w języku C. Oczywiście się odwdzięcze. Zależy mi bardzo na czasie...
3113. Kalkulator z pamięcią Kod zadania: KCCALC Napisz program, który działa jak prosty kalkulator z pamięcią obsługujący pięć operacji: dodawanie, odejmowanie, mnożenie, dzielenie i obliczanie reszty z dzielenia liczb całkowitych. Przyjmujemy, że nasz kalkulator ma w pamięci 10 rejestrów o numerach 0 - 9 oraz że wszystkie rejestry zawierają na początku zera. Wejście Na wejście programu podana zostanie pewna liczba zestawów danych (co najwyżej 10.000). Każdy z zestawów ma postać: o a1 a2 gdzie o jest jednoznakowym symbolem operacji do wykonania (+, -, *, /, % i z), a a1 i a2 argumentami tej operacji. Argumenty są albo liczbami całkowitymi (z zakresu od -1.000.000.000 do 1.000.000.000) albo napisami postaci r[i], gdzie i jest liczbą z zakresu 0 - 9. Poszczególne zestawy zostaną rozdzielone znakiem nowej linii. Wyjście Na wyjściu programu ma się pojawić ciąg liczb będących rezultatem wykonania pojawiających się na wejściu poleceń. Poszczególne liczby należy rozdzielić znakami nowej linii. To, co należy wykonać, zależy od symbolu operacji. Symbole +, -, *, / i % nakazują wykonanie odpowiednio dodawania, odejmowania, mnożenia, dzielenia i obliczenia reszty z dzielenia liczb będących argumentami operacji. Jeżeli argumentem nie jest liczba, a napis postaci r[i], to przed wykonaniem operacji należy zastąpić go bieżącą wartością rejestru o numerze i. Symbol z nakazuje zapis wartości podanej jako drugi argument w rejestrze o numerze podanym jako pierwszy argument (po wykonaniu tej operacji nie trzeba nic wyświetlać; można założyć, że argumenty operacji z są liczbami całkowitymi). Uwaga! Przyjmujemy, że wynikiem dzielenia oraz resztą z dzielenia przez 0 jest NaN. Przykład Wejście: z 1 2 z 2 2 + 1 5 * r[2] 6 / r[1] r[0] + 7 r[9] - 0 4 % 5 -6 Wyjście: 6 12 NaN 7 -4 5 Komentarz do ostatniego wyniku: reszta z dzielenia musi być nieujemna (przypomnienie: liczby q i r są odpowiednio ilorazem i resztą z dzielenia a przez b wtedy i tylko wtedy, gdy a = q*b + r i 0 <= r < |b|), więc użycie operatora % dostępnego m.in. w C do obliczenia wyniku może prowadzić do nieprawidłowego wyniku (5 % -6 daje w C wynik -1).
5085. Kalkulator ułamków Kod zadania: KCRATSUM Napisz program, który będzie dodawać, odejmować, mnożyć i dzielić ułamki zwykłe. Wejście Na wejście programu podana zostanie pewna ilość (co najwyżej 10.000) zestawów danych. Każdy z zestawów ma postać a/b op c/d gdzie a, b, c i d to liczby całkowite z zakresu 1-1.000.000, a op jest jednym ze znaków +, -, * lub /. Pomiędzy znakiem op a otaczającymi go liczbami znajduje się spacja. Poszczególne zestawy zostaną od siebie oddzielone znakiem nowej linii. Wyjście Dla każdego z wczytanych z wejścia zestawów należy wykonać operację op na ułamkach zwykłych a/b i c/d. Wynik należy wypisać w postaci: p/q gdzie p i q to licznik i mianownik wyniku w postaci nieskracalnej (q>0). Poszczególne wyniki należy oddzielić od siebie znakiem nowej linii. Przykład Wejście: 3/4 + 7/8 12/6 - 8/12 1/2 + 1/2 6/8 - 16/3 Wyjście: 13/8 4/3 1/1 -55/12
3181. Różnica i suma dużych liczb Kod zadania: KCSUMDIF Napisz program, który wyznacza róźnicę oraz sumę podanych liczb naturalnych. Wejście Na wejście programu podana zostanie pewna ilość zestawów danych (co najwyżej 1000). Każdy zestaw będzie się składać z dwóch liczb naturalnych rozdzielonych spacją. Poszczególne zestawy zostaną rozdzielone znakiem nowej linii. Przyjmujemy, że żadna z liczb nie ma więcej niż 1000 cyfr. Wyjście Dla każdego z wczytanych z wejścia zestawów należy wyznaczyć różnicę oraz sumę liczb, które w skład tego zestawu wchodzą. Poszczególne wyniki należy rozdzielić znakiem nowej linii. Przykład Wejście: 100 200 6001 10 700 100 Wyjście: -100 300 5991 6011 600 800
3182. Reszta z dzielenia dużych liczb Kod zadania: KCMODULO Napisz program, który wyznacza resztę z dzielenia podanych liczb naturalnych. Wejście Na wejście programu podana zostanie pewna ilość zestawów danych (co najwyżej 1000). Każdy zestaw będzie się składać z dwóch liczb naturalnych rozdzielonych spacją. Poszczególne zestawy zostaną rozdzielone znakiem nowej linii. Przyjmujemy, że żadna z liczb nie ma więcej niż 1000 cyfr. Wyjście Dla każdego z wczytanych z wejścia zestawów należy wyznaczyć resztę z dzielenia liczb, które w skład tego zestawu wchodzą (dzielimy zawsze pierwszą z liczb przez drugą). Poszczególne wyniki należy rozdzielić znakiem nowej linii. Uwaga! Można założyć, że dane wejściowe nie zawierają polecenia dzielenia przez 0. Przykład Wejście: 100 200 6001 10 700 100 Wyjście: 100 1 0
3183. Najczęściej występujący element Kod zadania: KCQSORT Napisz program, który wyznacza najczęściej występujące elementy danego ciągu. Wejście Na wejście programu podana zostanie pewna liczba zestawów danych (co najwyżej 1000). Każdy z zestawów ma postać: n x1 x2 ⌠xn gdzie n jest liczbą naturalną (z zakresu 1-1000), po której następuje n liczb całkowitych x1 x2 ⌠xn (z zakresu od -1000 do 1000). Poszczególne liczby w zestawie zostaną rozdzielone spacją, a poszczególne zestawy znakiem nowej linii. Wyjście Dla każdego z wczytanych z wejścia zestawów należy wyznaczyć elementy, które w ciągu x1 x2 ⌠xn występują najczęściej. Następnie należy je wydrukować w kolejności od najmniejszego do największego, rozdzielając poszczególne liczby spacją. Wyniki dla poszczególnych zestawów należy rozdzielić znakiem nowej linii. Przykład Wejście: 5 1 3 11 1 7 6 2 4 1 2 4 3 7 3 5 2 2 2 2 2 6 4 4 4 4 4 4 Wyjście: 1 2 4 2 4
Program Kalkulator Ułamków mam napisany ale spoj wywala przekroczony limit czasu tak samo z Zadaniem Najczęściej występujący element...
To jest forum. Tutaj nikt za Ciebie niczego nie napisze. Idź na stronę zlecenia.przez.net i tam umieść swoją ofertę. Tutaj możesz podać kod i napisać co jest z nim nie tak, a my Ci pomożemy w problemie.
#include<stdio.h> int main() { char znak; long long a,b,c,d,g,h,m,l,nwd; while(scanf("%lld/%lld %c %lld/%lld", &a, &b, &znak, &c, &d));{ switch (znak) { case '+': if(d==b){ l=a+c; m=d; } else{ l = ((a*d)+(c*b)); m = (b*d);} break; case '-': l = (a*d) - (c*b); m = b*d; break; case '*': l = a*c; m = b*d; break; case'/': l = a*d; m = b*c; break; } g=m; h=l; while(m) { nwd=m; m=l%m; l=nwd; } g = g/l; h = h/l; printf("%lld/%lld\n", h,g); } return 0; }
Kalkulator Ułamków:
Spoj wyświetla przekroczony limit czasu.. czyli że program najprawdopodobniej za długo sie wykonuje
#include <stdio.h> #include <stdlib.h> #include <string.h> struct hash { int wartosc; int klucz; }; int cmp (const void * a, const void * b) //funkcja porownujaca { return ( *(int*)a - *(int*)b ); } int cmp_rev_hash (const void * a, const void * b) //funkcja porownujaca { struct hash *l1, *l2; l1 = (struct hash*)a; l2 = (struct hash*)b; return l2->wartosc - l1->wartosc; } int main() { int i; int ilosc; int *tab; struct hash hs[2001]; for (i = -1000; i<1001; i++) { hs[i+1000].klucz = i; hs[i+1000].wartosc = 0; } while (scanf("%d", &ilosc)) { tab = (int*)malloc(ilosc * sizeof(int)); for (i=0; i<ilosc; i++) { scanf("%d", &tab[i]); } qsort(tab, ilosc, sizeof(int), cmp); // sortowanie quicksortem, cmp to wskaznik do funkcji porownawczej for (i = 0; i<ilosc; i++) { hs[tab[i]].wartosc++; } qsort(hs, 2001, sizeof(struct hash), cmp_rev_hash); for (i=0; i<2001; i++) { if(hs[i].wartosc==hs[i+1].wartosc) { printf("%d ", hs[i].klucz+1000); } else { printf("%d\n", hs[i].klucz+1000); break; } } /* Przygotowanie do nowej petli */ for (i = -1000; i<1001; i++) { hs[i+1000].wartosc = 0; hs[i+1000].klucz = i; } } }
Zadanie z najczęściej występującym elementem. Również spoj wywala przekroczony limit czasu
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
3113. Kalkulator z pamięcią Kod zadania: KCCALC Napisz program, który działa jak prosty kalkulator z pamięcią obsługujący pięć operacji: dodawanie, odejmowanie, mnożenie, dzielenie i obliczanie reszty z dzielenia liczb całkowitych. Przyjmujemy, że nasz kalkulator ma w pamięci 10 rejestrów o numerach 0 - 9 oraz że wszystkie rejestry zawierają na początku zera. Wejście Na wejście programu podana zostanie pewna liczba zestawów danych (co najwyżej 10.000). Każdy z zestawów ma postać: o a1 a2 gdzie o jest jednoznakowym symbolem operacji do wykonania (+, -, *, /, % i z), a a1 i a2 argumentami tej operacji. Argumenty są albo liczbami całkowitymi (z zakresu od -1.000.000.000 do 1.000.000.000) albo napisami postaci r[i], gdzie i jest liczbą z zakresu 0 - 9. Poszczególne zestawy zostaną rozdzielone znakiem nowej linii. Wyjście Na wyjściu programu ma się pojawić ciąg liczb będących rezultatem wykonania pojawiających się na wejściu poleceń. Poszczególne liczby należy rozdzielić znakami nowej linii. To, co należy wykonać, zależy od symbolu operacji. Symbole +, -, *, / i % nakazują wykonanie odpowiednio dodawania, odejmowania, mnożenia, dzielenia i obliczenia reszty z dzielenia liczb będących argumentami operacji. Jeżeli argumentem nie jest liczba, a napis postaci r[i], to przed wykonaniem operacji należy zastąpić go bieżącą wartością rejestru o numerze i. Symbol z nakazuje zapis wartości podanej jako drugi argument w rejestrze o numerze podanym jako pierwszy argument (po wykonaniu tej operacji nie trzeba nic wyświetlać; można założyć, że argumenty operacji z są liczbami całkowitymi). Uwaga! Przyjmujemy, że wynikiem dzielenia oraz resztą z dzielenia przez 0 jest NaN. Przykład Wejście: z 1 2 z 2 2 + 1 5 * r[2] 6 / r[1] r[0] + 7 r[9] - 0 4 % 5 -6 Wyjście: 6 12 NaN 7 -4 5 Komentarz do ostatniego wyniku: reszta z dzielenia musi być nieujemna (przypomnienie: liczby q i r są odpowiednio ilorazem i resztą z dzielenia a przez b wtedy i tylko wtedy, gdy a = q*b + r i 0 <= r < |b|), więc użycie operatora % dostępnego m.in. w C do obliczenia wyniku może prowadzić do nieprawidłowego wyniku (5 % -6 daje w C wynik -1).
5085. Kalkulator ułamków Kod zadania: KCRATSUM Napisz program, który będzie dodawać, odejmować, mnożyć i dzielić ułamki zwykłe. Wejście Na wejście programu podana zostanie pewna ilość (co najwyżej 10.000) zestawów danych. Każdy z zestawów ma postać a/b op c/d gdzie a, b, c i d to liczby całkowite z zakresu 1-1.000.000, a op jest jednym ze znaków +, -, * lub /. Pomiędzy znakiem op a otaczającymi go liczbami znajduje się spacja. Poszczególne zestawy zostaną od siebie oddzielone znakiem nowej linii. Wyjście Dla każdego z wczytanych z wejścia zestawów należy wykonać operację op na ułamkach zwykłych a/b i c/d. Wynik należy wypisać w postaci: p/q gdzie p i q to licznik i mianownik wyniku w postaci nieskracalnej (q>0). Poszczególne wyniki należy oddzielić od siebie znakiem nowej linii. Przykład Wejście: 3/4 + 7/8 12/6 - 8/12 1/2 + 1/2 6/8 - 16/3 Wyjście: 13/8 4/3 1/1 -55/12
3181. Różnica i suma dużych liczb Kod zadania: KCSUMDIF Napisz program, który wyznacza róźnicę oraz sumę podanych liczb naturalnych. Wejście Na wejście programu podana zostanie pewna ilość zestawów danych (co najwyżej 1000). Każdy zestaw będzie się składać z dwóch liczb naturalnych rozdzielonych spacją. Poszczególne zestawy zostaną rozdzielone znakiem nowej linii. Przyjmujemy, że żadna z liczb nie ma więcej niż 1000 cyfr. Wyjście Dla każdego z wczytanych z wejścia zestawów należy wyznaczyć różnicę oraz sumę liczb, które w skład tego zestawu wchodzą. Poszczególne wyniki należy rozdzielić znakiem nowej linii. Przykład Wejście: 100 200 6001 10 700 100 Wyjście: -100 300 5991 6011 600 800
3182. Reszta z dzielenia dużych liczb Kod zadania: KCMODULO Napisz program, który wyznacza resztę z dzielenia podanych liczb naturalnych. Wejście Na wejście programu podana zostanie pewna ilość zestawów danych (co najwyżej 1000). Każdy zestaw będzie się składać z dwóch liczb naturalnych rozdzielonych spacją. Poszczególne zestawy zostaną rozdzielone znakiem nowej linii. Przyjmujemy, że żadna z liczb nie ma więcej niż 1000 cyfr. Wyjście Dla każdego z wczytanych z wejścia zestawów należy wyznaczyć resztę z dzielenia liczb, które w skład tego zestawu wchodzą (dzielimy zawsze pierwszą z liczb przez drugą). Poszczególne wyniki należy rozdzielić znakiem nowej linii. Uwaga! Można założyć, że dane wejściowe nie zawierają polecenia dzielenia przez 0. Przykład Wejście: 100 200 6001 10 700 100 Wyjście: 100 1 0
3183. Najczęściej występujący element Kod zadania: KCQSORT Napisz program, który wyznacza najczęściej występujące elementy danego ciągu. Wejście Na wejście programu podana zostanie pewna liczba zestawów danych (co najwyżej 1000). Każdy z zestawów ma postać: n x1 x2 ⌠xn gdzie n jest liczbą naturalną (z zakresu 1-1000), po której następuje n liczb całkowitych x1 x2 ⌠xn (z zakresu od -1000 do 1000). Poszczególne liczby w zestawie zostaną rozdzielone spacją, a poszczególne zestawy znakiem nowej linii. Wyjście Dla każdego z wczytanych z wejścia zestawów należy wyznaczyć elementy, które w ciągu x1 x2 ⌠xn występują najczęściej. Następnie należy je wydrukować w kolejności od najmniejszego do największego, rozdzielając poszczególne liczby spacją. Wyniki dla poszczególnych zestawów należy rozdzielić znakiem nowej linii. Przykład Wejście: 5 1 3 11 1 7 6 2 4 1 2 4 3 7 3 5 2 2 2 2 2 6 4 4 4 4 4 4 Wyjście: 1 2 4 2 4
Program Kalkulator Ułamków mam napisany ale spoj wywala przekroczony limit czasu tak samo z Zadaniem Najczęściej występujący element...
To jest forum. Tutaj nikt za Ciebie niczego nie napisze. Idź na stronę zlecenia.przez.net i tam umieść swoją ofertę. Tutaj możesz podać kod i napisać co jest z nim nie tak, a my Ci pomożemy w problemie.
#include<stdio.h> int main() { char znak; long long a,b,c,d,g,h,m,l,nwd; while(scanf("%lld/%lld %c %lld/%lld", &a, &b, &znak, &c, &d));{ switch (znak) { case '+': if(d==b){ l=a+c; m=d; } else{ l = ((a*d)+(c*b)); m = (b*d);} break; case '-': l = (a*d) - (c*b); m = b*d; break; case '*': l = a*c; m = b*d; break; case'/': l = a*d; m = b*c; break; } g=m; h=l; while(m) { nwd=m; m=l%m; l=nwd; } g = g/l; h = h/l; printf("%lld/%lld\n", h,g); } return 0; }
Kalkulator Ułamków:
Spoj wyświetla przekroczony limit czasu.. czyli że program najprawdopodobniej za długo sie wykonuje
#include <stdio.h> #include <stdlib.h> #include <string.h> struct hash { int wartosc; int klucz; }; int cmp (const void * a, const void * b) //funkcja porownujaca { return ( *(int*)a - *(int*)b ); } int cmp_rev_hash (const void * a, const void * b) //funkcja porownujaca { struct hash *l1, *l2; l1 = (struct hash*)a; l2 = (struct hash*)b; return l2->wartosc - l1->wartosc; } int main() { int i; int ilosc; int *tab; struct hash hs[2001]; for (i = -1000; i<1001; i++) { hs[i+1000].klucz = i; hs[i+1000].wartosc = 0; } while (scanf("%d", &ilosc)) { tab = (int*)malloc(ilosc * sizeof(int)); for (i=0; i<ilosc; i++) { scanf("%d", &tab[i]); } qsort(tab, ilosc, sizeof(int), cmp); // sortowanie quicksortem, cmp to wskaznik do funkcji porownawczej for (i = 0; i<ilosc; i++) { hs[tab[i]].wartosc++; } qsort(hs, 2001, sizeof(struct hash), cmp_rev_hash); for (i=0; i<2001; i++) { if(hs[i].wartosc==hs[i+1].wartosc) { printf("%d ", hs[i].klucz+1000); } else { printf("%d\n", hs[i].klucz+1000); break; } } /* Przygotowanie do nowej petli */ for (i = -1000; i<1001; i++) { hs[i+1000].wartosc = 0; hs[i+1000].klucz = i; } } }
Zadanie z najczęściej występującym elementem. Również spoj wywala przekroczony limit czasu