TEMA

PROBLEM 1216 - URI Fórum 1.0

URI Online Judge preguntado 8 years ago

URI Online Judge Fórum 1.0

MOD

Este tema fue resuelto y no puede recibir nuevas respuestas.

  • Unknown respondido 4 years ago

    Use .ignore() only between reading one line element ( cin >> ), and a whole line ( getline ) :

    ...
    while( getline( cin, nome ) ) {
       cin >> d;
       cin.ignore();
       ...
    }
    ...

    cin.ignore() will ignore the text line to its end, including the line break char ( '\n' ), which remains pending after you read a line element. Thus, when getline reads the next line, the reader will be located in the beginning of the next text line, not in the end of the previous one (where the number had been read).

  • Thalyson Nepomuceno respondido 6 years ago

    A explicação do erro pode ser visualizada por vc. Verifique em "Submissões", clicando no veredito dessa submissão.

  • Goku respondido 6 years ago

    Fiz ele agora, porque ta dando Wrong answer !?

    #include <bits/stdc++.h>
    
    using namespace std;
    int main () {
    int i;
    double Distancia, Media, cont;
    cout << fixed << setprecision(1);
    string nome;
    
    Distancia=0;
    Media=0;
    cont=0;
    
    for(i=1; i<=3; i++) {
    cin.get();
    getline(cin,nome);
    cin >> Distancia;
    Media = Media + Distancia;
    }
    cout << Media/3 << endl;
    return 0;
    }
  • Deyvison Oliveira respondido 6 years ago

    Obrigado, cara! Agora deu certo!

  • Lucas Feroldi Pereira respondido 4 years ago

    W.A 100% , BUT I DON´T KNOW WHY...COULD YOU HELP ME, PLEASE ??

    include<bits/stdc++.h>

    using namespace std; int main() { char nome[1000]; int cont=0; double d,s=0; while(cin.getline(nome,1000)) { cont++; cin.ignore(); cin>>d; s+=d; cin.ignore(); } cout<<fixed<<setprecision(2)<<s/cont<<endl;

    return 0;

    }

  • wormhole respondido 6 years ago

    PORQUE DÁ WRONG ANSWER PODEM ME AJUDAR ?????????????

    include include

    int main() { int a,i,b=0,j=0; double av; char ca, str[1000]; while(gets (str)) { scanf("%d", &a);

        ca = getchar();
        if(ca=='\n'){
            break;
        }
        b=b+a;
        j++;
    }
    av = (double)b/j;
    printf("%.2lf\n", av);
    return 0;

    }

  • Felipe c respondido 6 years ago

    estouu recebendo time limit deve ser o flush, alguem me da uma dica

    # include <stdio.h>
    # include <stdlib.h>
    
    int main()
    {
        int qtd = 0, distancia;
        char nome[30];
        double total = 0;
    
        while((scanf("%[^\n] %d", nome,&distancia)) != EOF)
        {
            fflush(stdin);
            total += (float)distancia;
            qtd++;
        }
        printf("%.1f\n",(total/(float)qtd));
    
        system("pause");
        return 0;
    }
  • 🧙The Install Wizard 🧙 respondido 6 years ago

    include é C++ ... caso esteja submetendo em C.
  • Renata Soares dos Santos respondido 6 years ago

    Alguém me explica o "compilation error" do código, por favor?

    #include <stdio.h>
    #include <iostream>
    
    int main (){
        char amigo[200];
        int distancia, soma=0, i=0;
        float media;
        while (scanf ("%s %d", amigo, &distancia)!=E0F){
            soma=soma+distancia;
            i=i+1;
        }
        printf ("%.1f\n", soma/i);
        return 0;
    }
  • Carlos Andres Sierra respondido 6 years ago

    Good day. I have a problem with this code, when I submit get "Wrong Answer". Somebody can help me? Thanks a lot. Goodbye.

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.text.DecimalFormat;
    
    public class Main
    {
        public static void main(String[] args)
        {
    
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter log = new BufferedWriter(new OutputStreamWriter(System.out));
            DecimalFormat df = new DecimalFormat("#0.0");   
    
            try
            {
                int acum = 0;
                int distance = 0;
                double media;
    
                while(br.readLine().length() > 0)
                {
                    distance += Integer.parseInt(br.readLine());
                    acum++;
                }
    
                media = (double)distance / (double)acum;
                log.write(df.format(media) + "\n");
                log.flush();
    
                br.close();
            }
            catch(Exception ex){}
        }
    }
  • Raul Sena Ferreira respondido 6 years ago

    Eu fiz os testes com as entradas exibidas no texto inicial do problema e tbm testei no toolkit, e todas as respostas bateram, porém ainda aparece como wrong answer. Alguém sabe dizer onde está o erro?

    #include <string>
    #include <iostream>
    #include <stdio.h>
    
    int main(int argc, char *argv[]){
        int cont, distancia;
        using namespace std;
        string nome;
        float media, distTotal=0.0;
    
        while (getline(cin, nome)){
            scanf("%d", &distancia);
            distTotal += distancia;
            cont++;
        }
    
        media = distTotal/cont;
        printf("%.1f\n", media);
    
    }

    Obrigado desde já pela ajuda.

  • Camila Tosta respondido 6 years ago

    Alguém sabe o que está errado??

    #include <stdio.h>
    #include <string.h>
    
    int main(){
        int d = 0;
        char nome[30], snome[30];
        double D = 0, S = 0, Q = 0;
    
        while(scanf("%s %s\n%d",nome,snome,&d) != EOF){
            Q = Q + 1;
            S = S + d;
            D = S/Q;
        }
    
        printf("%.1lf\n",D);
    
        return 0;
    }
  • Gerson Groth respondido 6 years ago

    De acordo com a especificação do problema:

  • Gerson Groth respondido 6 years ago

    Após ler um número inteiro, teu getline acaba 'pegando' a quebra de linha ('\n') que 'sobrou' da leitura anterior. Uma solução simples é usar um getchar() (precisa da biblioteca stdio.h) para ler esse '\n' que sobrou. Ficaria dessa forma:

    while(getline(cin,nome)){
            cin >> n;
            getchar();

    Tem outras formas de contornar isso, mas dessa forma também funciona...

  • Deyvison Oliveira respondido 6 years ago

    O que está errado? Alguém poderia me ajudar?

    Código removido! Problema aceito!
  • Unknown respondido 7 years ago

    Por que dá TIME LIMITED.... ja tentei varias formas... o que está errado????

    import java.io.*;
    
    public class Main{
        public static void main (String [] args) throws IOException{
            String nomes = "";
            int d=0,cont=0;
    
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader br = new BufferedReader(isr);
    
            nomes = br.readLine();
    
            while (br.readLine() != null){
                d=br.read();
                d+=d;
                cont++;
                nomes = br.readLine();
            }
            double media=d/cont;
            System.out.printf(".1f%d\n",media);
        }
    }
  • Cristhian Bonilha respondido 7 years ago

    É meio esquisito mesmo, mas há um bug quando se usa scanf e em seguida gets. Adicione o método getchar() após o scanf e antes do gets, e isso vai se resolver.

    while( gets() ) {
    scanf();
    getchar();
    ...
    }
  • Valdir Amorim respondido 7 years ago

    Olá, eu fiz os testes porém ele andou dando valores diferentes na saída. Eu coloquei os dois printf dentro do while pra testar se as entradas estavam corretas e ele adiciona cada teste 2 vezes antes de ir para o próximo, sendo que o último teste entra somente 1 vez (era pra todos entrarem somente 1 vez). Alguém sabe o que pode estar causando isso?

    Print do programa:

    https://imagizer.imageshack.us/v2/229x1 ... 5/dh50.jpg

    (note que ele adiciona 410 2 vezes, o mesmo pra 12, e o 60 faz 1 vez)

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    
    int main()
    {
        int cont=0;
        char nome[100];
        double media, dist, total=0;
    
        while (gets(nome))
        {
            scanf("%lf", &dist);
            total = total + dist;
            cont++;
            printf("%lf\n", total);
            printf("%d\n", cont);
        }
    
        media = total/cont;
    
        printf("%.1lf\n", media);
    
        return 0;
    }
  • Cristhian Bonilha respondido 7 years ago

    Your stop condition is that someone types ".", but this is not what is gonna happen, accordingly to the problem description.

    Try this way:

    while((name=br.readLine()) != null)
  • W.Saleh respondido 7 years ago

    AC, thx Bon