Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    27

    [C] Contare lettere doppie in una stringa

    Ragazzi,
    nn riesco a risolvere il seguente problema: data una stringa dovevamo vedere quante lettere si ripetevano più di una volta e metterle in un'altra stringa tante volte quante si ripetevano, mentre in un'altra mettere le restanti lettere che nn si ripetevano più di una volta.
    Esempio: Babbo
    bbb (stringa 1) ao(stringa 2).
    Come lo si realizza in c????

  2. #2
    Comincia dal postare quello che hai scritto tu e poi ragioniamo...
    ...

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Potresti creare un array di interi in cui inserisci le occorrenze di tutti i caratteri che incontri man mano
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4
    suggerimento
    se
    codice:
    // se
      char * str = "babbo";
    /* allora
      str[0] ritorna 'b'
      str[1] ritorna 'a'
      e così via
    */

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    27

    questo è quello che avevo iniziato...

    char v[6];
    char l[6];
    register int i=0;
    int j=0;
    int k=0;



    printf("Inserire stringa:");
    gets(v);
    puts(v);

    //for(i=0; i<6; i++){
    if(v[i]==v[i++]){
    j=j+1;
    }

    l[6]=v[0];
    printf("%s",l);

    ma è sbagliato.... aiutatemi

  6. #6
    Utente di HTML.it L'avatar di LexLex
    Registrato dal
    May 2008
    Messaggi
    56
    se non è necessario che le lettere compaiano nell'ordine in cui si trovano nella parola potresti fare come ha detto Wolverine, altrimenti ti devi ingegnare diversamente secondo me..

    In realtà pensandoci un attimino ci sono tantissime soluzioni semplicissime, un pò meno semplici.. E' necessario capire anche che pretese hai nei tempi di esecuzione..

    Un'altra cosa, all'inizio parli di lettere doppie, io intendo come LL FF AA,(anche vedendo come hai impostato tu il problema) poi invece con Babbo, le tre B le metti tutte insieme..
    "Dai Diamanti non nasce niente, dal letame nascono i fiori.. " F.De Andrè

  7. #7
    Una possibile soluzione:

    codice:
    #include <stdio.h>
    #include <ctype.h>
    
    int main()
    {
    	int k, x, y;
    	char c;
    	char a[256];
    	char str[55] = "Babbo";
    	char str1[55];
    	char str2[55];
    
    	for ( k = 0; k < 256; k++ )
    		a[k] = 0;
    
    	k = 0;
    	while ( 1 )
    	{
    		if ( str[k] == '\0' )
    			break;
    		c = tolower(str[k]);
    		a[c] += 1;
    		++k;
    	}
    
    	x = y = 0;
    	for ( k = 0; k < 256; k++ )
    	{
    		if ( a[k] > 1 )
    		{
    			str1[x++] = k;
    		}
    		else if ( a[k] == 1 )
    		{
    			str2[y++] = k;
    		}
    	}
    	str1[x] = '\0';
    	str2[y] = '\0';
    
    	printf("\n\nCaratteri multipli: %s\n", str1);
    	printf("\n\nCaratteri singoli: %s\n", str2);
    
    	return 0;
    }
    Una migliore soluzione, dal punto di vista della velocità di esecuzione, potrebbe essere quella di utilizzare un alberio binario di ricerca.


  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    27

    Ciao il prog va bene

    è azzeccato, però mi potresti spiegare while(1) eil resto che c'è sotto ,perkè nn ci capisco
    ma si da un esercizio a fondamenti d'informatica a ingegneria informatica?

  9. #9
    Utente di HTML.it L'avatar di LexLex
    Registrato dal
    May 2008
    Messaggi
    56
    Per rimanere in linea con quello che ha scritto ar186
    bbb (stringa 1) ao(stringa 2).
    propongo questa modifica:
    codice:
    for ( k = 0; k < 256; k++ )
    {
       if ( a[k] > 1 )
       {	
          while (a[k] > 0) {
             str1[x++] = k;
             a[k]--;
          }
       }
       else if ( a[k] == 1 ) 
          str2[y++] = k;
    }
    Ma rimaniamo sempre nell'ipotesi che la posizione iniziale delle lettere non abbia importanza, altrimenti bisogna pensare diversamente..
    "Dai Diamanti non nasce niente, dal letame nascono i fiori.. " F.De Andrè

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    27

    mi potreste dare spiegazioni

    nn ci capisko niente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.