Liczba przypadków do rozważenia

0

tesc zadania:

Dla danych dwóch liczb naturalnych a i b, wyznaczyć ostatnią cyfrę liczby ab.

Zadanie
Napisz program, który:

wczyta ze standardowego wejścia: podstawę a oraz wykładnik b,
wyznaczy ostatnią cyfrę liczby ab,
wypisze wynik na standardowe wyjście.

Wejście
W pierwszej linii wejścia znajduje się jedna liczba całkowia D (1≤D≤10), oznaczjąca liczbę przypadków do rozważenia. Opis każdego przypadku podany jest w jednym wierszu, zawierającym dwie liczby naturalne a i b oddzielone pojedynczym odstępem (spacją), takie, że (1 ≤ a,b ≤ 1 000 000 000).

Wyjście
Dla każdego przypadku z wejścia Twój program powinien wypisać (w osobnej linii dla każdego przypadku z wejścia) cyfrę jedności liczby ab zapisanej dziesiętnie.

Przykład
Dla danych wejściowych:

2
2 3
3 3

poprawną odpowiedzią jest:

8
7

I chce zapytac jak ogarnac to z ta pierwsza linia, jesli uzytkownik podaje 2 to dwa obliczenia, jesli 3 to 3, i nie wiem, zmienna do pierwszej linii ma byc tablica czy jak zrobic zeby uzytkownik mogl sobie wybrac w 1 linji ilosc dzialan ?

zamiana znacznika <code> na <quote> i dodanie znaczników <code class="c"> - @furious programming

0

naucz sie podstaw programowania, poczytaj forum SPOJa http://pl.spoj.com/forum/
potem zacznij od http://pl.spoj.com/problems/PTEST/ i http://pl.spoj.com/problems/RNO_DOD/
powodzenia!

0

...

for (int n=0; n<ilosc; n++)//no może pętla? i w niej wczytywanie i obliczenia? albo if'ami :P 
0

@Niikelion - a no w sumie ta ;d

0

ale mam problem z tym co podal/a katelex, mianowicie:

#include <stdlib.h>
#include <stdio.h>

int main(void){

  int a=0,b=0,c=0,i=0;

  printf("; ");scanf("%i", &a);
  for(i=0;i<a;++i){
    printf("; ");scanf("%i", &b);
    for(i=0;i<b;++i){
      scanf("%i", &c);
      c+=c;
    }
    printf("%i", c);

  return 0;
}

nie dziala, nie wiem dlaczego

0

Bo ten kod który napisałeś nie ma sensu? o_O
Wypisujesz jakieś średniki z d**y, a potem sumujesz i wczytujesz dane do tej samej zmiennej. Geniusz.

0

Zawodem ? Nie wiem nigdy nie myslalem o tym jako o zawodzie, btw wiem ze nie ma sensu dlatego tu sie skierowalem bo nie wiem jak go wyprostowac

0

@Spartan, gdyby admin tak nie ganil za przeklenstwa na forum to powiedzialbym ci jakie jest twoje hobby, ale kulturalnie ujac to to chyba czepianie sie mnie, daj se spokoj.

2

@_user wez sprobuj pomyslec samodzielnie nad rozwiazaniem, z pewnoscia taki sposob da ci wiecej satysfakcji niz posluzenie sie gotowcem. bawiac sie SPOJem w sposob ktory proponujesz marnujesz tylko czas swoj i innych

0

Wiem ze gdzies widzialem na forum podobne rozwiazanie do mojego dlatego nie wiem dlaaczego nie dziala, no siedzialem myslalem nie wiem co zrobic no to chyba spoko napisac na forum.

0
_user napisał(a):
for(i=0;i<b;++i){
  scanf("%i", &c);
  c+=c;
}

nie dziala, nie wiem dlaczego

Działa dokładnie tak jak napisałeś: wczytuje liczbę (c), dodaje ją do samej siebie (czyli c+=c) i powtarza to jeszcze b-1 razy.
Problem jest w tym, że nie o to Ci chodziło. Musisz dodać jeszcze jedną zmienną (np. s), i do niej dodawać pobraną liczbę c. Oczywiście tuż przed pętlą powinieneś ją zerować (s=0)

0

nie tam, calym tym kodem mozna sie podetrzec, na spokojnie inny musze wymyslic.

3

@_user skoro nie wiesz czemu nie dziala to mozesz a) zrozumiec krok po kroku co robi twoj program b) rozpisac to na kartce c) uzyc debuggera
jesli po zrobieniu a), b) i c) wszystko wyglada ok, ale nie dziala, pisz na forum opisujac ze szczegolami swoje obserwacje

0

Masakra... to wszystko nie ma sensu... wczytujesz coś, potem to do siebie dodajesz a lepiej można tak:

 c*=2; 

a potem zmieniasz tą zmienną więc to c+=c;

 moża wywalić i nie rozumiem co to ma do całego zadania... lepiej usiądź sobie i na spokojnie zobacz co masz zrobić a potem to koduj bo to nie ma sensu... wiedza programistyczna ci się nie przyda jak nie będziesz wiedział jak zrobić zadania...
0

Idzie mi calkiem niezle ale nie wiem jak zrobic zeby sumowal liczby ktore uzytkownik podaje po spacji ? Zawsze jak podaje po spacji to bierze tylko ta ktora byla pierwsza i po enterze dopiero musze nastepne podawac, co zrobic zeby w jednej linii mozna bylo podac wszystkie i zeby wylapal kazda kolejna na nastepny element tablicy ?

0

jakie sumowanie? Ty nie masz robić sumowania. Każda linijka jest niezależna. To ma wyglądać tak (to jest zadanie, które ma być automatycznie oceniane, wiec wypisujesz jedynie to o co cię proszą, zero dodatkowej dekoracji):

#include <stdlib.h>
#include <stdio.h>
 
int potegaModulo(int a, int b, int modulo = 10);

int main(void){
    int i,n,a,b;
 
    scanf("%d", &n)
    for(i=0;i<n;++i){
        scanf("%d %d", &a, &b);
        printf("%d\n", potegaModulo(a, b));
    }
    return 0;
}

z potegaModulo pomęcz się już sam, bo to jest cały cymes tego zadania.

0

Ale po pierwsze to ja nie robie tego potegowania tylko sumowanie ktore podala katalex, po drugie ja tam nic nie wpisuje, bo sie tam nie rejestruje, bo niestety rejestracja na spoj, dokladnie ochrona przeciw botom uzywa nie-wolnego java skryptu(pare rzeczy tutaj tez, przez co pare razy nieopatrznie dalem "lapke w gore" czy pisnelo mi sie komentarza), a szkoda, bo chetnie zamieszczalbym tam rozwiazania... a zadanie ktore robie to: http://pl.spoj.com/problems/RNO_DOD/ <-- zrobilem tylko ze tutaj wymaga zeby w jednej linii bylo umieszczone pare liczb naraz, ale nie wiem jak to zrobic bo przy zwyklej petli for musze naciskac enter po kazdej liczbie zeby ja wczytalo, a chcialbym zeby uzytkownik w jednej linii mogl podac np 4 liczby i zeby zostaly zsumowane, jak moge to zrobic ?

0

@_user gadasz jakieś bzdury. Nie ma znaczenia czy wpiszesz kilka liczb i dasz enter czy będziesz dawał enter po każdej, dla programu to żadna różnica bo ma w buforze klawiatury to samo-> liczba biały_znak liczba biały_znak liczba biały_znak ...

0

Nie no, naprawde, mam bufor wejscia i podaje 1 2 3 4 5 6 7 8 i z tego bierze tylko 1.Ja ogolnie chce zeby te kolejne liczby zapisywaly sie do kolejnych elementow tablicy.Petla wyglada tak:

for(int i=0;i<n;++i){
      printf("; ");
      scanf("%i", &tab[i][i]);
      while(scanf("%c", &c) &&c!='\n') {}
      suma+=tab[i][i];
0

to jak wybrac dobrze ?

0
_user napisał(a):

Ale po pierwsze to ja nie robie tego potegowania tylko sumowanie ktore podala katalex, po drugie ja tam nic nie wpisuje, bo sie tam nie rejestruje, bo niestety rejestracja na spoj, dokladnie ochrona przeciw botom uzywa nie-wolnego java skryptu(pare rzeczy tutaj tez, przez co pare razy nieopatrznie dalem "lapke w gore" czy pisnelo mi sie komentarza), a szkoda, bo chetnie zamieszczalbym tam rozwiazania...

po pierwsze katelx a nie katelex, po drugie o czym ty w ogole gadasz z tym 'nie-wolnym java skryptem' i niemoznosci zamieszczania rozwiazan. rozumiem ze sobie zarty robisz z forumowiczow ktorzy proboja ci pomoc. dlaczego nie zastosowales sie do punktow a) b) c) ktore ci wczesniej napisalam?

0

katalex nie robie sobie zartow poczytaj o tym ;) I nie mowie o zadnej "niemoznosci" tylko ze rejestracja wymaga jego uzycia, moze da sie to obejsc ale naciska na to wiec sie ne rejestruje. Zastosowalem sie, skonczylem kod !!ale nie wiem jak zrobic zeby pobieralo z jednej linii liczby to pytam !

0
_user napisał(a):

katalex nie robie sobie zartow poczytaj o tym ;)
ok, doucze sie, nabede troche oglady i tu wroce

0

Spoczko, ale kurde nie o tym jest mowa, nie o javie tylko o tym jak moj program moze pobrac w jednej linii pare liczb i zapisac je kolejno pod nastepne elementy tablicy, powie ktos ? A ty kaczuś nie mecz tak tych kropek bo ci wyleca ;d

0

@_user o_O
http://ideone.com/FRH6lM
U ciebie pewnie to nie działa przez tą idiotyczną pętę z czytaniem znaków aż trafisz na \n

0

@Shalom
ohh coz za faux pas... xd Dalem ta petle bo wczesniej po wczytaniu liczby gdy wracalo znowu do scanf to omijalo to i program sie konczyl i dalem to do czyszczenia bufora(nie wiem nawet po co skoro nie chcialem sie chronic przez znakami ani literami) ale teraz ok, problem byl marginesowy ^^ dzieki !

@katelx
Tak jest ale nie kazda jest tutaj nie-wolna,nie mowilem o calej javie oczywiscie, ale skoro uzywa i tej i tej to na wszelki wypadek na ta strone wylaczylem calkowicie.


#include <stdio.h>
#include <stdlib.h>

int main(void){

  char c=0;
  int t=0,n=0;
  int suma=0;
  int tab[t][n];
  printf("Liczba testow: ");
  scanf("%i", &t);
  for(int i=0;i<t;++i){
    printf("Liczba do zsumowania: ");
    scanf("%i", &n);
    printf("Podaj liczby: \n");
    printf("; ");
    for(int i=0;i<n;++i){
      scanf("%i", &tab[i][i]);
      suma+=tab[i][i];
     }
    printf("%i\n", suma);
    suma=0;
  }
  return 0;
}
0

Kod ma trochę błędów:

  1. linia 6: nie używasz nigdzie zmiennej c - do usunięcia.
  2. linia 9: musisz sobie powtórzyć deklarację (statycznych) tablic - w tym przypadku tworzysz dwuwymiarową tablicę liczb całkowitych o wymiarach 0x0 (czyli nie posiadająca żadnych elementów). Rozmiar w takim przypadku jest stały, zmiana zmiannych t oraz n nic nie zmieni. W tym miejscu spokojnie wystarczy zwykła zmienna typu int.
  3. linia 10: ja bym nie wyświtlał takich komuniktów, tylko zastosował samokomentujący się kod, ale tę uwagę spokojnie możesz zignorować.
  4. linia 16: nadal nie wiem w jakim celu jest ten średnik.
  5. linia 18 i 19 - jeżeli zastosujesz się do punktu 9, to ten fragment będzie ok.
  6. linia 22: ja bym to przerzucił na sam początek pętli, niemniej nie wpływa to na działanie programu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1